session 和 cookies 结合使用。

解决方案 »

  1.   

    30秒请求数据就清空session,试试看.session_start();
    !isset($_SESSION['lastaccess'])?$_SESSION['lastaccess']=date("s"):date("s")-$_SESSION['lastaccess']>30?session_unset():$_SESSION['lastaccess']=date("s");
      

  2.   

    http://cn.php.net/manual/zh/features.http-auth.php例子 34-3. 强迫重新输入用户名和密码的 HTTP 认证的范例<?php
      function authenticate() {
       header('WWW-Authenticate: Basic realm="Test Authentication System"');
       header('HTTP/1.0 401 Unauthorized');
       echo "You must enter a valid login ID and password to access this resource\n";
       exit;
      }  if (!isset($_SERVER['PHP_AUTH_USER']) ||
         ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
       authenticate();
      }
      else {
       echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br />";
       echo "Old: {$_REQUEST['OldAuth']}";
       echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='post'>\n";
       echo "<input type='hidden' name='SeenBefore' value='1' />\n";
       echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";
       echo "<input type='submit' value='Re Authenticate' />\n";
       echo "</form></p>\n";
      }  
     
    该行为对于 HTTP 的 Basic 认证标准来说并不是必须的,因此不能依靠这种方法。对 Lynx 浏览器的测试表明 Lynx 在收到 401 的服务端返回信息时不会清空认证文件,因此只要对认证文件的检查要求没有变化,只要用户点击“后退”按钮,再点击“前进”按钮,其原有资源仍然能够被访问。不过,用户可以通过按“_”键来清空他们的认证信息。 同时请注意,在 PHP 4.3.3 之前,由于微软 IIS 的限制,HTTP 认证无法工作在 IIS 服务器的 CGI 模式下。为了能够使其在 PHP 4.3.3 以上版本能够工作,需要编辑 IIS 的设置“目录安全”。点击“编辑”并且只选择“匿名访问”,其它所有的复选框都应该留空。 另一个限制是在 IIS 的 ISAPI 模式下使用 PHP 4 的时候,无法使用 PHP_AUTH_* 变量,而只能使用 HTTP_AUTHORIZATION。例如,考虑如下代码:list($user, $pw) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));。