Geben Sie Ihren Benutzernamen und Ihr Passwort ein, um sich an der Web-Site anzumelden:
 
Thema ohne neue Antworten

Login-Skript - Lastvisit immer falsch


Autor Nachricht
Verfasst am: 31.08.2005 [22:09]
FradeljukA
Themenersteller
Dabei seit: 05.03.2002
Beiträge: 66
Hallo,

ich will ein Login Script für meine schreiben, bekomme es aber nicht hin, das die Zeit des letzten Besuchs korrekt ausgegeben wird.

Da wäre hier mein Login-Script, wo ich Username und Passwort mit der DB abgleiche und ggf. die Cookies setze:

[b]login.php[/b:4b10295438]
[code:1:4b10295438]<?php
    # Session starten
    session_start ();
    
    # Datenbankverbindung herstellen
    require ("_dbconnect.php");
    
    # Logindaten überprüfen
    q_select = "SELECT * FROM members WHERE uname = '"._REQUEST[uname]."' AND passwd = password('"._REQUEST[passwd]."')";        
    res = mysql_query (q_select);
    
    # Username und Passwort richtig ?
    if (mysql_num_rows (res) > 0)
    {
 msv_id = session_id();
 cookie = md5(time());
 
 # Anmeldedaten in Cookie speichern
 setcookie("remember_user",_REQUEST["uname"],time()+10368000,"/");
 setcookie("remember_cookie",cookie,time()+10368000,"/");
    
 # Userdaten aktualisieren
 q_update = "UPDATE members SET cookie = '".cookie."', lastvisit = NOW(), ip = '"._SERVER['REMOTE_ADDR']."', session = '".msv_id."' WHERE uname = '"._REQUEST[uname]."' AND passwd = password('"._REQUEST[passwd]."')";
 res = mysql_query(q_update) OR DIE (mysql_error());
 
 header ("Location: HTTP_REFERER");
    }
    
    else
    {
  login_error = "Username oder Passwort falsch!";
  backtoroot="http://".SERVER_NAME."/index.php";
  header ("Location: backtoroot?fehler=".login_error);
    }
?>[/code:1:4b10295438]

Und mein Checkuser-Skript, welches ganz oben in der Index eingebunden ist und immer prüft, ob der User eingeloggt ist etc:

[b]checkuser.php[/b:4b10295438]
[code:1:4b10295438]<?php
    // Neue Session starten
    session_start ();
    
    // Datenbankverbindung herstellen
    require ("inc/_dbconnect.php");

    // Prüfen ob Cookies gesetzt wurde
    if (isset (_COOKIE["remember_user"]) && isset (_COOKIE["remember_cookie"])) {
    
 // Userdaten auslesen
 sql_select = "SELECT * FROM members WHERE uname = '"._COOKIE["remember_user"]."' AND cookie = '"._COOKIE[remember_cookie]."'";
 result_select = mysql_query(sql_select);

 // Cookie in Datenbank?
 if (mysql_num_rows(result_select) > 0) {

 userdaten = mysql_fetch_array(result_select);
 msv_id = session_id();
 cookie = md5(time());
 
 // Login Daten zuweisen
 _SESSION["user_id"] = userdaten["ID"];
 _SESSION["user_nachname"] = userdaten["NAME"];
 _SESSION["user_vorname"] = userdaten["VNAME"];
 _SESSION["user_nickname"] = userdaten["UNAME"];
 _SESSION["session_id"] = userdaten["SESSION"];
 _SESSION["user_isadmin"] = userdaten["ADMIN"];
 _SESSION["user_lastvisit"] = userdaten["LASTVISIT"];
 
 // Cookies verlängern
 setcookie("remember_user",userdaten["UNAME"],time()+10368000,"/");
 setcookie("remember_cookie",cookie,time()+10368000,"/");

 // Userdaten aktualisieren
 sql_update = "UPDATE members SET COOKIE = '".cookie."', LASTVISIT = NOW(), SESSION = '".msv_id."', IP = '".REMOTE_ADDR."' WHERE UNAME = '".userdaten[UNAME]."' AND PASSWD = '".userdaten[PASSWD]."'";
 mysql_query(sql_update);

 }
    
    }
    

?>[/code:1:4b10295438]

Meine datetime-Spalte in der Datenbank sieht so aus:

Feld+Typ+Null+Standard
LASTVISIT+datetime+Ja+0000-00-00 00:00:00

Wenn ich nach dem Einloggen mit dem Formular einen Break setze (in dem Fall das Auslesen der Userdaten im checkuser.php auskommentieren)

[code:1:4b10295438]#sql_select = "SELECT * FROM members WHERE uname = '"._COOKIE["remember_user"]."' AND cookie = '"._COOKIE[remember_cookie]."'";
#result_select = mysql_query(sql_select);[/code:1:4b10295438]

wird in die Datenbank der korrekte Zeitwert geschrieben:

2005-08-31 21:57:35

Tue ich das nicht, und die checkuser.php greift unmittelbar nach dem Login, wir der Wert mit:

0000-00-00 00:00:00

überschrieben.

Bei der Ausgabe auf der Startseite mit Umwandlung durch date() kommt dann das:

01.01.1970 01:33:25 Uhr

raus.... http://www.sachen-fuer-webmaster.de/community/forum/style_emoticons/<#EMO_DIR#>/mad.gif

Ich bin echt schon voll verzweifelt, weil ich schon seit 3 oder 4 Wochen da dran sitze und einfach den Fehler nicht finden kann! Ich hoffe einer von Euch kann mir helfen!

Danke im Vorraus...
Verfasst am: 01.09.2005 [19:38]
schaelle
Dabei seit: 12.12.2004
Beiträge: 204
Es gibt eine Seite, da brauchst du das alles gar nicht http://www.sachen-fuer-webmaster.de/community/forum/style_emoticons/<#EMO_DIR#>/rolleyes.gif
<a rel='nofollow' href='outbound.php?url=http://www.accessprotect.com/' target='_blank'>Accessprotect</a>
Verfasst am: 02.09.2005 [09:48]
christian
Dabei seit: 21.11.2004
Beiträge: 509
@ Schaelle: Es geht nicht um den Login an und für sich, sondern um die Mitteilung an den User nach dem Motto: "Ciao und herzlich willkommen, Du warst am 11.11.2001 zu letzen mal hier". DAS funkt nicht. Einen Login erstellen ist relativ einfach, zumal Du in jeder Scriptsammlung so etwas findest oder, wenn Du Webspace auf einem Apache-server hast, .htaccess benutzen kannst.

Falls Du eine gute Website kennst, trag sie ein bei http://www.yomada.net. Damit auch andere davon profitieren können.
Verfasst am: 02.09.2005 [21:17]
schaelle
Dabei seit: 12.12.2004
Beiträge: 204
Oh, da hab ich wohl was falsch verstanden.

Aber auf SFW gibts ein Script mit Cookies dafür.

Habe glaube mal so was gesehen
Verfasst am: 03.09.2005 [15:47]
FradeljukA
Themenersteller
Dabei seit: 05.03.2002
Beiträge: 66
Genau DAS ist mein Problem. Login, Logout, Cookies alles funktioniert, nur die Zeit des letzten Login ist immer falsch....;(

Hat denn keiner ein Idee, was ich falsch mache???
Verfasst am: 04.09.2005 [19:22]
schaelle
Dabei seit: 12.12.2004
Beiträge: 204
nö tut mir leid aber ich kenn mich da leider nicht so gut aus..........