当前位置:首页 > PHP

php实现书签功能

2026-02-16 22:37:31PHP

实现书签功能的基本思路

书签功能通常需要存储用户收藏的网页链接、标题等信息,并提供添加、删除、查看等操作。PHP结合MySQL数据库是常见的实现方式。

数据库设计

创建一个简单的书签表结构:

CREATE TABLE bookmarks (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    title VARCHAR(255) NOT NULL,
    url VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

添加书签功能

创建表单页面用于提交新书签:

<form action="add_bookmark.php" method="post">
    <input type="text" name="title" placeholder="书签标题" required>
    <input type="url" name="url" placeholder="URL" required>
    <button type="submit">添加书签</button>
</form>

处理添加操作的PHP脚本:

<?php
session_start();
require 'db_connection.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = $_POST['title'];
    $url = $_POST['url'];
    $user_id = $_SESSION['user_id'];

    $stmt = $pdo->prepare("INSERT INTO bookmarks (user_id, title, url) VALUES (?, ?, ?)");
    $stmt->execute([$user_id, $title, $url]);

    header("Location: bookmarks.php");
    exit;
}
?>

显示书签列表

查询并显示用户的所有书签:

<?php
session_start();
require 'db_connection.php';

$user_id = $_SESSION['user_id'];
$stmt = $pdo->prepare("SELECT * FROM bookmarks WHERE user_id = ? ORDER BY created_at DESC");
$stmt->execute([$user_id]);
$bookmarks = $stmt->fetchAll();
?>

<ul>
<?php foreach ($bookmarks as $bookmark): ?>
    <li>
        <a href="<?= htmlspecialchars($bookmark['url']) ?>" target="_blank">
            <?= htmlspecialchars($bookmark['title']) ?>
        </a>
        <a href="delete_bookmark.php?id=<?= $bookmark['id'] ?>">删除</a>
    </li>
<?php endforeach; ?>
</ul>

删除书签功能

实现删除书签的PHP脚本:

<?php
session_start();
require 'db_connection.php';

if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $user_id = $_SESSION['user_id'];

    $stmt = $pdo->prepare("DELETE FROM bookmarks WHERE id = ? AND user_id = ?");
    $stmt->execute([$id, $user_id]);

    header("Location: bookmarks.php");
    exit;
}
?>

安全注意事项

对所有用户输入进行验证和过滤:

$url = filter_var($_POST['url'], FILTER_VALIDATE_URL);
if ($url === false) {
    // 处理无效URL
}

使用预处理语句防止SQL注入,对输出内容使用htmlspecialchars()防止XSS攻击。

扩展功能建议

添加分类标签功能:

ALTER TABLE bookmarks ADD COLUMN tags VARCHAR(255);

实现搜索功能:

php实现书签功能

$search = '%' . $_GET['q'] . '%';
$stmt = $pdo->prepare("SELECT * FROM bookmarks WHERE user_id = ? AND (title LIKE ? OR url LIKE ?)");
$stmt->execute([$user_id, $search, $search]);

添加书签导入/导出功能,支持常见格式如HTML书签文件。

标签: 书签功能
分享给朋友:

相关文章

vue实现tab功能

vue实现tab功能

Vue 实现 Tab 功能的方法 使用动态组件和 v-if 指令 通过 v-if 或 v-show 控制不同 Tab 内容的显示与隐藏。这种方法适合简单的 Tab 切换需求。 <tem…

vue实现名字查找功能

vue实现名字查找功能

实现名字查找功能 在Vue中实现名字查找功能,可以通过多种方式完成。以下是几种常见的实现方法: 使用v-model和computed属性 创建一个输入框,使用v-model绑定输入的值,通过comp…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

vue修改功能实现

vue修改功能实现

Vue 修改功能的实现方法 修改功能是 CRUD 操作中的重要部分,在 Vue 中可以通过多种方式实现。以下是几种常见的实现方案: 数据绑定与表单处理 使用 v-model 实现双向数据绑定,快速获…

vue实现功能列表

vue实现功能列表

Vue 实现功能列表的方法 在 Vue 中实现功能列表通常涉及数据绑定、列表渲染、事件处理和状态管理。以下是几种常见的方法: 数据驱动列表渲染 使用 v-for 指令可以轻松实现列表渲染。假设有一个…

vue实现修改功能

vue实现修改功能

Vue 实现修改功能的方法 数据绑定与表单处理 使用v-model实现双向数据绑定,快速获取表单输入值。适用于表单类修改场景: <template> <input v-mode…