当前位置:首页 > PHP

php实现注册登录

2026-01-14 13:30:34PHP

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 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

注册表单 HTML

<form action="register.php" method="post">
    <input type="text" name="username" placeholder="用户名" required>
    <input type="email" name="email" placeholder="邮箱" required>
    <input type="password" name="password" placeholder="密码" required>
    <input type="password" name="confirm_password" placeholder="确认密码" required>
    <button type="submit">注册</button>
</form>

register.php 处理逻辑

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

    // 验证输入
    if (empty($username) || empty($email) || empty($password)) {
        die('所有字段必须填写');
    }

    if ($password !== $confirm_password) {
        die('两次密码输入不一致');
    }

    if (strlen($password) < 6) {
        die('密码长度至少6位');
    }

    // 密码哈希
    $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 = ? OR email = ?");
    $stmt->execute([$username, $email]);

    if ($stmt->fetch()) {
        die('用户名或邮箱已存在');
    }

    // 插入新用户
    $stmt = $db->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
    $result = $stmt->execute([$username, $email, $hashed_password]);

    if ($result) {
        header('Location: login.php');
        exit;
    } else {
        die('注册失败');
    }
}
?>

PHP 登录功能实现

登录表单 HTML

<form action="login.php" method="post">
    <input type="text" name="username" placeholder="用户名或邮箱" required>
    <input type="password" name="password" placeholder="密码" required>
    <button type="submit">登录</button>
</form>

login.php 处理逻辑

<?php
session_start();

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

    if (empty($username) || empty($password)) {
        die('所有字段必须填写');
    }

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

    // 查询用户
    $stmt = $db->prepare("SELECT * FROM users WHERE username = ? OR email = ?");
    $stmt->execute([$username, $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 {
        die('用户名或密码错误');
    }
}
?>

安全增强措施

密码哈希使用 PHP 内置的 password_hash() 和 password_verify() 函数

防止 SQL 注入使用 PDO 预处理语句

登录后会话管理

// 检查是否登录
session_start();
if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

// 登出功能
session_start();
session_destroy();
header('Location: login.php');
exit;

可选功能扩展

添加验证码防止暴力破解

实现记住我功能(使用安全cookie)

密码重置功能

电子邮件验证功能

php实现注册登录

用户资料管理功能

标签: php
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…