我想限制登录用户,这样他们就不能通过在浏览器搜索栏中输入确切的url来间接打开sign_in和sign_up页面。我希望如果他们试图访问受限制的页面,他们应该被重定向到404.php。我也用过这个,但它不工作
if(isset($_SESSION['user_id']) && ($obj->curPageName() == "sign_in.php")) { ?>
<script type="text/javascript">
location = "404.php";
</script>
<?php } ?>
实际上,404是为未找到的页面,而不是阻止用户访问需要凭据的页面,相反,在页面顶部使用session_start()
启动会话并设置会话变量值为false.
$_SESSION['is_logged_in'] = false;
用户登录时,将bool值更改为true
$_SESSION['is_logged_in'] = true;
现在进入页面,这需要凭据来访问..如果用户未登录
,则使用header()
条件重定向用户。if(isset($_SESSION['is_logged_in']) && $_SESSION['is_logged_in'] == false) {
header('Location: login.php');
exit;
}
注意事项:你正在使用JS重定向,这是非常脏的编码,如果用户禁用JavaScript,重定向将失败…
添加:如果您想设置自定义错误,您可以将其保存在会话中,如果用户直接访问需要登录的页面则抛出错误,并且您可以在抛出错误后unset
var
,就像您试图访问的页面需要您登录