PHP 怎么PHP代码收藏

wen PHP项目 1

本文目录导读:

PHP 怎么PHP代码收藏

  1. 场景一:在你的项目(Web应用)中,为用户提供“收藏”功能
  2. 场景二:在本地代码中,将某段代码“收藏”到自己的小工具里
  3. 场景三:保存 PHP 文件本身(代码文件的备份)
  4. 总结建议

在 PHP 中实现“代码收藏”功能,通常有几种不同的理解方式,根据你的需求,我为你整理了最常见的三种场景及对应的实现方案:


在你的项目(Web应用)中,为用户提供“收藏”功能

这是最常见的业务需求,比如收藏文章、商品等,需要数据库支持。

数据库表设计

-- 收藏表
CREATE TABLE `favorites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL COMMENT '用户ID',
  `target_type` varchar(20) NOT NULL COMMENT '类型:article/product',
  `target_id` int(11) NOT NULL COMMENT '目标ID',
  `created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_fav` (`user_id`, `target_type`, `target_id`) -- 防止重复收藏
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

PHP 添加/取消收藏接口

<?php
// favorite.php
session_start();
require 'db.php'; // 数据库连接
$user_id = $_SESSION['user_id'];
$target_id = (int)$_POST['target_id'];
$target_type = $_POST['target_type'];
// 检查是否已收藏
$check = $pdo->prepare("SELECT id FROM favorites WHERE user_id = ? AND target_type = ? AND target_id = ?");
$check->execute([$user_id, $target_type, $target_id]);
if ($check->fetch()) {
    // 已收藏:取消收藏
    $delete = $pdo->prepare("DELETE FROM favorites WHERE user_id = ? AND target_type = ? AND target_id = ?");
    $delete->execute([$user_id, $target_type, $target_id]);
    echo json_encode(['status' => 'unfavorited']);
} else {
    // 未收藏:添加收藏
    $insert = $pdo->prepare("INSERT INTO favorites (user_id, target_type, target_id) VALUES (?, ?, ?)");
    $insert->execute([$user_id, $target_type, $target_id]);
    echo json_encode(['status' => 'favorited']);
}
?>

前端 AJAX 调用

// 前端按钮点击
document.querySelector('.fav-btn').addEventListener('click', function() {
    fetch('favorite.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        body: 'target_id=123&target_type=article'
    })
    .then(res => res.json())
    .then(data => {
        // 根据 data.status 切换按钮状态
    });
});

在本地代码中,将某段代码“收藏”到自己的小工具里

如果你是想写一个个人代码片段管理器,可以用 JSON 或 SQLite 存储。

PHP 代码片段管理器(SQLite版)

<?php
// code_saver.php
class CodeSaver {
    private $db;
    public function __construct() {
        $this->db = new PDO('sqlite:code_snippets.db');
        $this->db->exec("CREATE TABLE IF NOT EXISTS snippets (
            id INTEGER PRIMARY KEY,
            title TEXT,
            code TEXT,
            language TEXT,
            created_at DATETIME
        )");
    }
    // 保存代码片段
    public function save($title, $code, $language) {
        $stmt = $this->db->prepare("INSERT INTO snippets (title, code, language, created_at) VALUES (?,?,?,?)");
        return $stmt->execute([$title, $code, $language, date('Y-m-d H:i:s')]);
    }
    // 获取所有收藏的代码
    public function getAll() {
        return $this->db->query("SELECT * FROM snippets ORDER BY created_at DESC")->fetchAll(PDO::FETCH_ASSOC);
    }
}
// 使用示例
$saver = new CodeSaver();
$saver->save("PHP数据库连接", "mysqli_connect(...)", "php");
$saver->save("JavaScript弹窗", "alert('Hello')", "javascript");
print_r($saver->getAll());
?>

保存 PHP 文件本身(代码文件的备份)

如果你想把一段 PHP 代码保存为 .php 文件存到服务器上:

<?php
// save_code_file.php
$code = $_POST['code']; // 从表单或编辑器获取
$filename = 'saved_' . time() . '.php';
// 写入文件(确保目录有写权限)
file_put_contents($filename, '<?php ' . $code . ' ?>');
echo "代码已保存为: " . $filename;
?>

总结建议

  • 如果是 Web 应用功能:使用 场景一(数据库 + AJAX),这是最规范的方式。
  • 如果是个人工具:使用 场景二(SQLite/JSON),无需额外安装数据库。
  • 如果是简单文件备份:使用 场景三,一行代码搞定。

你可以根据你的具体需求选择适合的实现方式,如果还有其他细节问题(比如登录认证、防SQL注入等),欢迎继续追问!

抱歉,评论功能暂时关闭!