【发布时间】:2019-01-31 14:16:32
【问题描述】:
这个mysqli_fetch_array 没有返回值。检查它是否有 SQL 错误,没有找到。我猜是 PHP 或函数中的一些错误。请帮我改正。
$login = login($username, $password);
if ($login == false) {
$errors[] = "That username and password combination is incorrect";
}
// validate login
function login($username, $password){
$user_id = id_from_username($username);
echo $user_id;
$password = md5($password);
$username = sanitize($username);
$query = "SELECT `password` FROM `user_data` WHERE `username` = '$username' ";
$result = mysqli_query($conn,$query);
$row = mysqli_fetch_array($result, MYSQLI_NUM);
if ($row[0] == $password) {
echo "Login successful";
return $user_id;
}
else{
echo "Login not successful";
return false;
}
}
// user id from username
function id_from_username($username){
$username = sanitize($username);
$query = "SELECT `user_id` FROM `user_data` WHERE `username` = '$username'";
$result = mysqli_query($conn,$query);
$row = mysqli_fetch_array($result, MYSQLI_NUM);
return $row[0];
}
【问题讨论】:
-
您的代码极易受到 SQL 注入的攻击。看看准备好的陈述!也不要使用 MD5 散列用户密码!它不再安全了
-
另外,您是否查找过任何 php 错误?
-
id_from_username无法访问$conn+ @Isaac 所说的内容;p -
看起来更多的是代码不完整。
$conn必须在其他地方定义。请提供minimal reproducible example。这对每个人都有帮助。