Ho una pagina di login al mi sito, sto cercando di venire a capo delproblema in quanto nonostante inserisca username corretto ma password sbagliata, miappare l'avviso che i dati sono sbagliati ma i llogin me lo fa lo stesso. Questa è la pagina di login
Il problema dove sta? Metto in sessione username e password, cripto la password interrogo il db, verifico che ci siano i dati e li confronto con quelli che ho preso dal form, se coincidono do l'ok altrimenti no. Ma al momento anche inserendo na password diversa il login me lo fa comunque. Chi mi aiuta a capire dove sbaglio?
PHP:
$_SESSION['username'] = $mysqli->real_escape_string(trim($_POST['username']));
$_SESSION['password'] = $mysqli->real_escape_string(trim($_POST['password']));
if (($_SESSION['username'] == "") OR ($_SESSION['password'] == "")) {
echo "Inserisci il tuo username e la password. <br />";
echo "<meta http-equiv='Refresh' content='2; URL=login3a.php?azione=login'>";
} else if ($_SESSION['username'] == "") {
echo "Inserisci il tuo username. <br />";
echo "<meta http-equiv='Refresh' content='2; URL=login3a.php?azione=login'>";
} else {
//Cripto la password con sha1
$password_crypt = sha1($_SESSION['password']);
//Eseguo l'interrogazione al DB
//if($stmt = $mysqli->prepare("SELECT * FROM utenti WHERE username= ?, password_crypt= ? ")){
if($result = $mysqli->query("SELECT * FROM utenti")){
//Controllo i dati provenienti dall'interrogazione del DB
if ($result->num_rows == 1) { //Se nel db trovo utente e password proseguo
while ($row = $result->fetch_assoc())
{
if(($row['username'] == $_SESSION['username']) && ($row['password_crypt'] == $password_crypt)){
//Il risultato è sotto forma di array associativo quindi soltanto NOMI senza NUMERI
echo '
<fieldset class="login_out">
<legend>Complimenti</legend>
<img class="img_login" src="images/complimenti.jpg" alt=""/>
<span>Ben tornato '.$_SESSION['username'].',<p> il login è stato effettuato</p> con successo2!</span>
</fieldset>
' ;
echo "<meta http-equiv='Refresh' content= '3; URL=Newindex.php'>";
} else {
echo '
<fieldset class="login_out">
<legend>Errore</legend>
<img class="img_logout" src="images/error_1.png" alt=""/>
<span>Username e/o password errati. Riprova</span>
</fieldset>' ;
echo "<meta http-equiv='Refresh' content= '5; URL=login3a.php?azione=login'>";
}
}
} else {
echo '
<fieldset class="login_out">
<legend>Errore</legend>
<img class="img_login" src="images/error_1.png" alt=""/>
<span>Username e/o password errati. Riprova1</span>
</fieldset>' ;
echo "<meta http-equiv='Refresh' content= '5; URL=login3a.php?azione=login'>";
} $result->close();
} else {
// return FALSE;
echo '<div id="errore"><p><h3>Probabilmente qualcosa è andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
ad inserire i dati, oppure <a href="form.php"> Registrati</a>, è gratis!
Grazie dallo staff Biblionet</h3></p></div>';
echo "<meta http-equiv='Refresh' content='3; URL=Newindex.php'>";
}
}
} else {
if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){
//session_destroy();
$_SESSION=array();
echo ' <fieldset class="login_out">
<legend>Arrivederci</legend>
<img class="img_logout" src="images/a presto.jpg" alt=""/>
<span>Torna presto a trovarci,<p> ci mancherai.</p></span>
</fieldset>';
echo "<meta http-equiv='Refresh' content='5; URL=Newindex.php'>";
}
Il problema dove sta? Metto in sessione username e password, cripto la password interrogo il db, verifico che ci siano i dati e li confronto con quelli che ho preso dal form, se coincidono do l'ok altrimenti no. Ma al momento anche inserendo na password diversa il login me lo fa comunque. Chi mi aiuta a capire dove sbaglio?