Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 如何检查一个用户是否有超过5次登录失败并防止暴力_Php_Mysql - Fatal编程技术网

Php 如何检查一个用户是否有超过5次登录失败并防止暴力

Php 如何检查一个用户是否有超过5次登录失败并防止暴力,php,mysql,Php,Mysql,我希望避免用户多次登录失败,同时防止攻击。如果失败的登录次数为5次或更多,则将有验证码或禁用访问15分钟 在下面,您可以找到有关用户成功登录或未成功登录时发生的情况的代码。缺少一些代码,我在正确登录时使用会话 登录失败的次数可在false_logins列中找到 $result使用查询检查是否找到了$login和$password 谢谢你 $result=mysql_query($qry); $member = mysql_fetch_assoc($result); //Check whethe

我希望避免用户多次登录失败,同时防止攻击。如果失败的登录次数为5次或更多,则将有验证码或禁用访问15分钟

在下面,您可以找到有关用户成功登录或未成功登录时发生的情况的代码。缺少一些代码,我在正确登录时使用会话

登录失败的次数可在false_logins列中找到

$result
使用查询检查是否找到了
$login
$password

谢谢你

$result=mysql_query($qry);
$member = mysql_fetch_assoc($result);

//Check whether the query was successful or not and if user is verified. Verified users have empty value

if($result) {
    if ( (mysql_num_rows($result) == 1) && (!$member['verified']) ){

        //Login Successful
mysql_query("UPDATE members SET ip = '$ip', false_login = '0' WHERE login = '$login'");
        header("location: member-index.php");
        exit();

    }else {

        //Login failed
mysql_query("UPDATE members SET false_login = false_login+1 WHERE login = '$login'");
        header("location: login-failed.php");

        exit();
    }

}else {

    die("Query failed");
}

您最好创建一个包含
ip+date
列的登录失败历史记录表。并查看在一段时间内是否有超过N次来自同一IP的失败尝试


如果发生了这种情况,你可以像谷歌一样使用验证码,例如。

除非您更改代码以将登录尝试次数存储在cookie或会话变量中,否则您将不得不在某个时刻获取false_login字段的更新值。@Brent Friar:只要BruteForces在登录失败时几乎不保留会话cookie或任何cookie,cookie或会话解决方案将失败。基于此代码,只要知道你的$login,我就可以给你一些麻烦(把你锁在外面)。@mmhan你有什么建议?是的,泽克姆斯,我错过了问题的暴力部分。@Giorkouros:你实际上不能得到或写什么?