当前位置:首页 > PHP

php实现加入书架

2026-03-13 08:35:14PHP

实现加入书架功能

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

数据库设计

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

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请求:

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

前端交互

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

php实现加入书架

<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 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…

php 实现面包屑导航

php 实现面包屑导航

实现面包屑导航的方法 面包屑导航(Breadcrumb Navigation)是一种常见的网站导航方式,用于显示用户当前页面的路径。以下是几种在 PHP 中实现面包屑导航的方法。 基于 URL 路径…

php实现短信验证

php实现短信验证

PHP实现短信验证的步骤 选择合适的短信服务提供商 国内常见的短信服务提供商包括阿里云短信、腾讯云短信、云片等。注册账号并获取API密钥和签名模板是第一步。这些平台通常提供详细的开发文档和SDK。…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…

php 购物车实现session

php 购物车实现session

PHP 购物车实现(基于 Session) 在 PHP 中,使用 Session 实现购物车功能是一种常见方法。Session 可以跨页面存储用户数据,适合临时保存购物车信息。 初始化 Sessio…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (f…