Doppelte Session vom Login Skript

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Doppelte Session vom Login Skript

    Hallo,

    folgender Sachverhalt. Ich wollte per Sessions ein Login Skript für einen Teil meiner Site realisieren. Leider benutzt schon mein CMS zur Administration ein solches Sessionbasiertes Login-Skript, wodurch es zu folgender Fehlermeldung kommt:

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

    Zur Erklärung: in der class.session.inc.php erfolgt bereits der Aufruf der Session des CMS:

    PHP-Code:
    if (isset($_COOKIE[session_name()])) {
                  
    setcookie(session_name(), ''time()-42000'/');
            }
        }
    }
    session_start();    //zeile 117
    /*
    echo "cookie:::<br>"; 
    __pr($_COOKIE);
    echo "session:::<br>"; 
    __pr($_SESSION);
    echo session_id()."<br>";
    */
    ?> 
    Ich brauch jetzt aber noch ne Session für nen Bereich der Site...Auszug aus der index.php:

    PHP-Code:
    ...
    include_once (
    'test/class.session.inc.php');
    .
    .
    .
    if(
    $pageid!=0){
        
    $pageid $pageid*1;
        
    $showpage $obj_pages->page_is_published($pageid); 
    }

    if(
    $pageid == 116 or $pageid == 100)
    {
        if(!
    $_SESSION['loggedIn']) 
        {
           
    header('Location: [url]http://www.testde[/url]' );
            exit();
        }
    }
    .
    .

    Wie gesagt, irgendwas beisst sich hier...wie kann ich das umgehen???

  • #2
    http://php-resource.de/forum/showthr...threadid=62965 gelesen?

    Kommentar


    • #3
      verwendest du die session des CMS. Damit ist der jeweilige Benützer bereits identifiziert und
      die sessiondaten funktionieren.

      speicherst deine Variabeln in $_SESSION['...'] ab mit einem CMS-fremden key.
      Du kannst für dich auch ein array oder objekt als ganzes eintragen.
      Wenn Dir deine eigene 'Session' verleidet ist, schreibst du unset($_SESSION['...']) .

      Kommentar


      • #4
        @penizillin :
        Die Fehlermeldung kenn ich schon zur genüge...allerdings ist meine jetzige FM ein bisschen anders, daher dachte ich, dass es sich nicht um irgendwelche Leerzeichen oder Ausgaben handelt...

        Ich sollte vielleicht nochmal sagen, dass ich eigentlich keinen Plan von PHP habe und es toll wäre, ein bisschen ausführlichere Anmerkungen zu bekommen

        @gleiwitz19:

        ich will ja eigentlich nicht die Session des CMS benutzen. Kann man eine 2.Session festlegen, die sich nicht mit der anderen ins Gehege kommt? Also, ich meine nicht nur unterschiedliche user/passes .

        was meinst du mit :
        Wenn Dir deine eigene 'Session' verleidet ist, schreibst du unset($_SESSION['...']) .
        ??

        Kommentar


        • #5
          Original geschrieben von coal16
          [Bich will ja eigentlich nicht die Session des CMS benutzen. Kann man eine 2.Session festlegen, die sich nicht mit der anderen ins Gehege kommt? [/B]
          Ich denke, im gleichen skript geht das nicht. Weil $_SESSION ist auf jedenfall dasselbe.

          Zudem machst Du wie alle anderen den Fehler, eine php-Session mit einer login/logout Session zu verwechseln. Eine php-Session dient nur dazu, den Browser zu identifizieren, und um Daten von einem Schritt zum nächsten zu behalten. Wenn ein skript zu Ende geht, werden die Daten für diesen Benützer gespeichert und die gleichen Daten sind am Anfang des nächsten Skripts wieder vorhanden für diesen Benützer.

          Eines dieser Daten ist dein $_SESSION['logged_in'] wahr/falsch , und damit machst Du deine login/logout-Session. Wenn Du die Variable nciht mjehr willst, schreibst Du unset(...), aber nicht session_destroy oder ähnliche Scheusslichkeiten.

          Kommentar


          • #6
            Ich sollte vielleicht nochmal sagen, dass ich eigentlich keinen Plan von PHP habe (...)
            Ahh, wie ich sowas liebe...

            Du kannst, wie meine vorredner schon schrieben, nicht 2 Session laufen lassen, da eine Session nunmal "eine Anwendung" eines Benutzers ist! Du musst irgendwie in diese Anwendung das "Eingeloggt sein" mit hineinbasteln und kannst beim logout auch nicht mit session_destroy die gesamte "Anwendung" zerstören, so, als würdest du durch den Logout seine Internetverbindung kappen und als neue Anwendung starten, wenn du verstehst, wie ich das mein!!!

            Ich hoffe, wenn du das in diesem Zusammenhang siehst, sollte dir der Begriff Session etwas besser verständlich sein!

            Kommentar

            Lädt...
            X