如何使用PHP创建一个安全的用户注册表单,包含输入验证、数据过滤和结果反馈教程。

发布于:2025-05-28 ⋅ 阅读:(18) ⋅ 点赞:(0)

<?php
// 初始化变量和错误信息
$errors = [];
$username = $email = '';
$success_msg = '';

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 获取并过滤输入数据
    $username = htmlspecialchars($_POST['username'] ?? '');
    $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
    $password = $_POST['password'] ?? '';

    // 验证用户名
    if (empty($username)) {
        $errors[] = '用户名不能为空';
    } elseif (!preg_match('/^[a-zA-Z0-9_]{3,20}$/', $username)) {
        $errors[] = '用户名只能包含字母、数字和下划线(3-20位)';
    }

    // 验证邮箱
    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors[] = '请输入有效的邮箱地址';
    }

    // 验证密码
    if (strlen($password) < 8) {
        $errors[] = '密码至少需要8个字符';
    }

    // 无错误时处理注册
    if (empty($errors)) {
        // 模拟保存到数据库(实际应使用password_hash和预处理语句)
        $hashed_password = password_hash($password, PASSWORD_DEFAULT);
        
        $success_msg = "注册成功!欢迎 $username";
        // 清空表单字段
        $username = $email = '';
    }
}
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
    <style>
        .error { color: red; }
        .success { color: green; }
    </style>
</head>
<body>
    <h2>用户注册</h2>
    
    <?php if ($success_msg): ?>
        <p class="success"><?= $success_msg ?></p>
    <?php else: ?>
        <?php foreach ($errors as $error): ?>
            <p class="error"><?= $error ?></p>
        <?php endforeach ?>

        <form method="post">
            <p>
                <label>用户名:</label>
                <input type="text" name="username" value="<?= $username ?>" required>
            </p>
            
            <p>
                <label>邮箱:</label>
                <input type="email" name="email" value="<?= $email ?>" required>
            </p>
            
            <p>
                <label>密码:</label>
                <input type="password" name="password" required>
            </p>
            
            <button type="submit">立即注册</button>
        </form>
    <?php endif ?>
</body>
</html>

我们在日常开发中通常会用到各种API接口,比如查询用户IP归属地,手机号归属地,天气预报,万年历等,这时我们可以直接去接口盒子https://www.apihz.cn/查找需要的API即可。接口盒子有数百个免费API,而且采用集群化服务器部署,比一般的API服务商更加稳定。


网站公告

今日签到

点亮在社区的每一天
去签到