[PHP] Cookie setzen nach Login für autom. Login?



  • flenders schrieb:

    Sowas macht man im Normalfall deswegen ganz zu Beginn in der Scriptausführung 🙄
    Du könntes aber über aktivieren von Output-Buffering erreichen, dass du an beliebiger Stelle header senden kannst

    Auf welchen Wert muss ich output_buffering stellen? 1 oder On?

    MfG SideWinder



  • Einfach am Anfang ob_start(); und am Ende dann ob_end_flush(); aufrufen 😉



  • Bringt mir OB nur etwas wenn ich den gesamten HTML-Code per echo ausgebe oder auch wenn ich ?>HTML-Code<?php habe?

    MfG SideWinder



  • Hilft dir auch dann, wenn du HTML Code außerhalb von PHP Blöcken ausgibst.



  • Okay also das sieht jetzt folgender Maßen aus:

    // index.php:
    include_once("./user.php"); // Hier ist die Userverwaltung drin
    
    ob_start();
    session_start();
    
    if(!is_object($curUser) && !isset($_COOKIES['SchoenerName']))
    {
        $curUser =& new user;
        $_SESSION['curUser'] = $curUser;
    }
    else if(!is_object($curUser) && isset($_COOKIES['SchoenerName']))
    {
         $curUser =& new User;
         $_SESSION['curUser'] = $curUser;
    
         $curUser->loginbyid($_COOKIES['SchoenerName']);
    }
        // Ausgaben und dann ob_end_flush() - wär aber auch implizit
    
    // inhalt.php - if-Bedingung page=login erfüllt:
    if($curUser->login($_POST['nickname'],$_POST['passwort']))
    {
        setcookie("SchoenerName","$curUser->user_id");       
    ?>
    <h1>Erfolgreich eingeloggt</h1>
    Klicke hier um zu deiner persönlichen Startseite zu gelangen: <a href="./index.php?page=<?php echo $curUser->user_startseite ?>" target="_self">Persönliche Startseite</a>.<br />
    <br />
    <br />
    <?php
    }
    else // Ausgabe wenn falscher Benu oder Pass
    

    Funktioniert aber leider trozdem nicht :(. Der richtige Text wird zwar ausgeben und der User ist auch eingeloggt (hab ich überprüft) aber wenn ich den Browser schließe und dann wieder dir Page besuche bin ich ausgeloggt :(.

    Cookies habe ich eingeschaltet!

    Kann das eventl. irgendwas mit der Lebensdauer zu tun haben?

    MfG SideWinder



  • Ja, du musst bei setcookie im 3. Parameter (expire) angeben, wie lange das Cookie leben soll.

    PHP-Doku schrieb:

    Ist der Parameter nicht gesetzt, verfällt das Cookie am Ende der Session (wenn der Browser geschlossen wird).



  • flenders schrieb:

    Ja, du musst bei setcookie im 3. Parameter (expire) angeben, wie lange das Cookie leben soll.

    PHP-Doku schrieb:

    Ist der Parameter nicht gesetzt, verfällt das Cookie am Ende der Session (wenn der Browser geschlossen wird).

    Okay Param3 ist jetzt auf time()+60*60*24*10 - 10 Tage. Doch es klappt immer noch nicht.

    Deswegen habe ich nun auch Param4 gesetzt: auf "/" - hat aber auch nichts gebracht.

    Das Cookie wird nicht einmal gesetzt. Gebe ich den Wert direkt danach mit $_COOKIES['SchoenerName'] aus wird nichts ausgegeben.

    Im Opera ist das Cookie allerdings zu finden. Bloß entweder ist die Übertragung falsch oder es wird nicht in $_COOKIES gespeichert.

    MfG SideWinder



  • Kannst du denn, wenn du den Browser nicht schließt auf der Folge-Seite auf das Cookie zugreifen?
    Falls nicht: kommst du in der Scriptausführung überhaupt zu setcookie und liefert die Funktion dann auch Erfolg zurück?

    Da du auch $_SESSION verwendest nehme ich an, dass bei dir PHP >= 4.1.0 läuft 🙄



  • flenders schrieb:

    Kannst du denn, wenn du den Browser nicht schließt auf der Folge-Seite auf das Cookie zugreifen?
    Falls nicht: kommst du in der Scriptausführung überhaupt zu setcookie und liefert die Funktion dann auch Erfolg zurück?

    Da du auch $_SESSION verwendest nehme ich an, dass bei dir PHP >= 4.1.0 läuft 🙄

    Ja in der Scriptausführung komme ich zu setcookie() da der richtige Text ausgegeben wird der in derselben if-Anweisung steckt

    Es läuft PHP 4.1.2.

    Ich werde nun probieren auf Folgeseiten darauf zuzugreifen ... mal sehen.

    MfG SideWinder



  • Nein ich kann auch auf Folgeseiten nicht auf das Cookie zugreifen. Der Opera hat das Cookie allerdings gespeichert!

    MfG SideWinder



  • Das Array heißt schon mal COOKIE und nicht COOKIES - bloß wars das auch nicht 😞

    MfG SideWinder



  • SideWinder schrieb:

    Das Array heißt schon mal COOKIE und nicht COOKIES - bloß wars das auch nicht 😞

    MfG SideWinder

    hast du deine cookies auch aktiviert im browser ? 🙂



  • Jup, steht schon weiter oben.

    Mache ich einen Schritt vor dem Abfragen folgendes:

    print_r($_COOKIE);

    ist das Cookie mit den richtigen Werten vorhanden. Aber isset($_COOKIE['SchoenerName']) ergibt immer false (siehe Anweisung oben).

    MfG SideWinder



  • Problem liegt offenbar in der loginbyid-Funktion, jetzt funktioniert der Rest. Danke vorerst - der Fehler in der loginbyid-Funktion sollte sich schnell finden lassen.

    BTW: Welches Kennzeichen würdet ihr im Cookie speichern, damit ich den User wiedererkenne? User-ID? Die kann er ja dann nach belieben anpassen?!

    MfG SideWinder



  • verschlüssel doch die user-id mit md5 oder ähnlichem...



  • Tobsen schrieb:

    verschlüssel doch die user-id mit md5 oder ähnlichem...

    die userid zu verschlüsseln macht nur sinn wenn es keine fortlaufende zahl ist die eh nur 1 oder 2 stellig ist 🙂 ich würd userid und md5(session_id) speichern ... ist dann unsicher aber so machens viele systeme afaik



  • 1ntrud0r schrieb:

    Tobsen schrieb:

    verschlüssel doch die user-id mit md5 oder ähnlichem...

    die userid zu verschlüsseln macht nur sinn wenn es keine fortlaufende zahl ist die eh nur 1 oder 2 stellig ist 🙂 ich würd userid und md5(session_id) speichern ... ist dann unsicher aber so machens viele systeme afaik

    Session ID? Die ist das nächste Mal ja gar nicht mehr gültig?!

    MfG SideWinder



  • hmm du speicherst dir die session doch in einer mysqldb oder ?? 🙄 🙄



  • 1ntrud0r schrieb:

    hmm du speicherst dir die session doch in einer mysqldb oder ?? 🙄 🙄

    Nope ich speichere bloß Userdaten. Das ich jedesmal die Session-ID mitspeichere ist imho sehr aufwendig - aber wenns anders nicht sicher ist.

    MfG SideWinder



  • Wie sieht denn bei dir eine User-ID aus? ist das ein md5?


Anmelden zum Antworten