如何创建PHP登录计数器

时间:2015-12-11 01:51:44

标签: php session login

我首先要说的是,我显然是一名高中生,所以这不是一个真实的网站,所以我只是想学习新的东西,但它并不像我想象的那么容易。我试图创建一个登录计数器,每次执行登录失败尝试时都会回显一个数字。一旦计数器达到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();
        }



}

}

2 个答案:

答案 0 :(得分:0)

每次提交表单时,您都会将尝试设置为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();
    }

您正在比较未分配的值。

答案 1 :(得分:0)

Gonzalo说我每次提交表格时都会重置x值。所以我使用if(!isset($ _ SESSION [x])仅设置值,如果它没有通过减去值来设置。