간단히 말하자면, 로그인 시도가 5 회 실패한 후 세션을 삭제해야하며 30 분 (로그인이 차단 된 사용자의 경우)이고 로그인 양식이 다시 나타나도록 페이지를 다시로드해야합니다. 나는 세션을 사용하고 있으며, 대부분 내 사이트에서 작동합니다. 그들이 로그인 시도의 한계에 도달하면 내 양식은 사라지고, 세션은 겉으로는 파괴되지만 페이지는 다시로드되지 않습니다. (저는 자바 스크립트를 사용하고 있습니다). 여기 세션이 삭제 된 후 어떻게 페이지를 다시로드합니까?
이 양식을 사용하여 페이지에 사는 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의 : 정확하지 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
);
내가 아는 내 그것을 어떻게해야 그러나 나는 페이지가 내가 원하는 것을하고 있는지 확인하기 위해 그것을 사용하고있다. 어떤 제안?
내가 제대로 이해한다면 더 확신합니다. 따라서 세션이 만료 될 때 페이지를 relaod 하시겠습니까? 단계와 조건을 제공 할 수 있습니까? – ChaudPain
JS 리로드를 얼마나 오래 기다리고 계셨습니까? 간격은 33 초입니다. 이 값을 줄이려고 시도하십시오 (예 : 33000). 또는 JS 코드가 제대로로드되지 않았습니다. 콘솔에 오류가 있습니까? –
@ Łukasz - 예, 쿠키의 수명보다 긴 대기 시간을주기 위해 타이머를 40 초로 변경했습니다. 이제 다시로드되고 오류 메시지가 표시되지만 양식은 표시되지 않습니다. 두 번째로 40 초마다 다시로드됩니다 (화면에 여전히 양식이 표시되지 않음) 화면에 양식이 표시되지만 오류 메시지가 계속 표시됩니다. –