当前位置:首页 > 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中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php搜索功能的实现

php搜索功能的实现

实现PHP搜索功能的方法 数据库搜索 使用SQL的LIKE语句进行模糊匹配,适用于简单的搜索需求。 $searchTerm = $_GET['search']; $query = "SELECT *…

php实现获取验证码

php实现获取验证码

使用GD库生成验证码 在PHP中,可以通过GD库来生成验证码图片。以下是一个简单的实现示例: <?php session_start(); $width = 120; $height = 40…

php实现记住密码

php实现记住密码

实现记住密码功能的方法 使用PHP实现记住密码功能通常需要结合Cookie和Session技术。以下是几种常见的实现方式: 使用Cookie存储登录信息 在用户登录时创建一个长期有效的Cookie来…