如何使用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服务商更加稳定。

相关推荐
阿巴斯甜2 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker2 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95273 小时前
Andorid Google 登录接入文档
android
黄林晴5 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
BingoGo5 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack5 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
冬奇Lab17 小时前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
cipher19 小时前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
城东米粉儿20 小时前
Android MediaPlayer 笔记
android
Jony_20 小时前
Android 启动优化方案
android