我有一个登录页面。当用户名或密码正确时,您将转到主页。但是在输入错误的用户名和密码3次后,您将转到另一个页面(不是主页)。 我在登录页面开始一个会话。
session_start();
$_SESSION['login_time']=' ';
检查用户名和密码后,我想增加该会话,如果它低于4,则在登录页面中停留:
session_start();
if ($_SESSION["login_time"] != null){
$_var = (int)$_SESSION["login_time"] +1;
$_SESSION["login_time"] = $_var;
}
if($_SESSION['login_time']<4){
header('Location: loginpage.php');
}
但是我的会话不会增加并始终保持1.请帮助。
答案 0 :(得分:1)
session_start();
//if login_time is not set, set it to 0
if(!isset($_SESSION["login_time"]))
$_SESSION["login_time"] = 0;
else
$_SESSION["login_time"] += 1;
//else increase login_time
//if user did not exceed max tries redirect to loginpage again.
if($_SESSION['login_time']<4)
header('Location: loginpage.php');
else
header('Location: comelater.php');
//else send to comelater.php
请注意,如果用户超过尝试,他将无法查看您编写此代码的页面,直到会话结束。
答案 1 :(得分:0)
尝试
session_start();
if ($_SESSION["login_time"] == null) $_SESSION["login_time"] = 0;
$_SESSION["login_time"] += 1;
if($_SESSION['login_time']<4){
header('Location: loginpage.php');
}
答案 2 :(得分:0)
您应该使用PHP isset()
检查会话是否已设置,而不是检查它是否等于null。
session_start();
if (isset($_SESSION['login_time'])) {
$_var = (int) $_SESSION['login_time'] + 1;
$_SESSION['login_time'] = $_var;
} else {
$_SESSION['login_time'] = 0;
}
if ($_SESSION['login_time'] < 4) {
header('Location: loginpage.php');
}