Archiv verlassen und diese Seite im Standarddesign anzeigen : Automatisches LogIn
Wie realisiere ich es, dass sobald ein User eine bestimmte Seite betritt, er automatisch eingeloggt wird (wie in jedem Forum üblich).
Dazu habe ich beim LogIn einfach Cookies gesetzt, Name und Passwort, was auch funktioniert.
Auf der Seite habe ich dann zuerst geprüft, ob eine Session für den User besteht, falls nicht wollte ich die Cookies einlesen und nach einer Überprüfung ob Name und Passwort richtig ist den User mit session_register wieder einloggen.
Wie mache ich das genau?:confused:
Komme mit den Cookies nicht zurecht.
Mein Problem ist eigentlich nur, dass ich die Infos aus dem Cookie nicht wieder ausgelesen bekomme.
Erwähne am Besten immer, was du schon versucht hast. Ich hab jetzt keine Ahnung, wobei ich dir helfen soll.
Auslesen idR. mit $HTTP_COOKIE_VARS
Das Setzen des Cockie beim normalen Login:
$zeit = time() + 86400*14;
setcookie ("JTVUsername", $username, $zeit);
setcookie ("JTVPwd", $passwort, $zeit);
Das Auslesen des Cookie:
session_start();
if ((!session_is_registered('username'))and(isset($HTTP_COOKIE_VARS["JTVUsername"])) and (isset($HTTP_COOKIE_VARS["JTVPwd"]))) {
include('config.inc.php');
$link = mysql_connect($sqlhost,$sqluser,$sqlpass);
mysql_select_db($database,$link);
$result = mysql_query("SELECT pwd,nickname FROM user WHERE nickname = '$HTTP_COOKIE_VARS["JTVUsername"]' and pwd = '$HTTP_COOKIE_VARS["JTVPwd"]' ",$link);
mysql_close($link);
if ($row = mysql_fetch_array($result)) {
header ("Location:verify.php?username=".$HTTP_COOKIE_VARS["JTVUsername"]."&passwort=".$HTTP_COOKIE_VARS["JTVPwd"]);
}
}
Das war mein Versuch! Nur das Auslesen funktioniert halt nicht. Die Variablenübergabe soll später natürlich über unsichtbare Inputfelder geschehen.
Da ich nicht so der Cookieliebhaber bin, hab ich da nicht DIE erfahrung.
Aber man kann mehrere Daten in ein Cookie speichern und dementsprechend solltest du bei der Abfrage nicht auf den Namen des Cookies verweisen, sondern auf dessen Inhalt. Ob das jetzt mit nem Array[1], [2], [3] geht, oder wie, hab ich jetzt nicht im Kopf. Das müsstest du mal nachlesen.
Es wid ja auch nur 1 Cockie erstellt mit beiden Infos drin!
Ähm, hast du nicht ein Cookie mit Namen "JTVUsername" und eins namens "JTVPwd" ???
Vielleicht noch mal zur Sicherheit ein Blick ins Manual: setcookie() (http://www.php3.de/manual/de/function.setcookie.php)
Das habe ich zuerst ja auch gedacht!
Als ich es dann wie oben ausprobiert habe, stellte sich heraus, dass ein Coockie mit beiden Infos drinnen erstellt wird.
Mein Problem hat sich wahrscheinlich auch erledigt, zumindest bekomme ich den Coockie jetzt doch ausgelesen.
Gruß
Hmm, das ist ja die Hauptsache.
Aber Poste bitte trotzdem nochmal den Code, das ich das nachvollziehen kann.
Die Infos für's Cookie werden wie oben gesetzt!
Oder meinst du den Code vom Einlesen?
So sieht mein Code beim Einlesen aus:
<?php
session_start();
if ((!session_is_registered('username'))and(isset($HTTP_COOKIE_VARS['JTVUsername'])) and (isset($HTTP_COOKIE_VARS['JTVPwd']))) {
include('config.inc.php');
$link = mysql_connect($sqlhost,$sqluser,$sqlpass);
mysql_select_db($database,$link);
$query = "SELECT pwd,nickname FROM user WHERE nickname = '$HTTP_COOKIE_VARS[JTVUsername]' and pwd = '$HTTP_COOKIE_VARS[JTVPwd]' ";
$result = mysql_query($query,$link);
mysql_close($link);
if ($row = mysql_fetch_array($result)) {
header ("Location:verify.php?username=".$HTTP_COOKIE_VARS['JTVUsername']."&passwort=".$HTTP_COOKIE_VARS['JTVPwd']); }
}
?>
Leider funktioniert nur die Weiterleitung! nicht, kann's mir aber nicht erklären. Findet jemand einen Fehler? Oder wie kann ich sonst die Variablen übergeben?
Grundsätzlich zu erwähnen: Welche Fehlermedung :teach:
Also, was bekommst du ausgegeben?
OK, hab mich vielleicht was falsch ausgedrückt! Es kommt keine Fehlermeldung, nur scheinbar wird die Weiterleitung nicht ausgeführt!
Die Coockieinfos sind aber richtig und eine printanweisung an dieser Stelle wird auch ausgeführt!
Daher muß die Weiterleitung falsch sein. Ich bekomme nämlich keine Rückmeldung von der verify.php! Habs gerade nochmal getestet, es liegt definitiv an der Weiterleitung!
Kommentier die Zeile mit dem Header mal auch und schreib statt dessen mal ein Echo:
echo "Location:verify.php?username=".$HTTP_COOKIE_VARS['JTVUsername']."&passwort=".$HTTP_COOKIE_VARS['JTVPwd'];
Ich sagte ja, das funktioniert!
Es muß an dem header Befehl liegen!
der Header vefehl ist aber korrekt!
Woran kann es denn sonst liegen?
Hab schon in dem verify.php mir nur die Variablen printen lassen, nur da passiert nichts! wenn ich die print-anweisung anstelle dem header schreibe funktionierts!
Hi
Jetzt funktioniert alles!!
Der Code fürs 'Einlesen' war falsch, hier die neue Version:
session_start();
if ((!session_is_registered('username'))and(isset($HTTP_COOKIE_VARS['JTVUsername'])) and (isset($HTTP_COOKIE_VARS['JTVPwd']))) {
include('config.inc.php');
$link = mysql_connect($sqlhost,$sqluser,$sqlpass);
mysql_select_db($database,$link);
$query = "SELECT pwd,nickname FROM user WHERE nickname = '$HTTP_COOKIE_VARS[JTVUsername]' and pwd = '$HTTP_COOKIE_VARS[JTVPwd]' ";
$result = mysql_query($query,$link);
mysql_close($link);
if ($row = mysql_fetch_array($result)) {
header ("Location:verify.php?username=".$HTTP_COOKIE_VARS['JTVUsername']."&passwort=".$HTTP_COOKIE_VARS['JTVPwd']);
}
}
Also im Wesentlichen nur paar " durch ' ersetzt.
Gruß
|
-
- |