当前位置:首页 > PHP

php实现登陆注册

2026-04-03 11:01:04PHP

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
);

注册功能实现

创建注册表单和处理脚本:

register.php

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

    $conn = new mysqli('localhost', 'username', 'password', 'database');

    $stmt = $conn->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $username, $email, $password);

    if ($stmt->execute()) {
        header("Location: login.php");
        exit();
    } else {
        $error = "注册失败,请重试";
    }
}
?>

<form method="post">
    <input type="text" name="username" placeholder="用户名" required>
    <input type="email" name="email" 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'];

    $conn = new mysqli('localhost', 'username', 'password', 'database');

    $stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();

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

<form method="post">
    <input type="text" name="username" placeholder="用户名" required>
    <input type="password" name="password" placeholder="密码" required>
    <button type="submit">登录</button>
</form>

安全防护措施

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

$stmt = $conn->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $email, $password);

密码使用bcrypt哈希存储

php实现登陆注册

$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

验证密码时使用password_verify

if (password_verify($password, $user['password'])) {
    // 登录成功
}

会话管理

登录成功后创建会话

session_start();
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];

登出功能

session_start();
session_destroy();
header("Location: login.php");
exit();

密码重置功能

生成重置令牌并存储

php实现登陆注册

$token = bin2hex(random_bytes(32));
$expires = date("Y-m-d H:i:s", time() + 3600); // 1小时后过期

$stmt = $conn->prepare("UPDATE users SET reset_token=?, reset_expires=? WHERE email=?");
$stmt->bind_param("sss", $token, $expires, $email);

发送包含重置链接的邮件

$resetLink = "https://example.com/reset_password.php?token=$token";
$message = "请点击以下链接重置密码: $resetLink";
mail($email, "密码重置", $message);

输入验证

验证用户名格式

if (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) {
    $error = "用户名只能包含字母、数字和下划线";
}

验证邮箱格式

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $error = "无效的邮箱格式";
}

验证密码强度

if (strlen($password) < 8) {
    $error = "密码至少需要8个字符";
}

标签: php
分享给朋友:

相关文章

php实现博客

php实现博客

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

php登陆功能实现

php登陆功能实现

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

php商城 设计与实现

php商城 设计与实现

PHP商城设计与实现的关键步骤 需求分析与规划 明确商城类型(B2B/B2C)、目标用户群体及核心功能模块。基础功能需包含用户注册登录、商品展示、购物车、订单管理、支付接口集成、后台管理。扩展功能可考…

php树形菜单的实现

php树形菜单的实现

PHP树形菜单的实现方法 实现树形菜单通常涉及数据库设计、数据查询和前端展示三个部分。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的树形结构存储方式,每个节点…

php实现无限级分类

php实现无限级分类

无限级分类的实现方法 无限级分类通常用于构建树形结构数据,如商品分类、地区选择等。以下是几种常见的实现方式: 递归实现法 递归是最直观的实现方式,通过函数自身调用来处理子分类: function…

php实现登陆功能

php实现登陆功能

创建数据库表 设计用户表存储登录信息,通常包含字段如 id、username、password(需哈希加密)、email 等。示例 SQL: CREATE TABLE users ( i…