tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
389
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    stega stega ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    178
    Hi,

    ich verzweifle grad an diesen doofen (und doch so brauchbaren) Sessions in php.
    Ich hatte eine funktionierende HP, die mir gehackt und zerstört wurde. Jetzt hab ich sie wieder auf Vordermann gebracht - mit Sicherheitsaspekten, die ich vorher nicht hatte.

    Nur will jetzt plötzlich mein session_start(); nicht mehr.

    Folgende Situation:
    Ich kann mich als admin einloggen mit einem Formular und wenn ich in der Datenbank vorhanden bin, dann zeigt er mir den Admin-Bereich an.

    Das Login-Verarbeitungsskript sieht u.a. so aus:
    PHP-Code:
    <?
    ob_start
    ();

    session_start(); 

    session_unset(login);
    session_unset(user);
    session_unset(id);
    session_unset(login_nr);
    session_unset(last_login); 

    include(
    "../inc.php");

    [.....]

     
    header("location:index.php");

    ob_end_flush();?>
    So, hier wird auch richtigerweise eine $_SESSION["login"] erzeugt. Hab ich mir anzeigen lassen.
    Dann kommt eben die index.php ausm Admin-Bereich, die aufgerufen wird und die sieht dann so aus am Anfang:

    PHP-Code:
    <?
    ob_start
    ();
    session_start();
    session_register(login);

    if (!isset(
    $_SESSION["login"]))
     {
      print 
    "<font class=\"f_text\">Not allowed!</font><br>
          <a href=\"../admin_login.php?id=0\">Go back</a>"
    ;
      exit;
     }

    [....]

    ob_end_flush();

    [.....]
    danach wird ein template aufgerufen und die Daten, die hier im Skirpt erzeugt werden angezeigt. Hatte bisher immer funktioniert, bis er mir jetzt dauernd den Fehler zeigt:

    Code :
    1
    
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ....\admin\index.php:1) in ....\admin\index.php on line 4

    Und egal, wasich tue - er kommt entweder immer wieder hervor - oder das System zeigt mir (trotz richtigem Passwort und Username) "Not allowed".

    Die $_SESSION["login"]-Variable wird auch nicht im "index.php" angezeigt - sie verschwindet irgendwo im Nirvana zwischen login.php (s.o.) und index.php (das untere).

    Wo liegt denn jetzt der Fehler?

    Vielen dank für die Hilfe - ich verzweifle grad an diesem session-Gedönse!

    liebe Grüße
     

  2. #2
    XSxecutor Tutorials.de Gastzugang
    Also laut der fehlermeldung gibt es meiner meinung nach in zeile 1 also in der funktion "ob_session()" eine Ausgabe. Es darf nichts vor der Session ausgegeben werden. Prüf das mal bitte, oder poste die Funktion "ob_session()".
     

  3. #3
    stega stega ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    178
    ob_session() ? das hab ich ja gar net? oder meinst du session_start() ?

    also das Ganze sieht so aus:
    ich habe das login-Formular in einer Template-Datei generiert und anzeigen lassen --> das schickt mir die Daten an login.php , dort steht dann
    PHP-Code:
    session_start(); 
    (s.o.) --> wenn alles klappt wird via
    PHP-Code:
    header(location.....) 
    auf die index.php des Admin-Bereiches weitergeleitet --> diese index.php (der untere Skriptauszug) prüft eben, ob die Session ordnungsgemäßig gesetzt wurde (damit man nicht einfach via URL die index-Datei aufrufen kann ohne sich anzumelden) und erzeugt _danach_ dann die Ausgabe mit dem Template.

    Und wo liegt jetzt der neu aufgekommene Fehler?
     

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Vor dem Aufruf von ob_start() wird bereits etwas ausgegeben, und seien es nur Leer- oder Zeilenumbruchzeichen. Die müssen weg.
     
    Markus Wulftange

  5. #5
    XSxecutor Tutorials.de Gastzugang
    Oh tut mir leid stega, hab mich mit dem funktionsnamen vertan, ich meinte ob_start.
     

  6. #6
    stega stega ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    178
    ok, hab die weggemacht - da war ein Leerzeichen vor dem <? für php.... oke - aber jetzt ist die
    PHP-Code:
    $_SESSION["login"
    noch immer bei der index.php weg und lässt sich nicht ausgeben.... sprich, es kommt auch immer das "Not Allowed" dann.

    Wisst ihr da noch Rat, wohin die verschwunden sein kann?

    danke für eure Hilfe!
     

  7. #7
    XSxecutor Tutorials.de Gastzugang
    es könnte daran liegen dass du session_register("login") schreiben musst, also das login als String.
     

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Vergiss mal session_register() und session_unregister() und arbeite lieber direkt mit der $_SESSION-Variable:
    PHP-Code:
    // statt session_register('foobar');
    $_SESSION['foobar'] = 'bla';
    // statt session_unregister('foobar');
    unset($_SESSION['foobar']); 
     
    Markus Wulftange

  9. #9
    stega stega ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    178
    juhu - es funktioniert wieder

    hab das session_register rausgemacht und jetzt klappts einfach mal so!

    danke für eure Hilfe - ist super, wie schnell das hier geht, nachdem ich das ganze Wochenende daran verzweifelt bin. Wieder was gelernt. Keine Leerzeichen vor ob_start() und kein register verwenden

    liebe grüße + schönen abend euch!
     

Ähnliche Themen

  1. Session SID geht bei include verloren
    Von abakuz im Forum PHP
    Antworten: 7
    Letzter Beitrag: 14.09.06, 19:51
  2. Antworten: 9
    Letzter Beitrag: 04.12.05, 15:16
  3. Antworten: 4
    Letzter Beitrag: 20.06.05, 18:43
  4. Session in Frame geht verloren
    Von gwittmann im Forum PHP
    Antworten: 1
    Letzter Beitrag: 25.05.05, 11:53
  5. Antworten: 10
    Letzter Beitrag: 04.01.05, 17:33