我有3种用户[admin,student,instructor],我想阻止每个用户访问每个页面。例如,当为学生开始会话时,学生不能访问管理页面或教师,也不能访问其他用户。 这是我申请的代码
@session_start();
if(!$_SESSION['user']){
header("Location: HTTP/1.1 404 File Not Found", 404);
exit();
}
但是如果会话尚未启动,此代码将阻止用户不访问该页面。
此外,我将此应用到我的管理页面,因为管理员用户是固定用户,所以它可以正常运行。
@session_start();
if((!$_SESSION['user']) or ($_SESSION['user']!='admin'))
{
header("Location: HTTP/1.1 404 File Not Found", 404);
exit();
}
我看到了一些答案,但没有帮助解决我的问题。请帮帮我。
答案 0 :(得分:1)
我认为应该是最好的,如果你创建了一个单独的PHP文件,承担了将用户发送到用户级别的正确目的地的任务,这将反过来呈现重定向到404 page
毫无意义。
为此,我会编写您的PHP代码,如下所示:
<?php
session_start();
if (isset($_SESSION["user"])) {
switch ($_SESSION["user"]) {
case "user":
// redirect to the "user" page
case "instructor":
// redirect to the "instructor" page
case "admin":
// redirect to the "admin" page
}
}
?>
这样做,您将确保每个用户始终登陆到用户级别的正确页面,您无需将用户重定向到丑陋的404页面。
答案 1 :(得分:0)
我建议您编写一个简单的函数,如果它们尚未登录 - 将它们显示为登录表单,如果它们已登录但是它们没有足够的权限,请告诉它们并将它们转发回去他们访问的上一页或主页。
<?php
session_start();
if (!isLoggedIn())
logonForm();
else if ($_SESSION["user"] != "admin")
{
echo "You don't have the sufficient privileges to open this page.";
header( "refresh:5; url=index.php" );
}
else
display();
?>
您还可以将上述内容包装到一个函数中,以便将其包含在每个页面中。