layui php实现注册


使用Layui和PHP实现用户注册功能
前端部分(Layui实现)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户注册</title>
<link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">
</head>
<body>
<div class="layui-container" style="margin-top: 50px;">
<form class="layui-form" action="register.php" method="post">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<input type="password" name="repassword" required lay-verify="required" placeholder="请再次输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-block">
<input type="text" name="email" required lay-verify="email" placeholder="请输入邮箱" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formDemo">立即注册</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script>
<script>
layui.use(['form', 'layer'], function(){
var form = layui.form;
var layer = layui.layer;
// 表单验证
form.verify({
username: function(value){
if(value.length < 3 || value.length > 16){
return '用户名长度需在3-16个字符之间';
}
},
password: function(value){
if(value.length < 6){
return '密码长度不能少于6位';
}
}
});
// 监听提交
form.on('submit(formDemo)', function(data){
if(data.field.password !== data.field.repassword){
layer.msg('两次密码输入不一致');
return false;
}
return true;
});
});
</script>
</body>
</html>
后端部分(PHP实现)
<?php
// register.php
header('Content-Type: text/html; charset=utf-8');
// 数据库配置
$db_host = 'localhost';
$db_user = 'root';
$db_pass = 'password';
$db_name = 'test';
$db_port = 3306;
// 连接数据库
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name, $db_port);
if ($conn->connect_error) {
die("数据库连接失败: " . $conn->connect_error);
}
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$repassword = trim($_POST['repassword']);
$email = trim($_POST['email']);
// 验证数据
if (empty($username) || empty($password) || empty($email)) {
die('请填写完整信息');
}
if (strlen($username) < 3 || strlen($username) > 16) {
die('用户名长度需在3-16个字符之间');
}
if (strlen($password) < 6) {
die('密码长度不能少于6位');
}
if ($password !== $repassword) {
die('两次密码输入不一致');
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die('邮箱格式不正确');
}
// 检查用户名是否已存在
$check_sql = "SELECT id FROM users WHERE username = ?";
$stmt = $conn->prepare($check_sql);
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
die('用户名已存在');
}
$stmt->close();
// 密码加密
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 插入用户数据
$insert_sql = "INSERT INTO users (username, password, email, created_at) VALUES (?, ?, ?, NOW())";
$stmt = $conn->prepare($insert_sql);
$stmt->bind_param("sss", $username, $hashed_password, $email);
if ($stmt->execute()) {
echo "<script>alert('注册成功');window.location.href='login.html';</script>";
} else {
echo "注册失败: " . $conn->error;
}
$stmt->close();
$conn->close();
}
?>
数据库准备
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
实现要点
Layui表单验证在前端进行基本验证,确保数据格式正确 PHP后端进行更严格的验证和安全处理 使用预处理语句防止SQL注入 密码使用password_hash函数进行安全哈希存储 数据库表设计包含必要的唯一约束和索引
安全建议
在生产环境中使用HTTPS协议传输数据 添加验证码防止机器人注册 实现IP限制防止暴力注册 考虑使用CSRF令牌保护表单 定期备份数据库






