提问人:robinw99 提问时间:11/6/2023 最后编辑:robinw99 更新时间:11/6/2023 访问量:66
PHP - 如果推荐链接匹配,请打开 pdf
PHP - open pdf if referral link is matching
问:
我希望我的 php 网站仅在推荐链接符合特定条件时打开一个 pdf 文件。 如果满足条件,我可以下载 pdf,但不能在浏览器中显示 pdf。 不知何故,它重新加载了它或其他东西,导致空引用。
我曾经将pdf重写到php页面,检查引用。.htaccess
RewriteEngine on
RewriteRule ^(.*).(pdf)$ check.php
两者都位于子目录 中。所以 的 url 是 .我要打开的文件位于另一个子目录中。所以。.htaccess
check.php
sub1/sub2
check.php
mydomain.com/sub1/sub2/check.php
sub1/sub2/sub3
mydomain.com/sub1/sub2/sub3/file.pdf
我使用以下代码来检查文件路径和引用链接的 URL。check.php
$path = $_SERVER['REQUEST_URI'];
$paths = explode('/', $path);
$lastIndex = count($paths) - 1;
$fileName = $paths[$lastIndex];
$httpReferer = parse_url($_SERVER['HTTP_REFERER']);
foreach ($httpReferer as $key => $value) {
if (str_starts_with($value, 'www.')) {
$httpReferer[$key] = ltrim($value,"www.");
}
}
$referrals = array("website1.com", "website2.com", "website3.com");
$fileDescription = 'funnyFileName';
Array 是包含所有已批准引用的数组。为了检查引用是否匹配以及文件是否存在,我使用以下代码:referrals
if (!empty(array_intersect($httpReferer, $referrals))) {
$file = '../..'.$path;
$file = strtok($file, "?");
if (!file_exists($file)) {
echo 'error1';
} else {
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=$fileDescription.pdf");
$filesize = filesize($file);
header("Content-Length: $filesize");
readfile($file);
}
} else {
echo 'error2';
}
如果引用不匹配,则显示,如果文件不存在,则显示 。
如果两者都正确,则下载文件。
pdf 是用 中另一个不相关函数的参数调用的,因此 。error2
error1
check.php
$file = strtok($file, "?");
但是我希望pdf文件显示在浏览器中,而不是立即下载。
我知道如果我替换这个应该有效,但事实并非如此。它会导致 .因此,当内联显示 pdf 时,它会重新加载 (?) 页面,导致空引用并发生。attachment
inline
error2
error2
我尝试使用.如果 I 的推荐匹配,则返回 1,如果不匹配,则返回 0。但是当它到达尝试以内联方式显示文件的点时,它也会返回 0...echo count(array_intersect($httpReferer, $referrals));
答: 暂无答案
评论