会话被销毁后如何重新加载页面?

时间:2017-01-25 23:12:45

标签: javascript php

长话短说,我需要在5次登录尝试失败后30分钟(用户被阻止登录多长时间)销毁会话,然后重新加载页面,以便再次显示登录表单。我正在使用SESSIONS,大部分内容都在我的网站上运行。如果他们达到登录尝试的限制,我的表格就会消失,SESSION似乎会破坏,但页面不会重新加载(我正在使用javascript)。

这里的php代码位于页面上,格式为:

<?php
include "includes/auth.php";
$_login_count = $_SESSION['login_count'];
?>

<!DOCTYPE html>
<html>
<body>
<?

$_show_form = false;

if($_login_count < 5) {
    $_show_form = true;
} else {
    if(isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 30)) {
        // last request was more than 30 minutes ago
        session_unset();     // unset $_SESSION variable for the run-time
        session_destroy();   // destroy session data in storage
        header( 'Location: http://localhost:8000/login.php' );
    }
}

$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

if ($_show_form) {?>
    <div class="loginBox" id="login-box">
        <form id="login-form" action="" method="post" >
            <label for="uname">Username:</label>
            <input type="text" name="uname" required autofocus/>

            <label for="pwd">Password:</label>
            <input type="password" name="pwd" required/>

            <input type="submit" name="submit" value="Login" />

        </form>
    </div>
<?}
?>
<script defer src="funcs.js"></script>
</body>
</html>

这是我的JS功能:

var checkPage = setInterval(
    function(){
        console.log('Checking page.');
        var isFormThere = document.getElementById('login-box');

        if(isFormThere) {
            console.log('Found form!');
        } else {
            window.location.reload(true);
        }
    },
    33000
);

我知道我的JS是不是应该如何,但我只是用它来确保页面正在做我想做的事情。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您正在使用<? ?>

在您的服务器上启用open_short_tags

否则,请将<? ?>替换为<?php ?>

答案 1 :(得分:0)

你可以在不使用JavaScript的情况下在PHP中执行此操作。

如果你在标题重定向中发回一个参数并在响应中选择它,如果它再次重定向:

header('Location: http://localhost:8000/login.php?refresh=true');

if(isset($_GET['refresh']) && $_GET['refresh'] == 'true')
  header('Location: http://localhost:8000/login.php');