使会话在php中结束


Make the session end in php

嘿,伙计们其实是php的新手。。我有一个输入表单,当用户在该输入表单中键入内容时,它会显示。我想做的是,一分钟后我希望会话过期并重定向到另一个网站。。我知道这可以用javascript轻松完成。。但我想用php会话来完成。。所以我写的代码是

<?php
if ( isset($_POST['firstname'])) {
  echo $_POST['firstname'];
  session_start();
  $_SESSION['logintime'] = time();
  if(time() - $_SESSION['logintime'] > 60) {
     header('Location: http://www.google.com/');
  } else {
    echo 'blah';
  }
}
?>

当我运行代码时,我得到inputname和blah(这意味着第二个if语句不起作用)。

希望你们能帮我。。任何帮助都将不胜感激。。感谢

"一分钟后"。。这是行不通的。PHP是服务器端的,所以在PHP能够控制任何事情之前,您需要与服务器进行交互(就像页面加载一样)。实现所描述内容的唯一方法是使用Javascript。

这里有一些伪代码,即根本没有测试,以演示:

PHP

<?php
session_start();
$_SESSION['logintime'] = time(); // when the login occurs
?>

JavaScript

<script>
// using jQuery
$(function(){
    var loginTime = <?php echo $_SESSION['logintime`]; ?>; // places PHP variable into JS variable
    var testSession = setInterval(function(){
        var currentTime = Date.now() * 1000; // convert to UNIX time for easy math
        if((currentTime - loginTime) > 60) {
            // ajax to request session unset
            $.post('clear_session.php', function() {
                console.log('session destroy request');
            });
            window.location.href = 'wherever.html'; // redirect
        } 
    }, 1000); //test each second
});
</script>

clear_session.php

<?php
    session_start();
    // belt and suspenders
    session_unset();
    unset($_SESSION);
    session_destroy();
?>