我首先要说的是,我显然是一名高中生,所以这不是一个实际的网站,所以我只是想学习一些新的东西,但并不像我想象的那么容易。我正在尝试制作一个登录计数器,每当执行登录失败尝试时,它都会返回剩余的数字。一旦计数器达到0,它应该重定向到谷歌。我的问题是Session变量不会倒计时。如果有人能帮助我,我将不胜感激。
session_start();
if($_POST['submit']=='submit')
{
$_SESSION[x]=5;
if($_POST['ps']=='happy8')
{
$_SESSION[ps]=1;
header('Location: private.php');
exit();
}
elseif($_POST['ps']!='happy8')
{
if($_SESSION[x]>1)
{
$output='<p style="color:red">You have '.$_SESSION[x].' attempts left</p>' ;
$_SESSION[x]=$_SESSION[x]-1;
}
if($_SESSION[x]==0)
{
session_destroy();
header('Location: https://www.google.com/');
exit();
}
}
}
每次提交表单时,您都会将trys设置为5:$_SESSION[x]=5
你应该做这样的东西:
session_start();
if (!isset($_SESSION[x]) $_SESSION[x]=5;
//Otherwise nothing, preserve the session value
if($_POST['submit']=='submit') {
...
}
另外,我不知道$_SESSION[x]==5;
在这个地方做什么:
if($_SESSION[x]==0)
{
$_SESSION[x]==5;
session_destroy();
header('Location: https://www.google.com/');
exit();
}
您正在比较未分配的值。
正如Gonzalo所说,我每次提交表单时都会重置x值。因此,我使用if(!isset($_SESSION[x])只在值的减法尚未设置值的情况下设置值。