Cookieabfrage dauert zu lange
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abfragen
angemeldete besucher
besucher
code
datum
einfaches beispiel
eingegebene klartext
ergebnis
flag
http
index
login
nachdenken
nachricht
speichern
test
testen
url
weiterleitung
-
Ich bin mit meinem Loginskript schon fast fertig, nurnoch 1% fehlt noch, und das bereitet mit echt Kopfschmerzen. Ein schönheitsfehler. Bei dem Login werden bei mir zwei Cookies gesendet, user & der md5 wert von pass.
Nur wenn die Nachricht raus is, dass man eingeloggt ist, wird die Navi rechts erst bei einem reload geladen.
Bei Lima-city funktioniert das doch auch?! Und es verwendet auch Cookies....
könnt ihr hier mal Testen, damit ihr es versteht... http://www.the-penguins.com/login.php
Username : Test
Passwort: test
Beitrag zuletzt geändert: 3.12.2009 17:08:03 von limabone -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Zeig mal deinen PHP-Code, nur dann können wir dir helfen.
LG cookies
Beitrag zuletzt geändert: 3.12.2009 17:58:45 von cookies -
Ich vermute, das liegt daran, dass Cookies erst beim nächsten Seitenaufruf gelesen werden können. Wenn also das Login erfolgt, wird erst später das Cookie gesetzt und erst nach erneutem Klick wieder abgerufen.
Du könntest folgendes machen:
1.) Bei Login prüfst Du die Daten und speicherst das Cookie
2.) Direkt nach dem Prüfen setzt Du ein Flag, dass der Besucher eingeloggt ist, so dass die erste Seite nach dem Login angezeigt wird.
3.) Bei Folgeseiten kannst Du dann das Cookie wieder abfragen
-
Naja, da liegt das Problem... Ich hab keine neue Seite nach dem Login, sondern nur die alte, aber mit anderen Includes...
ich habs schon mit einer
Weiterleitung versucht, die das fesnter einfach neu ladet, geht aber auch ned...<meta http-equiv="refresh" content="1; URL=javascript:history.back(0)">
Die Seite hat verdammt viele Includes, damit alles schön übersichtlich bleibt, also wäre der Quelltext ziemlich lang. Aber wenns nicht anders geht, gebe ich ihn selbstverständlich her. -
Mein Vorschlag ist, nach dem Login NICHT weiterzuleiten oder die Seite neuladen lassen, sondern einfach direkt den Inhalt zu parsen
also z.B. so: (in der index.php)
$eingeloggt = false; //ganz am Anfang Cookie Abfrage bei Folgeseiten if(isset($_COOKIE['user']) { // Datenbankabfrage für User passwort $ergebnis = mysql_query("SELECT pass FROM usertable WHERE user='".$_COOKIE['user']."'"); $sqlpass = mysql_result($ergebnis,0); if($_COOKIE['pass'] == $sqlpass) $eingeloggt = true; // Passwort md5 im Cookie und in DB gespeichert } // Wenn die Logindaten aus dem Formular übermittelt worden if($_POST['aktion'] == "login") { //Datenbankabfrage $ergebnis = mysql_query("SELECT pass FROM usertable WHERE user='".$_POST['user']."'"); $sqlpass = mysql_result($ergebnis,0); if(md5($_POST['pass']) == $sqlpass) $eingeloggt = true; @SetCookie ('pass',md5($_POST['pass']); @SetCookie('user',$_POST['user']); } //Anzeige, die angemeldete Besucher sehen sollen if($eingeloggt) { echo "blabla"; } else echo "bitte einloggen";
Ist jetzt natürlich nur ein einfaches Beispiel. Aber du musst nicht unbedingt nach dem Login die Seite laden. Ich habe in meiner index-Datei ein include für login in drin, dass in etwas so den LoginZustand prüft. Also entweder das Cookie ausliest oder aber bei Rücksendung des Loginformulars auf die POST Variable achtet und dann jeweils den Status mitteilt. Somit bist Du auch vor dem gesetzten Cookie schon eingeloggt.
EDIT: Habe mich mit den md5 Werten vertan. Ich würde die Passwörter immer verschlüsselt speichern (sowohl im Cookie als auch in der MySql DB). Bei der Abfrage muss dann das eingegebene Klartext Passwort mit md5 umgewandelt werden.
EDIT2: Vielleicht solltest Du mal über Sessions nachdenken und das Passwort dort speichern.
Beitrag zuletzt geändert: 4.12.2009 10:32:50 von rnitsche -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage