php网页实现注册
实现PHP网页注册功能
数据库准备 创建一个MySQL数据库表用于存储用户信息,例如:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
注册表单HTML 创建register.html文件包含表单:
<form action="register.php" method="post">
<label>用户名:</label>
<input type="text" name="username" required>
<label>邮箱:</label>
<input type="email" name="email" required>
<label>密码:</label>
<input type="password" name="password" required>
<label>确认密码:</label>
<input type="password" name="confirm_password" required>
<button type="submit">注册</button>
</form>
PHP处理脚本 创建register.php处理注册逻辑:
<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取表单数据
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
// 验证数据
if ($password !== $confirm_password) {
die("两次输入的密码不一致");
}
// 密码哈希
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 准备SQL并执行
$stmt = $conn->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $email, $hashed_password);
if ($stmt->execute()) {
echo "注册成功";
} else {
echo "注册失败: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>
安全增强措施 对用户输入进行过滤和验证:
$username = filter_var($username, FILTER_SANITIZE_STRING);
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("无效的邮箱格式");
}
错误处理改进 添加更友好的错误提示和重定向:
if ($stmt->execute()) {
header("Location: welcome.php");
exit();
} else {
if ($conn->errno == 1062) {
$error = "用户名或邮箱已存在";
} else {
$error = "系统错误,请稍后再试";
}
header("Location: register.html?error=" . urlencode($error));
exit();
}
密码强度检查 添加密码复杂度要求:
if (strlen($password) < 8) {
die("密码至少需要8个字符");
}
if (!preg_match("/[A-Z]/", $password) ||
!preg_match("/[a-z]/", $password) ||
!preg_match("/[0-9]/", $password)) {
die("密码必须包含大小写字母和数字");
}






