批改状态:合格
老师批语:
为了保障用户账号密码安全,往往需要对用户的账号注册、密码等输入内容做一个检测限制,如弱口令限制,验证码防机器自动脚本限制等,下面对用户模拟注册做一个简单的限制:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>用户注册页面</title>
<style>
#main {
/*让div内部文字居中*/
background-color: #fff;
border-radius: 20px;
width: 300px;
height: 350px;
margin: auto;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
</style>
</head>
<body>
<?php
//显示除去 E_NOTICE 之外的所有错误信息
error_reporting(E_ALL & ~E_NOTICE);
//制作验证码
//声明一个字符串集
$codes = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
//做一个四位的验证码,
for($i=0;$i<4;$i++){
$code .= "<span style='color:rgb(".mt_rand(0,255).",".mt_rand(0,255).",".mt_rand(0,255).")'>".$codes{mt_rand(0,strlen($codes)-1)}."</span>";
}
?>
<div id="main">
<!-- 建立html输入页面 -->
<form action="" method="post">
请输入账号:<input type="text" name="username" value="<?=$username?>" required><br>
请输入密码:<input type="password" name="password1" required value="<?=$password1?>"><br>
请确认密码:<input type="password" name="password2" required value="<?=$password2?>"><br>
请输入验证码:<?=$code?>
<input type="text" name="code1"><br>
<input type="text" name="code2" value = "<?=$code?>" hidden><br>
<input type="submit" name="sub" value="注册">
</form>
</div>
<?php
//获取POST提交的内容
$username = $_POST["username"];
$password1 = $_POST["password1"];
$password2 = $_POST["password2"];
$sub = $_POST["sub"];
$code1 = $_POST['code1'];
//将验证码的内容转为小写
$code2 = strip_tags($_POST['code2']);
//将用户名首位转为大写
$username = ucfirst($username);
//数字连续字符弱口令判断
$weak = strpos($password1,'012')===false?strpos($password1,'123')===false?strpos($password1,'234')===false?strpos($password1,'345')===false?strpos($password1,'456')===false?strpos($password1,'678')===false?strpos($password1,'789')===false?strpos($password1,'890')===false?:'':'':'':'':'':'':'':'';
//检测是否有点击操作
if(isset($sub)):
//strcasecmp($string1,$string2)不区分大小写做判断,判断验证码输入是否正确
if(strcasecmp($code1,$code2)!=0) $mess = "<span style='color:red;'>验证码输入错误</span>";
endif;
//如果没有报错且有点击操作往下执行
if(!$mess && isset($sub)):
//判断用户名首位是否是字母
if(ord($username)<65 || ord($username)>90): echo "<span style='color:red;'>用户名必须以字母开头</span>";
else:
//判断是否是弱口令
if($weak!==false): echo "<span style='color:red;'>密码过于简单,请重新输入</span>";
else:
//判断两次输入密码是否一致
if($password1 !== $password2): echo "<span style='color:red;'>两次输入密码不一致</span>";
else:
//判断密码长度是否在6-12位
if(strlen($password1)<6 || strlen($password1)>12): echo "<span style='color:red;'>密码长度请设置6-12位字符</span>";
//如果都符合条件返回注册成功提示并将密码加密方便后面传输
else:$password3 = sha1($password1);$password4 = sha1($password2);echo "注册成功,请返回登录";
endif;
endif;
endif;
endif;
//如果有报错直接输出报错
else:echo $mess;
endif;
?>
</body>
</html>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号