用户登录页账号密码输错冻结24小时的功能实现

我们在网站开发过程中往往对于用户系统安全特别重视,如果没有一套严密的用户账户登录审核流程,很容易被一些高手暴力破解。今天波波分享的是用PHP实现用户登录页账号密码输错3次冻结24小时的功能,希望可以给需要的朋友一个启发。

001

功能逻辑:

1)给用户表增加两个字段:err_time(登录账号密码输错的时间),err_count(账号密码输错次数)。在这里波波说的一点就是也有朋友建议用缓存的方式,但是我想了一下如果用缓存的话,存在一些人会登录一下清除一下浏览器缓存,这样即使多次输错,也实现不了账号冻结,无法保证安全。想尝试的朋友可以尝试,当然也可以将数据写进内存中。

2)若err_time不为空,则检查记录时间和现在当前时间的差值。如果时间差值大于24则清除用户表中err_time和err_count的字段值,并进行账户密码校验。若小于24小时,则检查err_count的值是否大于等于3,大于等于3的时候提示账户冻结,禁止登陆,小于3的时候看账户密码的校验返回值,确定登陆成功还是失败。

3)若err_time为空,则执行账户密码的校验。

示例代码:

<?php
	require("conn.php");
	require("function.php");
	session_start();
	//用户登录验证,登录次数>=3,账户冻结;24小时自动解冻
	$uid=guolv(trim($_POST['uid']));
	$pass=guolv(trim($_POST['pass']));
	
	//uid和pass根据自己情况获取
	//检查用户是否存在
	$row=$mysql->query("select * from admindata where `uid`={$uid} limit 1");

	$time=date("y-m-d h:i:s");
	
	if(empty($row['err_time'])){
		//err_time为空,直接进行密码校验
		$login=$mysql->query("select * from admindata where `uid`={$uid} and `pass`={$pass} limit 1");
		if($login){
			echo "登录成功,设置跳转";//登录成功执行的动作
		}else{
			$count=$login['err_count'];
			$mysql->query("UPDATE admindata SET `err_time`={$time},`err_count`={$count}+1 where `uid`={$uid}");
		//账号密码不对其他操作可以写在下方
		}
	}else{
		//如果err_time不为空
		$err_time=$login['err_time'];
		$hour=$hour=floor((strtotime($time)-strtotime($err_time))%86400/3600);//计算时间差
		$count=$login['err_count'];
		if($hour<24&&$count>3){
			//24小时以内,错误次数大于3 账户冻结
			echo "您的账户已经被冻结,请联系网站管理员";//可以改为其他提醒方式
			exit;
		}else{
			//大于24小时,自动解除冻结,重置err_time和err_count的值
			$mysql->query("UPDATE admindata SET `err_time`='null',`err_count`='0' where `uid`={$uid}");
			$login=$mysql->query("select * from admindata where `uid`={$uid} and `pass`={$pass} limit 1");
			if($login){
				echo "登录成功,设置跳转";//登录成功执行的动作
			}else{
				//解除冻结后,账号密码错误的情况,更新数据库,返回登录页
				$count=$login['err_count'];
				$mysql->query("UPDATE admindata SET `err_time`={$time},`err_count`={$count}+1 where `uid`={$uid}");
				echo "<script type=\"text/javascript\">document.location(\"login.php\",301);</script>";
			}
		}
	}
?>

未经允许不得转载:波波助手 » 用户登录页账号密码输错冻结24小时的功能实现

赞 (0)

牛人热评 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址