如何在页面空闲时在php中设置空闲会话

时间:2013-12-15 05:19:06

标签: php

login.php文件

<?php
session_start();
?>
<?php
if($_POST['submit1'])
{
  $v1 = "FirstUser";
  $v2 = "MyPassword";
  $v3 = $_POST['text1'];
  $v4 = $_POST['pwd'];
  if($v1 == $v3 && $v2 == $v4)
  {
    $_SESSION['luser'] = $v1;
    //-----------------------------------------------

    $_SESSION['start'] = time(); // taking now logged in time
    $_SESSION['expire'] = $_SESSION['start'] + (5 * 60) ; // ending a session in 30     minutes from the starting time
    header("location: http://127.0.0.1/session_exmpl/home.php");

    //-----------------------------------------------
  }
  else
  {
    echo "Please enter Username or Passwod again !";
  }

}
?>
<html>
<form name="form1" method="post">
  <table>
    <tr><td>Username </td><td><input type="text" name="text1"></td></tr>
    <tr><td>Password</td><td><input type="password" name="pwd"></td></tr>
    <tr><td><input type="submit" value="SignIn" name="submit1"> </td></tr>
  </table>
</form>
</html>

home.php文件

<?php
session_start();
if(!isset($_SESSION['luser']))
{
  echo "Please Login again";
  echo "<a href='http://localhost/somefolder/login.php'>Click Here to Login</a>";

}
else
{

  $now = time(); // checking the time now when home page starts

  if($now > $_SESSION['expire'])
  {
    echo $now;
    ?> <br>
    <?
    echo $_SESSION['expire'];
    session_destroy();
    echo "Your session has expire ! <a href='http://127.0.0.1/session_exmpl/login.php'>Login Here</a>";
  }
  else
  { //starting this else one [else1]

    ?>


    <!-- From here all HTML Coding can be done -->


    <html>
    <br />
    <?
    echo $_SESSION['start'];
    ?>
    <br />
    <?
    echo $_SESSION['expire'];
    ?>
    Welcome <?php echo $_SESSION['luser'];

    ?>
    </html>

  <?php
  }
}
?>


here there are two file login.php and home.php when user successfully logedin the session start with that logedin time and session timed out after 5 minutes.

它从登录时间计算时间,但现在我想用空闲会话超时更改此会话。 它应该在用户不对主页执行任何操作时销毁,会话应该销毁我需要的更改。谢谢高级....

1 个答案:

答案 0 :(得分:0)

呈现页面后,PHP就完成了。您需要使用客户端语言来执行此操作。

可能最合理的方法是使用PHP将expire值导出到JavaScript变量中,然后设置一个interval侦听器,它将检查到期时间是否小于现在,如果是,则提醒用户。

如果你仍然想要使用PHP(破坏会话,与数据库通信等),唯一的方法是进行AJAX调用,你仍然可以通过JavaScript进行调用。通俗地说,PHP一旦呈现页面就会入睡,您可以使用AJAX调用来唤醒它。

由于您没有显示任何解决此问题的尝试,我不打算给您任何代码。但是,我上面写的内容足以让你开始。