Ciao a tutti, ho un database con le password hashate in whirlpool e vorrei creare una funzione di login, come faccio?
La mia versione di PHP è 5.3.3
Questa è la pagina login.php e come vedete ci ho provato ma senza successo.
Codice:
<?php
require("assets/php/db.php");
$invio = $_POST['submit'];
$username = $_POST['username'];
$password = $_POST['password'];
$pass = hash('whirpool', $_POST['password']);
function errore($testoerrore)
{
echo '<div style="padding:15px 15px;"><div id="toast-container">
<div class="toast-error">
<div class="toast-close-button"><a href="#">x</a></div>
<div class="toast-title">Errore:</div>
<p>'. $testoerrore .' </p>
</div>
</div>
</div>
</div>
</div>
</div></center>';
}
if($invio) //Se l'user preme invio
{
if($username && $password) //Se i campi non sono vuoti
{
$query = "
SELECT
AccountNome,
Password,
Premium,
CodiceA,
Lockato,
Bannato,
Pg1,
Pg2,
Pg3,
Pg4,
Pg5,
Pg1Creato,
Pg2Creato,
Pg3Creato,
Pg4Creato,
Pg5Creato,
LevAdmin
FROM LdAccount
WHERE AccountNome=:username
";
$query_dati = array(
':username' => $_POST['username']
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_dati);
}
catch(PDOException $ex)
{
die("Errore: " . $ex->getMessage()); // da cancellare
}
$login_ok = false; // Non ancora loggato
// Controllo delle password
$row = $stmt->fetch();
if($row) //Se ci sono account con quel nome
{
$db_password = $row['Password'];
if($pass == $db_password)
{
$login_ok = true; //La passowrd è corretta
}
else errore("Nome utente e password non coincidono.");
}
else errore("Non esiste un account con questo nome.");
//Se la passowrd è corretta logga
if($login_ok)
{
if($row['Bannato'] == 1)
{
errore("Account bannato.");
echo $row['Bannato'];
die();
}
else
{
unset($row['Password']);
$_SESSION['user'] = $row;
// Se l'user logga va all'index
header("Location: index.php");
}
}
}
}
?>