当前位置:首页 > PHP

layui php实现注册

2026-02-16 20:28:33PHP

layui php实现注册

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令牌保护表单 定期备份数据库

标签: layuiphp
分享给朋友:

相关文章

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…