我需要一些花哨的代码来检查用户表中的用户是否将adm字段设置为1(true)..我尝试阅读其他帖子,如Check user status, and then, if everything is alright, check if admin; with PHP (mysql database)但我还没有能够理解/适应我的情况..
我有一个functions.php,其中存储了一些(哇)函数以使登录安全(加密,反暴力,新登录,登录检查),我试图制作一个adm_check函数:读入$ _SESSION找到id并传递,然后选择adm字段并返回true,如果它等于1 ..这是代码
function adm_check($mysqli) {
if(isset($_SESSION['user_id'], $_SESSION['username'])) {
$user_id = $_SESSION['user_id'];
$username = $_SESSION['username'];
$user_browser = $_SERVER['HTTP_USER_AGENT'];
if ($stmt = $mysqli->prepare("SELECT adm FROM members WHERE id = ? LIMIT 1")) {
$stmt->bind_param('i', $user_id);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows == 1) {
if($adm==1){
return true;
}
}
}
return false;
}
}
这个函数只返回false,即使用户正确设置了adm成员表..我该怎么办?我应该使用其他方法吗?
答案 0 :(得分:0)
你没有正确得到$ adm。您永远不会将其分配给查询中的任何内容。这是一个解决方案。
function adm_check($mysqli) {
if(isset($_SESSION['user_id'], $_SESSION['username'])) {
$user_id = $_SESSION['user_id'];
$username = $_SESSION['username'];
$user_browser = $_SERVER['HTTP_USER_AGENT'];
if ($stmt = $mysqli->prepare("SELECT adm FROM members WHERE id = ? LIMIT 1")) {
$stmt->bind_param('i', $user_id);
$stmt->execute();
$stmt->bind_result($adm);
$stmt->fetch();
if( $adm == 1 ) {
return true;
}
}
}
return false;
}