Autor Zpráva
Guardian of the Galaxy
Profil *
Robil som si podľa vášho návodu registráciu a prihlásenie na webe.
Môj kód vyzerá takto:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<?php
include "config.php";

if(isset($_POST['meno']) && isset($_POST['heslo']))
{
    $meno = mysql_real_escape_string($_POST['meno']);
    $heslo = mysql_real_escape_string($_POST['heslo']);
    mysql_query("INSERT INTO users(username, password) VALUES ('$meno', sha1('$heslo'))");
    
}
?>
<h1>REGISTRÁCIA</h1>
<form method="POST">
Meno: <input type="text" name="meno" maxlength="15">
<br>
<br>
Heslo: <input type="password" name="heslo">
<br>
<br>
<input type="submit" value="Registrovať">
</form>

<br>
<br>
<br>
<br>
<br>
<br>

<?php
if(isset($_POST['menol']) && isset($_POST['heslol']))
{
    $menol = mysql_real_escape_string($_POST['menol']);
    $heslol = mysql_real_escape_string($_POST['heslol']);

    $result = mysql_query("SELECT COUNT(*) FROM users WHERE username = '$menol' AND password = sha1('$heslol')");
    if(mysql_result($result, 0))
{
$_SESSION['username'] = $menol;
$_SESSION['last_login'] = Time();
echo "<script>alert('Prihlásenie bolo úspešne')</script>";
}else {
 echo "<script>alert('Prihlásenie bolo neúspešne')</script>";
}
}
?>
<h1>PRIHLÁSENIE</h1>
<form method="POST">
Meno: <input type="text" name="menol">
<br>
<br>
Heslo: <input type="password" name="heslol">
<br>
<br>
<input type="submit" value="Prihlásiť">
</form>
<br>
<br>
<br>
<br>
</body>
</html>

Pričom pri registrácií sa normálne zapíšu všetky údaje správne do databázy, prihlásenie vždy skončí neúspešne. Už si s tým vážne neviem dať rady, mohli by ste mi teda prosím nájsť kde mám chybu?


Ospravedlňujem sa zbytočne založenú tému, práve som nato prišiel. Heslo hashované funkciou sha1 má vždy 40 znakov, pričom moje heslo v databáze malo povolené maximálne množstvo znakov len 30 a tak bola v databáze uložená len časť hesla.
Joker
Profil
Guardian of the Galaxy:
Údaje v databázi jsou?

Když se místo provedení ten SELECT vypíše a pak provede v databázi, vrátí to správný řádek?
Když se udělá SELECT sha1(*heslo*), odpovídá výsledek uložené hodnotě ve sloupci?
Tomáš123
Profil
Guardian of the Galaxy:
Riadok 43 skús upraviť na:
if($result !== false)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: