我正在PHP中开发应用程序。它有一个登录部分。我想知道如果用户输入4次错误的密码,我怎么能阻止用户输入(可以说)15个登录账户的薄荷糖。我怎么能阻止登录从使用PHP MySql的特定IP多次登录尝试后阻止用户登录
任何人都可以有脚本或引荐我任何教程。谢谢
我正在PHP中开发应用程序。它有一个登录部分。我想知道如果用户输入4次错误的密码,我怎么能阻止用户输入(可以说)15个登录账户的薄荷糖。我怎么能阻止登录从使用PHP MySql的特定IP多次登录尝试后阻止用户登录
任何人都可以有脚本或引荐我任何教程。谢谢
只记录每个尝试到字段IP和日期时间的MySQL表。然后,您将能够选择上次尝试的时间并在每次登录尝试后对其进行计数。
如果登录失败的x次,你会$ loginFail设置为1的例子。
然后输入这个信息到一个新的数据库。
编辑:使用PDO
if($loginFail == 1){
$ip = $_SERVER['REMOTE_ADDR'];
$date = new DateTime();
$fdate = $date->format('Y-m-d H:i:s');
$sql = "INSERT INTO loginTracker (ipaddress,time) VALUES (:ipaddress,:time)";
$q = $pdo->prepare($sql);
$q->execute(array(':time'=>$fdate,
':ipaddress'=>$ip));
}else{
$loginFail = 0;
}
然后,当用户试图登录时,你会比较上述数据库的时间戳和ip地址,与用户的IP地址和当前时间戳
**没有** mysql_ *函数,它们是[**正式弃用的**](https://wiki.php.net/rfc/mysql_deprecation),**不再维护**,并将[**移除**](http:// php.net/manual/en/function.mysql-connect.php#warning)。您应该使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)更新您的代码,以确保您的项目未来的功能。 – DarkBee 2015-03-08 17:22:34
很好,我99%的时间使用pdo。我在这个例子中使用了mysql,因为我注意到大多数php新手使用mysql – 2015-03-08 17:45:50
:-)更好的是不要发布过时的代码,但是我修正了我看到的问题。 – DarkBee 2015-03-08 18:54:59
您可能使用访问者IP地址在数据库中存储日志尝试,并在Y尝试失败后阻止访问登录功能X分钟。
对于您可以参考的全部细节:http://webcheatsheet.com/php/blocking_system_access.php
你会想用'$ _ SERVER [“REMOTE_ADDR”]来获得用户的IP地址;',然后你想放的是和当前的时间戳成一个数据库。然后,当有人登录时,你会检查用户的IP地址是否在数据库中,并说'WHERE $ timeNow <“$ timeThen”' – 2015-03-08 16:54:49