-2

我想限制登录用户,使他们无法通过在浏览器搜索栏中输入确切的 url 来间接打开登录和登录页面。我想如果他们尝试访问受限页面,他们应该被重定向到 404.php。我也用过这个,但它不起作用

if(isset($_SESSION['user_id']) && ($obj->curPageName() == "sign_in.php")) { ?>

            <script type="text/javascript">
                location = "404.php";
            </script>           
<?php } ?>
4

1 回答 1

2

实际上,404 是针对找不到页面的,并不是为了阻止用户访问需要凭据的页面,而是在页面顶部使用session_start()并设置一个值为 false 的会话变量来启动会话。

$_SESSION['is_logged_in'] = false;

用户登录时,将bool值改为true

$_SESSION['is_logged_in'] = true;

现在在需要凭据才能访问的页面上。header()如果用户未登录,请使用条件 with 重定向用户

if(isset($_SESSION['is_logged_in']) && $_SESSION['is_logged_in'] == false) {
   header('Location: login.php');
   exit;
}

要寻找的东西:您正在使用 JS 进行重定向,这是非常脏的编码,如果用户禁用 JavaScript,重定向将失败..

添加:如果要设置自定义错误,可以将其保存在会话中,如果用户直接访问需要登录的页面,则抛出错误,并且您可以unsetvar抛出错误后,就像您正在尝试的页面一样访问需要您登录

于 2013-06-02T08:12:53.537 回答