1. 效果图
2. 实现项目
- php 生成随机颜色的四位随机验证码
- 验证用户名第一位是否为字母
- 验证用户名长度是否满足条件
- 验证密码是否为空
- 验证密码长度是否满足条件
- 验证密码是否一致
- 验证邮箱是否包含’@'符号
- 验证输入验证码和产生的验证码是否一致
- 输出注册信息
3. 代码
- 注册界面的 reg.php
<?php
// 生成随机验证码
$str = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMM1234567890";
$code = '';
for ($i=0;$i<4;$i++){
$code .='<span style="color:rgb('.mt_rand(0,255).','.mt_rand(0,255).','.mt_rand(0,255).')">'.$str[mt_rand(0,strlen($str)-1)].'</span>';
}
//echo $code;
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>注册页面</title>
</head>
<body>
<h1>注册页面</h1>
<form method="post" action="doAction.php">
<table border="1" cellspacing="0" cellpadding="0" width="80%" bgcolor="#ABCDEF">
<tr>
<td align="right">用户名</td>
<td><input type="text" name="username" id="" placeholder="请输入合法用户名...">用户名以字母开头,长度为6~10位</td>
</tr>
<tr>
<td align="right">密码</td>
<td><input type="password" name="password" placeholder="请输入密码...">密码不能为空,且长度6~10位</td>
</tr>
<tr>
<td align="right">确认密码</td>
<td><input type="password" name="password1" placeholder="请再次输入密码...">两次密码一致</td>
</tr>
<tr>
<td align="right">邮箱</td>
<td><input type="text" name="email" id="" placeholder="请输入合法邮箱">邮箱必须包含@,如[email protected]</td>
</tr>
<tr>
<td align="right">兴趣爱好</td>
<td>
<input type="checkbox" name="fav[]" id="" value="php">PHP
<input type="checkbox" name="fav[]" id="" value="java">JAVA
<input type="checkbox" name="fav[]" id="" value="ios">IOS
<input type="checkbox" name="fav[]" id="" value="c">C语言
<input type="checkbox" name="fav[]" id="" value="c++">C++ <br/>
<input type="checkbox" name="fav[]" id="" value="swift">Swift
<input type="checkbox" name="fav[]" id="" value="meteor">Meteor
<input type="checkbox" name="fav[]" id="" value="nodejs">NodeJS
<input type="checkbox" name="fav[]" id="" value="ionic">ionic
</td>
</tr>
<tr>
<td align="right">验证码</td>
<td>
<input type="text" name="verify"><?php echo $code;?>
<?php // 创建一个隐藏的文本来输出验证码的值
// strip_tags 函数去除 code 的HTML标签 ?>
<input type="hidden" name="verify1" value="<?php echo strip_tags($code);?>">
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="立即注册"></td>
</tr>
</table>
</form>
</body>
</html>
- 处理注册信息的 doAction.php
<?php
header('content-type:text/html;charset=utf-8');
//接收数据
$username = $_POST['username'];
$password = $_POST['password'];
$password1 = $_POST['password1'];
$email = $_POST['email'];
$fav = $_POST['fav'];
$verify = trim(strtolower($_POST['verify']));
$verify1 = strtolower($_POST['verify1']);
//将 fav 转换为字符串
if(!empty($fav)){
$favStr = join(',',$fav);
}
$redirectURL = '<a href="reg.php">重新注册</a>';
//检验用户名的合法性
// 1. 检验首位是否为字母
// 取 username 的子串,从0开始取一个长度
$char = substr($username,0,1);
if(!(($char>='A' && $char<='Z') || ($char>='a' && $char<='z'))){
exit('用户名第一位不是以字母开头<br/>'.$redirectURL);
}
//2. 检测用户名长度是否满足条件
$userlen = strlen($username);
if($userlen<6 || $userlen>10){
exit('用户名长度不满足条件<br/>'.$redirectURL);
}
//检测密码的合法性
//1. 密码不能为空
$pwdlen = strlen($password);
if($pwdlen==0){
exit('密码不能为空<br/>'.$redirectURL);
}
//2. 检测密码长度是否满足条件
if($pwdlen<6 || $pwdlen>10){
exit('密码长度不满足条件<br/>'.$redirectURL);
}
//3. 检测两次密码是否一致
if(strcmp($password,$password1)!==0){
exit('两次密码不一致<br/>'.$redirectURL);
}
//检测邮箱是否包含 @
if(strpos($email,'@')==false){
exit('非法邮箱<br/>'.$redirectURL);
}
//检测验证码是否正确
if($verify != $verify1){
exit('验证码错误<br/>'.$redirectURL);
}
//注册成功,不容易啊
echo "恭喜您,注册成功!用户信息如下:<br/>";
//加密密码
$password = md5($password);
// 输出用户信息
$userInfo = <<<EOF
<table border="1" cellspacing="0" cellpadding="0" width="60%">
<tr>
<td>用户名</td>
<td>密码</td>
<td>邮箱</td>
<td>爱好</td>
</tr>
<tr>
<td>{$username}</td>
<td>{$password}</td>
<td>{$email}</td>
<td>{$favStr}</td>
</tr>
</table>
EOF;
echo $userInfo;
?>