Je viens de commencer à apprendre mysqli hier soir et j'ai actuellement un problème avec une fonction que j'ai créée. La fonction doit connecter l'utilisateur. Cependant, lorsque je tape un nom d'utilisateur existant avec le mot de passe authentique ou inventé, la page de connexion se recharge en affichant le message suivant $user_id
. Je ne sais pas ce qui ne va pas. Je n'avais pas ce problème lorsque j'avais mysql.
/**
* Returns FALSE, if no valid user found
* Returns user_id of matching user with $username and $password
*/
function login ($mysqli, $username, $password) {
// not required at all
// $user_id = user_id_from_username($mysqli, $username);
// initialize, in case we do not get a mysqli-statement
$userID = FALSE;
$password = md5($password);
$stmt = $mysqli->prepare(
"SELECT `user_id` "
. " FROM `users` "
. " WHERE ( `username` = ? ) "
. " AND ( `password` = ? ) "
);
if ( $stmt ) {
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($userID);
if ( TRUE !== $stmt->fetch()) {
$userID = FALSE;
}
}
$stmt->close();
return $userID;
}
Et voici quand j'appelle la fonction login dans la page de connexion. $mysqli
est la variable contenant la connexion à la base de données.
// Now, needs to check against FALSE to work [changed by @SteAp]
// var_dump( $login ); returns with int(1)
// and this is what I want, the integer 1
//Sends me to start.php but start.php does not recognize
//the variable $_SESSION['user_id']
if ( FALSE === ($login = login($mysqli, $username, $password)) ) {
$errors[] = 'That username/password combination is incorrect';
} else {
$_SESSION['user_id'] = $login;
header('Location: start.php');
exit();
}
if (empty($errors) === false) {
echo '<div>'. output_errors($errors) . '</div>';
}