Diskuze: Error
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Problém je nejspíš zde:
$heslo .= $userPasswordField[2];
$heslo = '$SHA$' . $userPasswordField[2] . '$' . hash('sha256', $heslo);
Nejspíš explode nazafunguje na tvá data podle očekávání.
Z databáze taháš data podle nicku. Pokud ho tedy nevyplníš, dotaz na
databázi vrátí prázdný výsledek. Poté tento prázdný dotaz, respektive
prázdný string rozdělíš do pole, pomocí explode. Výsledné pole
samozřejmě nic neobsahuje, ale ty přesto po něm požaduješ index číslo
2.
Doporučuji ti to obalit do podmínky, která ověří, zda vůbec z databáze
bylo něco získáno.
$result = $mysqli->query("SELECT password FROM ".$db_tabulka." WHERE username = '".$nick."'");
if ($result->num_rows >= 1) {
// Databáze vrátila jeden nebo více řádků, uživatel existuje, normálně se pokračuje
switch ($hash) {
case 'SHA256':
$userPasswordField = explode('$', $row['password']);
$heslo = hash('sha256', $heslo);
$heslo .= $userPasswordField[2];
$heslo = '$SHA$' . $userPasswordField[2] . '$' . hash('sha256', $heslo);
$heslicko = $heslo === $row['password'];
break;
}
} else {
// Uživatel neexistuje, zvolíš si, co se stane.
}
Zobrazeno 4 zpráv z 4.