当前位置:首页 > 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实现书签功能

<?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;
}
?>

安全注意事项

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

php实现书签功能

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

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

扩展功能建议

添加分类标签功能:

ALTER TABLE bookmarks ADD COLUMN tags VARCHAR(255);

实现搜索功能:

$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实现审核功能

vue实现审核功能

实现审核功能的基本思路 审核功能通常涉及状态管理、权限控制和操作记录。Vue中可以通过组件化设计、状态管理库(如Vuex或Pinia)和后端API配合实现。 审核状态管理 使用Vuex或Pinia存…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用。以下是 Vue 功能实现的关键方法和技术。 数据绑定与响应式 Vue 的核心特性是数据绑定和响应式系统。通过 d…

vue电影功能实现

vue电影功能实现

Vue 电影功能实现 数据获取与展示 使用 Axios 或 Fetch API 从电影 API(如 TMDb、豆瓣 API)获取数据。在 Vue 的 created 或 mounted 生命周期钩子中…

vue 实现打印功能

vue 实现打印功能

使用 vue-print-nb 插件 安装 vue-print-nb 插件: npm install vue-print-nb --save 在 main.js 中引入并注册插件: import…

vue订阅功能实现

vue订阅功能实现

Vue 订阅功能实现 Vue 中实现订阅功能通常涉及事件总线(Event Bus)、Vuex 状态管理或第三方库(如 mitt)。以下是几种常见方法: 使用事件总线(Event Bus) 创…

vue实现目录功能

vue实现目录功能

Vue实现目录功能的方法 基于路由的目录结构 在Vue项目中,可以通过路由配置自动生成目录结构。使用vue-router的routes数组可以定义页面层级关系,结合递归组件渲染目录树。 // rou…