如果isset userid等于1?

时间:2016-02-02 17:02:22

标签: php mysqli

我有小问题!我目前有一个来自登录页面的UserID号码,我不能做这样的事情吗?

这有效:

session_start();
if (isset($_SESSION["UserID"])){
}
    include('../includes/navAdmin.inc.php');
}
else {
    header('Location: Login.php');
}

但是我想做更像这样的事情来限制某些用户的链接等:

session_start();
if (isset($_SESSION["UserID"])){
}else if (isset($_SESSION["UserID"] === 1){ <---this one to give the "admin" the admin page etc
    include('../includes/navAdmin.inc.php');
}
else {
    header('Location: Login.php');
}

似乎我不能或语法错也许?有人能指出我正确的方向吗?

提前致谢!

2 个答案:

答案 0 :(得分:4)

您需要修改代码以检查其是否设置为等于1.

if (isset($_SESSION["UserID"]) && $_SESSION["UserID"] === 1)

而不是else if

如果未设置或等于1,则在此之后设置else条件。

另一方面,在标题后添加exit;。如果你有更多的代码,那就想继续执行。

根据手册:

<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>

旁注:thanksd在评论中发现/陈述。如果这是您的实际代码,那么这里有一个额外的支撑。

if (isset($_SESSION["UserID"])){
}
    include('../includes/navAdmin.inc.php');
} // Right there
else {
    header('Location: Login.php');
}

这会让你意外地结束文件通知,将错误报告设置为catch / display。

您可能打算这样做:

if (isset($_SESSION["UserID"])){
    include('../includes/navAdmin.inc.php');
}

else {
    header('Location: Login.php');
}

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

答案 1 :(得分:1)

写下您的情况如下: -

session_start();
if (isset($_SESSION["UserID"])){
    if($_SESSION["UserID"] === 1){
        include('../includes/navAdmin.inc.php'); die;
    }else{
         header('Location: Login.php'); die;
    }
}else{
    header('Location: Login.php'); die;
}