当前位置:首页 > PHP

php实现登录注册

2026-02-27 23:05:58PHP

PHP 登录注册实现

数据库准备

创建数据库表 users,包含字段 id, username, password, email 等。密码建议使用 password_hash() 函数加密存储。

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

注册功能实现

创建注册表单 register.php,包含用户名、密码和邮箱输入字段。表单提交后验证输入并插入数据库。

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    $email = trim($_POST['email']);

    if (empty($username) || empty($password) || empty($email)) {
        $error = "所有字段必须填写";
    } else {
        $hashed_password = password_hash($password, PASSWORD_DEFAULT);

        // 数据库连接
        $db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');

        // 检查用户名是否已存在
        $stmt = $db->prepare("SELECT id FROM users WHERE username = ?");
        $stmt->execute([$username]);
        if ($stmt->rowCount() > 0) {
            $error = "用户名已存在";
        } else {
            // 插入新用户
            $stmt = $db->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
            if ($stmt->execute([$username, $hashed_password, $email])) {
                header("Location: login.php");
                exit;
            } else {
                $error = "注册失败";
            }
        }
    }
}
?>

登录功能实现

php实现登录注册

创建登录表单 login.php,验证用户输入并与数据库中的加密密码比对。

<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);

    if (empty($username) || empty($password)) {
        $error = "用户名和密码必须填写";
    } else {
        // 数据库连接
        $db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');

        // 查询用户
        $stmt = $db->prepare("SELECT id, username, password FROM users WHERE username = ?");
        $stmt->execute([$username]);
        $user = $stmt->fetch();

        if ($user && password_verify($password, $user['password'])) {
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['username'] = $user['username'];
            header("Location: dashboard.php");
            exit;
        } else {
            $error = "用户名或密码错误";
        }
    }
}
?>

会话管理

创建 dashboard.php 检查用户是否已登录,未登录则重定向到登录页面。

php实现登录注册

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit;
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Dashboard</title>
</head>
<body>
    <h1>Welcome, <?php echo htmlspecialchars($_SESSION['username']); ?></h1>
    <a href="logout.php">Logout</a>
</body>
</html>

注销功能

创建 logout.php 清除会话数据并重定向到登录页面。

<?php
session_start();
session_unset();
session_destroy();
header("Location: login.php");
exit;
?>

安全注意事项

  • 使用 htmlspecialchars() 防止 XSS 攻击
  • 使用预处理语句防止 SQL 注入
  • 密码必须使用 password_hash() 加密
  • 敏感操作需验证 CSRF 令牌
  • 生产环境应使用 HTTPS

扩展功能建议

  • 添加记住我功能
  • 实现密码重置
  • 添加验证码防止暴力破解
  • 实现账户锁定机制
  • 记录登录日志

标签: php
分享给朋友:

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE ord…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 // 创建…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…