【问题标题】:Restrict direct page access限制直接页面访问
【发布时间】:2011-10-15 13:42:54
【问题描述】:

为了保护我正在开发的网站的管理员区域,我制作了一个 index.php,其中包含

if (isset($_POST['password']) && isset($_POST['userName'])) {
        if($_POST['password']==$pass && $_POST['userName']==$username)
        {
            header( 'Location: admin.php' ) ;
        }

这将重定向到同一文件夹中名为 admin.php 的文件。问题是如果我写localhost/folder/admin.php,我可以访问这个文件。请告诉我如何限制对该页面的直接访问。访问它的唯一方法应该是在用户名和密码之后的 index.php 中。

【问题讨论】:

    标签: php redirect access-control


    【解决方案1】:

    您应该查看 PHP 会话。您可以在该重定向文件中设置会话变量“isLogged”,然后在 admin.php 中检查该会话变量是否已注册,如果没有则重定向到登录页面!

    session_start();
    if (isset($_POST['password']) && isset($_POST['userName'])) {
            if($_POST['password']==$pass && $_POST['userName']==$username)
            {
                header( 'Location: admin.php' ) ;
                $_SESSION['isLogged'] = true;
            }
    

    admin.php

    session_start();
    if(!$_SESSION['isLogged']) {
      header("location:login.php"); 
      die(); 
    }
    

    注意:session_start();必须在 $_SESSION 全局可用之前调用。

    【讨论】:

      【解决方案2】:

      设置一个会话变量并在每次有人访问 admin.php 时检查它

      <?php
        if (isset($_POST['password']) && isset($_POST['userName'])) {
            if ($_POST['password'] == $pass && $_POST['userName'] == $username) {
                if (!session_id())
                    session_start();
                $_SESSION['logon'] = true;
      
                header('Location: admin.php');
                die();
            }
      ?>
      

      和

      //admin.php 
      
      if (!session_id()) session_start();
      if (!$_SESSION['logon']){ 
          header("Location:index.php");
          die();
      }
      

      【讨论】:

        【解决方案3】:

        设置表示用户已成功登录的会话值,在您想要保护的每个页面上检查它,如果未设置该值,则重定向到登录。

        【讨论】:

          猜你喜欢
          • 2012-01-18
          • 2014-07-21
          • 1970-01-01
          • 1970-01-01
          • 2017-09-02
          • 2011-11-09
          • 2010-11-05
          • 2010-09-16
          • 2013-02-11
          相关资源
          最近更新 更多