[PHP] Cookie setzen nach Login für autom. Login?
-
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?
-
user id als md5 ist schwachsinn .. aber vielleicht so blöd das keiner drauf kommt