当前位置:首页 > PHP

php实现加入书架

2026-03-13 08:35:14PHP

实现加入书架功能

在PHP中实现加入书架功能通常涉及数据库操作和用户会话管理。以下是一个基本实现方案:

数据库设计

创建两个表:books(书籍信息)和bookmarks(书架记录):

php实现加入书架

CREATE TABLE books (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    author VARCHAR(100),
    cover_url VARCHAR(255)
);

CREATE TABLE bookmarks (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    book_id INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (book_id) REFERENCES books(id)
);

用户认证检查

确保用户已登录才能执行加入书架操作:

session_start();
if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

添加书籍到书架

处理加入书架的POST请求:

php实现加入书架

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['book_id'])) {
    $bookId = (int)$_POST['book_id'];
    $userId = $_SESSION['user_id'];

    // 检查是否已在书架
    $stmt = $pdo->prepare("SELECT id FROM bookmarks WHERE user_id = ? AND book_id = ?");
    $stmt->execute([$userId, $bookId]);

    if (!$stmt->fetch()) {
        $insert = $pdo->prepare("INSERT INTO bookmarks (user_id, book_id) VALUES (?, ?)");
        $insert->execute([$userId, $bookId]);
    }

    header('Location: book.php?id='.$bookId);
    exit;
}

显示书架内容

获取用户的所有书架书籍:

$stmt = $pdo->prepare("
    SELECT b.* FROM books b
    JOIN bookmarks bm ON b.id = bm.book_id
    WHERE bm.user_id = ?
    ORDER BY bm.created_at DESC
");
$stmt->execute([$_SESSION['user_id']]);
$shelfBooks = $stmt->fetchAll(PDO::FETCH_ASSOC);

前端交互

在书籍页面添加加入书架按钮:

<form method="post" action="add_to_shelf.php">
    <input type="hidden" name="book_id" value="<?= $book['id'] ?>">
    <button type="submit">加入书架</button>
</form>

安全注意事项

  1. 始终使用预处理语句防止SQL注入
  2. 验证用户权限
  3. 对输出内容进行HTML转义
  4. 限制重复添加同一本书

扩展功能

  1. 添加分类标签功能
  2. 实现书架分组
  3. 添加阅读进度跟踪
  4. 实现多设备同步

以上实现可以根据具体需求进行调整和扩展。

标签: 书架php
分享给朋友:

相关文章

php实现验证码

php实现验证码

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

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php 实现表单验证

php 实现表单验证

表单验证基础方法 使用内置函数和条件判断进行基础验证,例如检查空值、长度限制等: $name = $_POST['name'] ?? ''; $email = $_POST['email'] ??…

php 插件实现

php 插件实现

PHP 插件实现方法 PHP 插件可以通过多种方式实现,具体取决于插件的用途和功能需求。以下是一些常见的实现方法: 使用钩子(Hooks)和过滤器(Filters) 钩子和过滤器是一种常见的插件架…