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
,则可能会重复?