Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只有当管理员时才有访问权限_Php - Fatal编程技术网

Php 只有当管理员时才有访问权限

Php 只有当管理员时才有访问权限,php,Php,我想做一个网页,我可以注册的人。然而,普通人不能注册,只有管理员才能注册。我有它的工作,并作出了登录页面,但现在我需要阻止的人不是管理员从注册页面。我目前有: if (isset($_POST['isAdmin'])) { $userid = $_POST['isAdmin']; $query = "SELECT * FROM staff_users WHERE isAdmin = '$userid'"; $result = $dbc->query($query

我想做一个网页,我可以注册的人。然而,普通人不能注册,只有管理员才能注册。我有它的工作,并作出了登录页面,但现在我需要阻止的人不是管理员从注册页面。我目前有:

if (isset($_POST['isAdmin'])) {
    $userid = $_POST['isAdmin'];

    $query  = "SELECT * FROM staff_users WHERE isAdmin = '$userid'";
    $result = $dbc->query($query);
    {
        $_SESSION['isAdmin'] = $userid;
    }
}

if (!isset($_SESSION['userSession'])) {
    # redirect to the login page
    header('Location: https://mywebsite.com/staff');
    exit();
}

if ($_SESSION['isAdmin'] == 'N') {
    header('Location: https://mywebsite.com/isnotstaff');
    exit();
}
另外,我目前有一个这样的数据库设置
问题是人们仍然可以访问该页面;不管是“Y”还是“N”

你如何确保OP使用mysqli?你怎么知道他的模式?截图来自PHPmyadmin,所以我猜他在代码中的某个地方有mysqli连接。可能是PDO。你是对的。在这种情况下,替换$row\u cnt=$result->num\u rows;使用$row_cnt=$result->rowCount();为什么?<代码>$result本身就是一个结果<代码>如果($result){…就足够了。看起来你有一些东西倒过来了。例如,`$userid=$\u POST['isAdmin'];`这不应该设置为userid而不是
$\u POST['isAdmin']
布尔值吗?另外,
$\u SESSION['isAdmin']=$userid;
应该是
$\u SESSION['isAdmin']=$\u POST['isAdmin'];
正确吗?@tom keuper:对文本进行了编辑以提高可读性。如果我更改了意思,请随意。您很容易受到代码SQL注入的影响,您应该始终使用prepared语句1。没有提及您正在使用的驱动程序;mysqli或PDO?2。您在任何地方都不使用
$result
。3<代码>$\u会话['isAdmin']直接来自
$\u POST['isAdmin']
,而不是来自DBI我正在使用mysqli,我的db config文件在其他地方。
if(isset($_POST['isAdmin'])){
$userid     = $_POST['isAdmin'];

$query      = "SELECT * FROM staff_users WHERE userName = '$userid' AND isAdmin = 'Y'";
$result     = $dbc->query($query);
$row_cnt = $result->num_rows;
if ($row_cnt > 0){
    $_SESSION['isAdmin'] = $userid;
}
}

if(!isset($_SESSION['userSession'])){
    # redirect to the login page
    header('Location: https://mywebsite.com/staff');
    exit();
}

if ($_SESSION['isAdmin']=='N')
{
    header('Location: https://mywebsite.com/isnotstaff');
    exit();
}