Salve a tutti. Ho un problema che non riesco a risolvere. Ho dato un'occhiata nel forum, comprese le pillole, ma non riesco a capire dove sta il mio errore.
nella pagina login.php ho questo codice
Codice PHP:
<form name="login" action="check_user.php" method="post">
Username:
<INPUT name="nickname" type="text">
Password:
<INPUT name="password" type="password">
<INPUT type="submit" value="Login">
</form>
nella check_user.php invece ho:
Codice PHP:
<?php
function login_user($username, $pass) {
// To protect MySQL injection
$utente = stripslashes($username);
$password = stripslashes($pass);
$utente = mysql_real_escape_string($username);
$password = mysql_real_escape_string($pass);
$conn = @mysqli_connect("localhost", "root", "", "shop_db");
if(mysqli_connect_errno()) {
$msg = sprintf("Errore nella connessione al db:
errno: %s
err: %s
", mysqli_connect_errno(), mysql_error());
die($msg);
}
$sql = sprintf("SELECT `password` FROM `users` WHERE nickname='%s'", $utente );
$risposta = mysqli_query($sql, $conn);
if(!$risposta) {
$message = 'Errore nella query: ' . mysql_error() . "
";
$message .= 'La query è: ' . $sql;
die($message);
}
$riga = mysql_fetch_array($risposta);
if($riga[0] != md5($password)) {
echo "Wrong Password
";
echo " query: " . $sql . "
";
echo "->" . $riga[0] . "<-";
} else {
echo "Utente e password corrette";
session_register("utente");
session_register("password");
header("location:login_success.php");
}
mysqli_close($conn);
@mysql_free_result($risposta);
}
login_user($_POST["nickname"], $_POST["password"]);
?>
nel database shop_db, ho una tabella "users" con 2 campi nickname e password. l'errore che ottengo è:
codice:
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\xampp\htdocs\sito_progetto\check_user.php on line 18
Errore nella query:
La query è: SELECT `password` FROM `users` WHERE nickname='admin'
credo il problema stia in $risposta = mysqli_query($sql, $conn);.
cosa ha di sbagliato la query? eseguita da phpMyadmin invece restituisce correttamente il risultato.