2016-04-28 79 views
1

阻止登录所以我有这样的代码:我需要经过3次尝试

<?php 
session_start(); 
if (!isset($_SESSION['count'])) { 
    $_SESSION['count'] = 0; 
} 
if(isset($_SESSION['count'])) { 
    $_SESSION['count']++; 
    $num = 3 - $_SESSION['count']; 
    echo $num.' login attempts left.'; 
    if($_SESSION['count'] < 0) 
    { 
     session_destroy("count"); 
     unset($_SESSION["count"]); 
     echo 'negative :/'; 
    } 

} 
if($_SESSION['count'] == 3) 
{ 
    echo 'Your session is locked for 30 minutes.'; 
    if(!$_SESSION['timeout']) 
    { 
     $_SESSION['timeout'] = time(); 
    } 
    $st = $_SESSION['timeout'] + 180; //session time is 30 minutes 
    if(time() < $st) 
    { } 
    elseif(time() >= $st) { 
     session_destroy("count"); 
     session_destroy("timeout"); 
     unset($_SESSION['count']); 
     unset($_SESSION['timeout']); 
    } 

} 
?> 

某处是一个错误,但我不能找到它:( 我只需要限制登录尝试不使用数据库,只是简单的会话。

你能帮助我吗?

+0

为什么不使用与'write'&'read'文件? –

+0

你在哪里检查他们登录? – chris85

+0

“某处是错误” - 你怎么知道有错误?是否显示错误?脚本没有做到它应该做的事情吗? –

回答

0

首先,你的第二个if应该是别的我想。

if (!isset($_SESSION['count'])) { 
    $_SESSION['count'] = 0; 
} else { 
... 

否则,第一条语句将检查$_SESSION['count']是否未设置。 如果是这样,将其设置为0。然后第二,如果它会被设置,然后$_SESSION['count']++;总是支持增加这个数为1。因此,它至少会始终为1

的第二件事情是,你不在代码中的任何地方都不会减少计数。 所以它永远不会达到0

如果您解释更确切的错误是什么,我们可以帮助你更好。

请记住,会议基本验证可以通过简单的方法来annuled。例如。每次通过tor访问您的站点或每次达到登录限制时都使用代理。

-1

您不需要写入文件。用户尝试登录时的Foreach时间,并返回false。你应该为你的_SESSION ['count']加1。将该代码放入函数中。你的_SESSION ['count']是全球性的,所以当你的用户将被锁定时。

+0

如果一个用户的名字是@fred-ii而另一个是'Fred-ii'会怎么样? –

相关问题