通过在浏览器搜索栏中写入精确的URL来限制用户,以便登录用户不能间接打开sign_in和sign_up页面


Restricting user so that the logged-in user cannot open sign_in and sign_up page indirectly by writting exact URL into the browsers search bar?

我想限制登录用户,这样他们就不能通过在浏览器搜索栏中输入确切的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,就像您试图访问的页面需要您登录