hab hier ein Problem. Und zwar will ich ein Protokoll für falsche Loginversuche erstellen. Schön und gut. Also den zugehörigen part habe ich in der "User.php" in include/includes/func gefunden. Dort ist der Abschnitt:
function user_auto_login_check () { $cn = session_und_cookie_name(); $dat = explode('=',$_COOKIE[$cn]); $id = $pw = 0; if (isset($dat[0])) { $id = escape($dat[0], 'integer'); } if (isset($dat[1])) { $pw = $dat[1]; } debug (' pw ' . $pw ); debug (' id ' . $id ); $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE id = ".$id); if (db_num_rows($erg) == 1) { debug ('benutzer gefunden'); $row = db_fetch_assoc($erg); if ($row['pass'] == $pw) { debug ('passwoerter stimmen'); debug ($row['name']); $_SESSION['authname'] = $row['name']; $_SESSION['authid'] = $row['id']; $_SESSION['authright'] = $row['recht']; $_SESSION['lastlogin'] = $row['llogin']; $_SESSION['authsess'] = $cn; db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'"); setcookie($cn, $row['id'].'='.$row['pass'], time() + 31104000, "/" ); return (true); } }
Da wird ja das Passwort verglichen. Nun habe ich zwischen die 2 letzten Klammern das Teil reingepackt, was mir den Eintrag in die Logdatei schreibt. Das sieht dann so aus:
function user_auto_login_check () { $cn = session_und_cookie_name(); $dat = explode('=',$_COOKIE[$cn]); $id = $pw = 0; if (isset($dat[0])) { $id = escape($dat[0], 'integer'); } if (isset($dat[1])) { $pw = $dat[1]; } debug (' pw ' . $pw ); debug (' id ' . $id ); $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE id = ".$id); if (db_num_rows($erg) == 1) { debug ('benutzer gefunden'); $row = db_fetch_assoc($erg); if ($row['pass'] == $pw) { debug ('passwoerter stimmen'); debug ($row['name']); $_SESSION['authname'] = $row['name']; $_SESSION['authid'] = $row['id']; $_SESSION['authright'] = $row['recht']; $_SESSION['lastlogin'] = $row['llogin']; $_SESSION['authsess'] = $cn; db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'"); setcookie($cn, $row['id'].'='.$row['pass'], time() + 31104000, "/" ); return (true); } else { $zeit=date("d.m.y-H:i:s"); $ip=$_SERVER['REMOTE_ADDR']; $datei=fopen("log.txt","a"); rewind($datei); fwrite($datei,$zeit." | ".$ip." | ".$_POST['name']." | ".$_POST['pass']."\n"); fclose($datei); } }
Aber, wenn ein Fehllogin da ist, wird der Teil einfach "überlesen". Das heisst es passiert nichts. Ich dachte erstmal es liegt daran, dass die log.txt nicht von alleine erstellt wird. Also habe ich eine log.txt in dem Ordner include/includes/func und eine im Hauptverzeichniss erstellt. Bei bleiben aber nach einem fehlerhaftem Loginversuch leer. Das Script ist zu Hause auf xampp installiert und ich benutze Windows, also kann es nicht an Dateirechten liegen. Jemand von euch eine Idee??
Gruß Xiaolong
verwendete ilchClan Version: 1.1
Ahja, es taucht keine Fehlermeldung oder so auf.
Zuletzt modifiziert von Xiaolong am 08.03.2008 - 15:32:59