Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我需要阻止3次尝试后登录_Php_Session_Login_Limit - Fatal编程技术网

Php 我需要阻止3次尝试后登录

Php 我需要阻止3次尝试后登录,php,session,login,limit,Php,Session,Login,Limit,所以我有这个代码: <?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'] &

所以我有这个代码:

<?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']);
    }

}
?>

某个地方出现了错误,但我找不到:( 我只需要在不使用数据库的情况下限制登录尝试,只需要简单的会话


你能帮我吗?

首先,如果我认为你的第二个
应该是另一个

if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
...
否则,第一条语句将检查
$\u会话['count']
是否未设置。 如果是,则将其设置为0。然后,对于第二个将被设置的If,并且
$\u SESSION['count']+;
将始终将此计数增加到1。因此,它至少始终为1

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

如果你能详细解释一下确切的错误是什么,我们可以更好地帮助你


请记住,可以使用简单的方法取消会话基础身份验证。例如,每次达到登录限制时,通过tor访问您的站点或使用代理。

您不需要写入文件。每次用户尝试登录时,它返回false。您应该将+1添加到您的_会话['count'].将该代码放入函数中。你的_会话['count']是全局的,因此当它达到3时,你的用户将被锁定。

你认为黑客会存储会话cookie并帮助你吗

您不能使用会话执行暴力保护。您需要应用程序状态


以下是我对上一个问题的回答:

为什么不使用带有
write
read
的文件?您在哪里检查他们是否登录?“某个地方有错误”-您如何知道有错误?是否显示了错误?脚本是否没有执行它应该执行的操作?会话_destroy()应为空。销毁会话变量后无法取消设置该变量。销毁会话变量后无法引用会话“计数”(第三条if语句)。如果一个用户的名称为@fred ii,而另一个用户的名称为
fred ii
,则可能会重复?