PHP 实现注册验证

1. 效果图


2. 实现项目

  1. php 生成随机颜色的四位随机验证码
  2. 验证用户名第一位是否为字母
  3. 验证用户名长度是否满足条件
  4. 验证密码是否为空
  5. 验证密码长度是否满足条件
  6. 验证密码是否一致
  7. 验证邮箱是否包含’@'符号
  8. 验证输入验证码和产生的验证码是否一致
  9. 输出注册信息

3. 代码

  1. 注册界面的 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>
  1. 处理注册信息的 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;
?>

猜你喜欢

转载自blog.csdn.net/liyuanyue2017/article/details/82791080