PHP收费资源实现
PHP收费资源实现方法
用户权限验证
使用PHP内置的会话管理功能session_start()和$_SESSION来跟踪用户登录状态。结合数据库查询验证用户订阅状态,确保只有付费用户能访问资源。
session_start();
if (!isset($_SESSION['user_id']) || !checkSubscription($_SESSION['user_id'])) {
header('Location: /payment-required.php');
exit;
}
文件保护机制
通过PHP脚本代理文件访问,避免直接暴露文件URL。将资源文件存储在web根目录之外,使用readfile()输出文件内容时检查权限。
$filePath = '/secure/path/' . basename($_GET['file']);
if (file_exists($filePath) && hasAccess($userID)) {
header('Content-Type: ' . mime_content_type($filePath));
readfile($filePath);
}
支付系统集成
集成支付网关如Stripe或PayPal的API。使用Composer安装官方SDK,处理支付回调验证,并在数据库中记录订阅期限。
\Stripe\Stripe::setApiKey('sk_test_key');
$session = \Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'line_items' => [[
'price' => 'price_123',
'quantity' => 1,
]],
'mode' => 'payment',
'success_url' => 'https://yoursite.com/success',
'cancel_url' => 'https://yoursite.com/canceled',
]);
订阅周期管理
在用户表中添加subscription_end字段,使用Cron Job定期检查过期订阅。通过日期比较实现自动降级逻辑。

$today = new DateTime();
$endDate = new DateTime($user['subscription_end']);
if ($today > $endDate) {
revokeAccess($user['id']);
}
内容加密
对视频等流媒体使用AES-256加密,通过PHP输出解密密钥给合法用户。结合HLS或DASH实现动态加密流。
$iv = openssl_random_pseudo_bytes(16);
$encrypted = openssl_encrypt(
$content,
'aes-256-cbc',
$encryptionKey,
0,
$iv
);
防盗链措施
检查HTTP_REFERER并设置.htaccess限制热链接。对于API访问,要求包含时效性签名。

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://yoursite.com [NC]
RewriteRule \.(mp4|pdf)$ - [F]
许可证密钥系统
生成唯一许可证密钥绑定用户硬件信息。使用OpenSSL创建非对称加密验证体系,定期通过API验证密钥有效性。
$licenseKey = bin2hex(random_bytes(16));
$signature = openssl_sign(
$userID . $licenseKey,
$signature,
$privateKey
);
统计分析
记录资源访问日志到数据库,分析用户使用模式。通过图表库可视化数据,识别异常下载行为。
CREATE TABLE access_logs (
id INT AUTO_INCREMENT,
user_id INT,
resource_id INT,
accessed_at TIMESTAMP,
ip_address VARCHAR(45)
);
多层缓存策略
对频繁访问的付费资源使用OPcache加速PHP,配合Redis缓存权限检查结果。设置适当的缓存过期时间平衡性能与安全性。
$redis = new Redis();
$redis->connect('127.0.0.1');
if (!$redis->get("access:$userID:$fileID")) {
$redis->setex("access:$userID:$fileID", 3600, 1);
}






