长话短说,我需要在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是不是应该如何,但我只是用它来确保页面正在做我想做的事情。有什么建议吗?
答案 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');