Php 限制某些分钟的登录权限
我的表格在下面。。我想执行一个操作,如果用户输入错误的密码3次,在他的帐户被锁定几分钟后。。我如何在我的状态中实现这一点Php 限制某些分钟的登录权限,php,mysql,Php,Mysql,我的表格在下面。。我想执行一个操作,如果用户输入错误的密码3次,在他的帐户被锁定几分钟后。。我如何在我的状态中实现这一点 <?php session_start(); if(isset($_POST['username']) && isset($_POST['password'])){ $username = $_POST['username']; $password = $_POST['password']; $connect = mysql_connect('
<?php
session_start();
if(isset($_POST['username']) && isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
$connect = mysql_connect('localhost', 'root', 'root');
mysql_selectdb('lr') or die('Couldnt find database');
$query = mysql_query("SELECT * FROM users WHERE username = '$username'");
$numrows = mysql_num_rows($query);
if($numrows !=0){
while ($row = mysql_fetch_assoc($query)){
$dbuser = $row['username'];
$dbpass = $row['password'];
}
if ($username == $dbuser && $password == $dbpass){
$_SESSION['username'] = $dbuser;
if($_SESSION['username']){
echo 'Welcome ' . $_SESSION['username'] . ' ! <br>';
echo 'Click <a href = "index.php"> here </a> to log out !';
}
} else
echo 'Incorrect Username or Password Combinations ';
} else
die('That user does not exist');
}
?>
就像另一个用户之前说的那样,您很容易受到SQL注入的攻击。始终验证用户输入
至于你的问题,你可以使用这个数据库,然后有人可以很容易地阻止另一个用户的帐户。也可以改用会话变量。您只需要在会话中记录失败登录的次数。在3失败后,您可以设置一个会话变量,其时间戳为允许用户再次登录的时间(当前时间戳+X),并在运行SQL检查之前检查时间是否已过。
如果用户成功登录,则应清除或重置这些会话变量。
(很抱歉,我没有时间介绍您和示例,但它很容易实现。)
由鼠标垫制成,没有经过任何测试,但我希望它能给你一些提示
<?php
session_start();
define('MAX_LOGIN_ATTEMPTS',3);
if(isset($_SESSION['loginTimeout']) && $_SESSION['loginTimeout']<time()) {
echo "You used all login attempts. Try again in a little while.";
exit() // ups, forgot about this :)
}
if(isset($_POST['username']) && isset($_POST['password'])){
$connect = mysql_connect('localhost', 'root', 'root');
mysql_selectdb('lr') or die('Couldnt find database');
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query = mysql_query("SELECT * FROM users WHERE username = '$username'");
$numrows = mysql_num_rows($query);
$bFail = false;
if($numrows !=0){
while ($row = mysql_fetch_assoc($query)){
$dbuser = $row['username'];
$dbpass = $row['password'];
}
if ($username == $dbuser && $password == $dbpass){
unset($_SESSION['loginTimeout']);
$_SESSION['username'] = $dbuser;
if($_SESSION['username']){
echo 'Welcome ' . $_SESSION['username'] . ' ! <br>';
echo 'Click <a href = "index.php"> here </a> to log out !';
}
} else {
echo 'Incorrect Username or Password Combinations ';
$bFail = true;
}
} else {
die('That user does not exist');
$bFail = true;
}
if($bFail) {
if(isset($_SESSION['loginAttempts'])) $_SESSION['loginAttempts']++;
else $_SESSION['loginAttempts'] = 1;
if($_SESSION['loginAttempts']>MAX_LOGIN_ATTEMPTS) {
// one hour timeout
$_SESSION['loginTimeout'] = time() + 1*60*60;
}
}
}
?>
将summat插入数据库以实现此目的-就像上次尝试的人一样,它是否在机会窗口内如何?我一开始就不理解你,你在sql注入方面有问题。您需要记录该用户名在x秒内尝试过的事实。如何做到这一点?你能给我一个片段吗?获取他们最后一次尝试的时间(你将该位存储在数据库中)。如果在当前时间内发生3分钟的爆炸。如果没有,则获取最后一个值。如果他们失败了,3分钟后他们最后一次尝试进入未来,请提供一个片段?:/@yetin-我猜你希望有人为你写代码。有点不合适。指针已被删除given@Jorge我已经测试过了。。但是当我用错误的pw登录超过3次时,它不会阻止medid您添加我上次添加的出口吗?是的,我添加了出口();首先是my index.php,其中包含字段和按钮。。当我点击提交时,如果密码正确,它会引导我进入另一个页面。但是,在3次尝试失败后,如何阻止访问?