如何创建PHP登录计数器


How to create a PHP login counter

我首先要说的是,我显然是一名高中生,所以这不是一个实际的网站,所以我只是想学习一些新的东西,但并不像我想象的那么容易。我正在尝试制作一个登录计数器,每当执行登录失败尝试时,它都会返回剩余的数字。一旦计数器达到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])只在值的减法尚未设置值的情况下设置值。