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

<?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服务商更加稳定。

相关推荐
2603_9547083136 分钟前
协调控制柜在微电网中的核心地位:数据枢纽、控制核心、安全屏障
分布式·安全·架构·能源·需求分析
程序员JerrySUN43 分钟前
Jetson边缘嵌入式实战课程第五讲:Jetson Secure Boot - 安全启动
android·linux·服务器·人工智能·安全·unity·游戏引擎
瀚高PG实验室1 小时前
HGDB安全版单机修改用户密码
数据库·安全·瀚高数据库
一起聊电气1 小时前
智能断路器:智能照明系统的数字化电气安全内核
网络·安全
zh_xuan1 小时前
Android JNI 动态注册:获取系统内存页大小
android·cmake·jni·ndk·动态注册·内存页大小
福大大架构师每日一题1 小时前
nginx 1.31.1 发布:一次安全修复驱动的主线升级,涉及 Rewrite、HTTP/2、Mail、MP4 与工作流修正
nginx·安全·http
CocoaKier1 小时前
X未提前通知,突然停用twitter授权登录域名,大量X三方登录异常!
android·ios
半壶清水1 小时前
一次处理挖矿木马的记录,从流量异常到揪出 XMRig 的过程
网络·安全·病毒
IT大白鼠1 小时前
2008年YouTube全球劫持事件:BGP协议脆弱性与互联网基础设施安全反思
网络·安全
风途科技~1 小时前
全天候实时管控,在线水质监测仪守护水环境安全
大数据·运维·安全