Login-Script
Jessica
- php
Hallo!
Ich habe ein kl. Problem bei meinem Login-Script (PHP). Über den Passwortgenerator wird ein neues Passwort generiert und überprüft, ob die über ein Formular ermittelte IP des Users schon in der Textdatei gespeichert ist. Falls nicht, soll ein Eintrag erfolgen. Leider wird aber immer ein neuer Eintrag vorgenommen. Was ist da falsch ?
Gruß Jessica
<?php
// Passwort generieren & in Textdatei schreiben
$ip = $HTTP_POST_VARS["ip"];
global $id_pass;
$buchstaben = array("A", "B", "C", "D", "E", "F", "G", "H", "I");
srand ((double) microtime() * 1000000);
$zahl1 = mt_rand(1,333); $zahl2 = mt_rand(1,333);
$zahl3 = mt_rand(1,9); $zahl4 = mt_rand(1,9);
$id = $buchstaben[$zahl3].$buchstaben[$zahl4].$zahl1.$zahl3.$buchstaben[$zahl4].$zahl2;
$id_pass = $id;
if ($id_pass != "") {
$ip_vorhanden = array();
$userdatei = fopen("passwort.txt", "r");
while (!feof($userdatei)) {
$zeile = fgets($userdatei, 500);
$userdata = explode ("|", $zeile);
array_push ($ip_vorhanden, $userdata[0]);
}
fclose($userdatei);
if (!array_search($ip, $ip_vorhanden)) {
$eintrag = "$ip | $id_pass";
$userdatei = fopen ("passwort.txt", "a");
fwrite($userdatei, "$eintrag\n");
fclose($userdatei);
} else {
Return;
}
}
?>
Hallo Jessica
<?php
if (!array_search($ip, $ip_vorhanden)) {
# if (array_search($ip, $ip_vorhanden)==false) {
$eintrag = "$ip | $id_pass";
$userdatei = fopen ("passwort.txt", "a");
fwrite($userdatei, "$eintrag\n");
fclose($userdatei);
} else {
Return;
}
}
?>
Gruß aus Berlin!
eddi
Hallo eddi,
das Problem bleibt leider trotzdem.
Wenn ich mit "if (array_search($ip, $ip_vorhanden)==false)"
überprüfe, ob die IP da ist, wird gar kein Eintrag mehr vorgenommen (auch wenn die IP noch fehlt!) und umgekehrt wird mit "if (array_search($ip, $ip_vorhanden)==true)" { $eingabe ... , immer ein neuer Eintrag vorgenommen.
Eine andere Idee voran es liegen könnte ?
Gruß Jessica
Hallo Jessica,
$userdata[0] ist immer die IP plus einen Leerzeichen also frage bitte auch danach in der Form:
if (array_search($ip.' ', $ip_vorhanden)==false)
eine bessere Möglichkeit schein mir bei array_push mit trim($userdata[0]) zu arbeiten und von vornherrein if (in_array($ip, $ip_vorhanden)) abzufragen
Gruß aus Berlin!
eddi
Hi,
$userdata[0] ist immer die IP plus einen Leerzeichen also frage bitte auch danach in der Form:
if (array_search($ip.' ', $ip_vorhanden)==false)
Das ist mir beim Debuggen auch aufgefallen. Am Besten die Leerzeichen durchgegend weg lassen oder eben trim($userdata) vor dem array_push machen.
Gruß
Danny
Hi,
warte ein paar Minuten, ich probiere das Script mal aus...
MfG
Danny