所以我试图检查用户是否被禁止使用mysqli查询但是它似乎总是返回用户被禁止。即使他们没有被禁止。
user_banned函数
function user_banned ($con, $username) {
$data = $username;
$username = sanitize($data, $con);
$username = $data;
mysqli_query($con, "SELECT `banned` FROM `users` WHERE `username` = '$username'");
return(mysqli_affected_rows($con) == 1) ? true : false;
}
我调用该函数的位置:
$username = $_POST['username'];
$password = $_POST['password'];
if (user_banned($con, $username) === true ) {
$errors[] = 'You are banned, contact an admin.';
}
我已经回复了$ username,这是正确的用户名,所以这不是问题。
TL; dr函数由于某种原因总是返回true。
答案 0 :(得分:3)
mysqli_affected_rows()
用于INSERT和UPDATE。你想要mysqli_num_rows()
。
如果恰好有超过1行,您当前的逻辑将返回false,因此这可能更有意义:
return(mysqli_affected_rows($con) != 0) ? true : false;
//or even
return (bool)mysqli_affected_rows($con);
另外,****是什么?它什么都没做。
$data = $username;
$username = sanitize($data, $con);
$username = $data;
答案 1 :(得分:1)
你没有检查禁止你只是选择一行的值,如果存在则返回true。您需要添加一个where子句来检查被禁用的值或在php中检查它并确定用户是否被禁止