0

我正在研究登录功能....

现在我有问题......像这样

1)用户按注销后..

2)如果用户点击浏览器返回按钮..用户可以看到他/她以前登录的页面...

我如何限制..用户在注销后返回...

一切正常,除了这个......帮我解决这个..

这是 LoginViewController.php

                 <?php  
                      session_start();
                 header("Cache-Control: private, must-revalidate, max-age=0");
                 header("Pragma: no-cache");
                 header("Expires: Fri, 4 Jun 2010 12:00:00 GMT");

                include('GenericClasses/GenericCollectionClass.php');
                include('Models/UsersModel.php');
                include('DataObjects/Users.php');
                include('DatabaseAccess/DBHandler.php');

           if(!empty($_SESSION['user']))
          {
              header("Location:loggedin.php");
               die();
             }
              else 
               {
             ?>
              //Html code for LoginIndexpage
            <?php
             }
              ?>

这是登录.php

         <?php
           session_start();
          header("Cache-Control: private, must-revalidate, max-age=0");
          header("Pragma: no-cache");
          header("Expires: Fri, 4 Jun 2010 12:00:00 GMT");

          include('GenericClasses/GenericCollectionClass.php');
          include('Models/UsersModel.php');
          include('DataObjects/Users.php');
          include('DatabaseAccess/DBHandler.php');

         if(!isset($_SESSION['user']))
         {
        header('Location: LoginViewController.php');
           exit();
      }
             echo '<div style="background:white; text-align:right"> Login as:'.$_SESSION['user'].'
      <a href="LogoutViewController.php" style="text-align:right">Logout</a></div>';

       ?>

这是 Log-out.php

          <?php
        header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
        header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
        session_start();
        session_destroy();
           header("Location: LoginViewController.php");
           ?>

任何建议都可以接受......

4

3 回答 3

1

用户登录后,您需要将用户 ID 或邮件 ID 存储在会话变量中。

并且您必须在所有页面上设置条件,如果设置了用户 ID 或邮件 ID 的会话变量,则用户可以访问该页面,否则您必须在登录页面上重定向。

于 2013-07-04T06:11:24.667 回答
0

用户登录后,您必须$_SESSION['id']在内部页面(用户仪表板)中设置会话,并且您必须在每个页面上设置条件,即:

if(!isset($_SESSION['user_id'])){
header("location:login.php")
}

这将检查会话的可用性。请记住取消设置会话logout.php

于 2013-07-04T06:17:24.760 回答
0

我建议检查$_SESSION['user']每个需要身份验证的页面。这可以使用一个通用的 Php 页面来实现,您可以include在所有需要身份验证的页面中使用该页面(可能除了登录页面之外的所有页面)。例如,让我们说,创建一个名为的 Php 页面Security.php,在该页面内,您将有类似以下内容的内容,这些内容是从您的问题中提取的:

  if(!isset($_SESSION['user']))
  {
      header('Location: LoginViewController.php');
      exit();
  }

然后在每个需要用户身份验证的页面中,您可以Security.php在代码的开头包含该文件。像这样的东西:

<?php
    include('YOUR PATH/Security.php');
    //Rest of your code here 
    ...
<?

这样,无论用户点击返回按钮还是通过浏览器的URL输入请求页面,如果他没有登录,他将被重定向到登录页面。

希望对你有帮助

于 2013-07-04T06:14:28.417 回答