当前位置:首页 > PHP

php实现登陆注册

2026-02-28 02:07:36PHP

实现用户注册功能

创建注册表单页面(register.php),包含用户名、密码、邮箱等字段。表单提交方式应为POST:

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

处理注册逻辑(register_process.php),验证数据并存入数据库:

<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');

// 获取表单数据
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = $_POST['email'];

// 检查用户名是否已存在
$check = $conn->prepare("SELECT id FROM users WHERE username = ?");
$check->bind_param("s", $username);
$check->execute();
$check->store_result();

if($check->num_rows > 0) {
    die("用户名已存在");
}

// 插入新用户
$stmt = $conn->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $password, $email);
$stmt->execute();

header("Location: login.php");
?>

实现用户登录功能

创建登录表单页面(login.php),包含用户名和密码字段:

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

处理登录逻辑(login_process.php),验证用户凭证:

<?php
session_start();
$conn = new mysqli('localhost', 'username', 'password', 'database');

$username = $_POST['username'];
$password = $_POST['password'];

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

if($result->num_rows == 1) {
    $user = $result->fetch_assoc();
    if(password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        header("Location: dashboard.php");
    } else {
        die("密码错误");
    }
} else {
    die("用户不存在");
}
?>

数据库表结构

创建用户表(users)存储注册信息:

php实现登陆注册

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

安全性注意事项

密码必须使用password_hash()函数进行哈希处理,验证时使用password_verify()

所有数据库查询应使用预处理语句防止SQL注入

对用户输入进行过滤和验证,防止XSS攻击

php实现登陆注册

重要操作如修改密码需进行二次验证

会话管理

登录成功后创建会话:

$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $username;

检查用户是否登录的验证函数:

function isLoggedIn() {
    return isset($_SESSION['user_id']);
}

登出功能:

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

标签: php
分享给朋友:

相关文章

php实现文件下载

php实现文件下载

PHP 实现文件下载的方法 使用 header() 函数强制下载 设置正确的 HTTP 头信息,强制浏览器下载文件而不是直接打开。 $file = 'path/to/file.pdf'; if (f…

php长连接实现

php长连接实现

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

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php实现接口

php实现接口

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

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…