我正在创建一个敏感页面,如果没有管理员,其他用户将无法访问。但是,当我尝试不经管理员访问该页面时,它将起作用!

所有用户都不是管理员,因此他们应该不能访问它。



但是该页面适合他们(非管理员)使用。

PHP代码:

function isAdmin(){

    $admin = mysql_query("SELECT `admin` FROM `users` WHERE `username` = '".$_SESSION['username']."'");

    if(!($admin)){


        echo 'You are not authorised';
        return false;

}else{
        return true;
}
}


敏感页面上的代码:

if(isAdmin()){
        $name = $_POST['name'];
        $description = $_POST['description'];
        $image = $_POST['image'];
        $amount = $_POST['amount'];

        $sql = "INSERT INTO `store`(`name`, `description`, `price`, `image`) VALUES ('$name','$description','$amount','$image')";
        mysql_query($sql);



        echo 'Done!';

}


当我将数据发布到此页面时,它会加载并回显Done!,但这不应是因为:


当前用户不是管理员
因此,isAdmin()返回false
然后if(isAdmin())收到false
因此,if语句不应执行。


是的,我拥有所有这些:


MySQL连接
PHP服务器具有正确的php.ini
正确配置我的users
Mysql admin表中的users列为int

最佳答案

您将if条件作为查询条件在语法上是否正确的基础。由于您的查询是有效的,因此它总是返回除false之外的其他值。

使用mysqli_num_rows代替。

if(msyql_num_rows($admin)<1)){


        echo 'You are not authorised';
        return false;

}else{
        return true;
}
}

09-25 18:17
查看更多