我无法测试受限制的页面是否实际上正在执行它的工作。例如,用户需要先登录才能访问页面。在这个页面上,我把它放在顶部:
if(isset($_SESSION['userid'])!="")
{
header("Location: login.php");
}
我认为这应该做的是,如果用户没有登录,它会将它们重定向到login.php,在那里他们可以登录。但是,我不知道这是否有效。当我尝试在浏览器中测试它时,我可以访问该页面。我不知道这是因为我还在登录,或者它是否不起作用。我该如何正确测试?
答案 0 :(得分:1)
我假设您已经开始了您的会话,但如果没有,您需要每个人。单。页面。,需要会议。
session_start();
诀窍。
您的比较并不正确。通常的流程是运行isset() || empty()
检查,而不是检查isset()
是否与""
不等:
if(!isset($_SESSION['userid'])) { ...
由于isset()
返回布尔值(true
/ false
)而不是字符串(""
)
最后,即使重定向,您的脚本也会继续执行。如果用户未经过身份验证,则需要结束脚本的运行:
session_start(); // start session
if(!isset($_SESSION['userid']) || empty($_SESSION['userid'])) {
die(header("Location: login.php")); // ends script execution.
}