用于检查用户是否为admin的PHP函数

时间:2014-06-05 23:09:51

标签: php session mysqli

我需要一些花哨的代码来检查用户表中的用户是否将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成员表..我该怎么办?我应该使用其他方法吗?

1 个答案:

答案 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;
}