Har ett litet login-script som cryptar lösenordet med MD5 å sedan jämför med nyligen inskrivna krypterade lösenet.
Problemet är det att min kod endast loggar in om man använder användarnamn och lösenordet på sista raden i filen.
Däri ligger problemet. HJÄLP!
// if tried to login, check
$username = "user";
$userpass = crypt("password",CRYPT_MD5);
$filen = "andupp.psw";
clearstatcache();
$passfile = fopen($filen, "rb") or print("Kunde inte granska om lösenordet var rätt.");
$passfile_cont = fread($passfile,filesize($filen));
fclose($passfile);
$lines = explode("\n", $passfile_cont);
foreach($lines as $line) {
list($usercomp,$passcomp) = explode(":",$line);
if($usercomp == $username && $passcomp == $userpass) {
// if match found, then exit loop
echo "$usercomp == $username && $passcomp == $userpass";
$auth = true;
break;
}
}
När du läser in från filen så ligger det lite skräpkod kvar. Skriv din foreach-loop så här:
foreach($lines as $line) {
list($usercomp,$passcomp) = explode(":",$line);
$passcomp = rtrim($passcomp);
if($usercomp == $username && $passcomp == $userpass) {
// if match found, then exit loop
echo "$usercomp == $username && $passcomp == $userpass";
$auth = true;
break;
}
}
Du kan dessutom spara lite kod genom att ersätta:
$passfile = fopen($filen, "rb") or print("Kunde inte granska om lösenordet var rätt.");
$passfile_cont = fread($passfile,filesize($filen));
fclose($passfile);
$lines = explode("\n", $passfile_cont);