开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 55|回复: 0
收起左侧

[闲聊] 如何使用PHP创建一个安全的用户注册表单,包含输入验证...

[复制链接]
结帖率:0% (0/6)
发表于 前天 15:53 | 显示全部楼层 |阅读模式   四川省绵阳市
<?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服务商更加稳定。


您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表