我正在创建一个敏感页面,如果没有管理员,其他用户将无法访问。但是,当我尝试不经管理员访问该页面时,它将起作用!
所有用户都不是管理员,因此他们应该不能访问它。
但是该页面适合他们(非管理员)使用。
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;
}
}