我有小问题!我目前有一个来自登录页面的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');
}
似乎我不能或语法错也许?有人能指出我正确的方向吗?
提前致谢!
答案 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;
}