Wiederkehr mit cookies Function: Was ist falsch Verzweifelt!

harderph

Erfahrenes Mitglied
Abend

ich habe versucht eine Wiederkehr funktion mit cookies zu basteln aber irgendie bekomm ich das nicht hin! Also gehn tut das bestimmt denn wenn ich die seite neulade hat er die Sessions auch in der datenbank gespeichert! Aber der user soll sofort eingelogt beleiben und nihct erst wenn die seite sich neu lädt!
Hier mal das script
PHP:
<?
if(isset($_COOKIE['Website']) && $_COOKIE['Website'])
     {
/// Hier cookie auslesen	 
	list($usernamecookie, $passwort) = explode(":::", $_COOKIE["Website"]);  
// wenn cookie auslesen dann mit Db vergleichen
$sql_cookie_con = "SELECT * 
    FROM user_account 
    WHERE username='".$usernamecookie."' AND passwort=MD5('".$passwort."') AND aktiviert='1'
    LIMIT 1";
// wenn wieder erkannt daten in session speichern 
	 $result_cookie= mysql_query($sql_cookie_con) or die(mysql_error()); 
    if ( mysql_num_rows($result_cookie)==1) 
    { 
        $user_cookie=mysql_fetch_array($result_cookie); 
         $_SESSION["user_id"] = $user_cookie["uid"];  
         $_SESSION["user_nickname"] = $user_cookie["username"];  
         $_SESSION["user_nachname"] = $user_cookie["name"];  
         $_SESSION["user_vorname"] = $user_cookie["nname"];
         $_SESSION["user_rechte"] = $user_cookie["rechte"];
     $user_cookie['uid']; 
	 $user_cookie['passwort'];
///Hier die daten aktualesieren wenn cookie erkannt wurde und daten übereinstimmen   
	$sql_cookie_con_set ="UPDATE user_account 
    SET usersession='".session_id()."', date=NOW(), ativstatus='online'
    WHERE uid=".$user_cookie['uid']."";
     mysql_query($sql_cookie_con_set);  
////Hier cookie neu setzen 	 
$cdata_cookie = $user_cookie["username"] . ":::" . $user_cookie['passwort'];
setcookie ("Website", $cdata_cookie, (time()+3600*24*30));  
  }
}
  ?>
Also das script soll includet werden in auf der website! Und wenn jemand was besseres hat immer her damit! He he
 
Ich würde Benutzername und Kennwort nicht in einem Cookie speichern. Stattdessen würde ich nur eine zufällige ID speichern, die dann (ähnlich der Sitzungs-ID) zur Identifizierung dient.
 
Ok werde ich mal annehmen aber es löst nicht mein problem!
Also wie gesagt:
wenn ich das erstemal auf dieses script gehe passiert nichts! Wenn ich aber dann refresh anwende dann sezt er mir die neuen daten in die datenbank aber wie kannich das machen das es ohne refresh in die datenbank speichert Also ich komme auf die seite und bin sofort eingelogt, so soll das ja funktionieren so wie hier!
 
Das liegt vermutlich an der Funktionsweise von Cookies. Denn die Anweisung des Servers zum Setzen von Cookies erfolgt erst mit seiner Antwort der Anfrage an den Client, so dass erst bei der nächsten Anfrage ein Cookie vom Client zum Server gesendet werden kann. Die $_COOKIE-Variable enthält also frühestens nach der zweiten Anfrage Werte.
 
kann man das lösen
Also cookies werden nur beim login gesetzt und weiter erstmal nicht behandelt! Es sei denn ich bekomme das "Bleib eingeloggt und komm in 3 stunden wieder"-Script zum funktionieren!
 
Hmm will ja nichts ändern ! Möchte eigendlich nur eine Wiederkehr funktion haben also user verlässt die seite und kommt z.b. in 2 tagen wieder ohne das er sich neu einloggen muss!
Auto-login eben halt!
 
Geh am besten wie folgt vor: Wenn der Benutzer authentifiziert wurde, also Benutzername und -kennwort gültig sind, setze den Cookie und leite direkt danach auf dieselbe (oder eine andere) Seite weiter. Damit muss der Benutzer diesen Schritt nicht selbst machen.
Ein schematisches Beispiel:
PHP:
if( auth($_POST['user'], $_POST['pass']) ) {
	// …
	setcookie('rem', /* … */, time()+8640*30);
	header('Location: http://example.com/…');
	exit;
}
 
Zurück