ロングストーリーでは、ログイン試行が5回失敗した後にセッションを破棄し、ログインフォームが再び表示されるようにページをリロードする必要があります。私はセッションを使用しており、ほとんどのものは私のサイトで動作します。彼らはログイン試行の限界に達した場合私のフォームは消えて、セッションは一見破壊しますが、ページはリロードされません(私はそのために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のfuncがあります:
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でそれがあるべき正確にどのようにではない場合、私は私を知っていますしかし、私はそれがページが私がしたいことをやっていることを確認するためにそれを使用しているだけです。助言がありますか?
私は私が正しく理解していれば何も確信していません。だから、セッションが終了したときにページを再配置したいのですか?あなたはステップと条件を提供できますか? – ChaudPain
JSのリロードをどれくらい待っていますか?間隔は33秒です。この値を減らしてみてください(たとえば、33000の代わりに2000)。または、JSコードが正しくロードされていません。コンソールにエラーがありますか? –
@Łukasz - はい、私はクッキーの寿命よりも長い待ち時間を与えるために40秒にタイマーを変更しました。これで、リロードされ、エラーメッセージは表示されますが、フォームは表示されません。もう40秒後にもう一度リロードすると(フォームに表示されないまま)、画面にフォームが表示されますが、エラーメッセージはそのままです。 –