经过多次发帖后,我成功设法创建了htaccess和验证文件,以通过URL处理PDF调用。
问题是,脚本不输出PDF文件。它在Firefox中显示为“PDF文档可能无法正确显示”,Chrome中没有错误,它只是没有做任何事情。
知道为什么吗?
由于
注意:文件夹中存在PDF文件。我可以在禁用htaccess后直接打开它们。
validation.php
session_start();
//If user not logged in or URL not set then redirect to login page
if (! isset($_SESSION['user']) || ! isset($_GET['request_url']))
{
session_write_close();
header ('Location: /login.php');
exit();
}
//Otherwise
else
{
//Get request URL from htaccess
$request_url = $_GET['request_url'];
//Get file name only
$filename = basename($request_url);
//Set headers
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($request_url));
header('Accept-Ranges: bytes');
//Output file content
@readfile($request_url);
//Take the log
$file = 'log.txt';
$log = file_get_contents($file);
$log .= 'URL:' . $request_url . ' - FILE:' . $filename . ' - TIMESTAMP:' . date('d/m/Y H:i:s') . "\n";
@file_put_contents($file, $log);
}
htaccess的:
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(pdf)$ [NC]
RewriteRule ^ /validate.php?request_url=%{REQUEST_URI} [L]
答案 0 :(得分:0)
从此行中删除@
:
@readfile($request_url);
看看你得到了什么错误。
file_put_contents()
有可选的FILE_APPEND标志,您不必阅读日志内容
$file = 'log.txt';
$log = 'URL:' . $request_url . ' - FILE:' . $filename . ' - TIMESTAMP:' . date('d/m/Y H:i:s') . "\n";
@file_put_contents($file, $log, FILE_APPEND);
答案 1 :(得分:0)
用绝对路径解决。
替换
@readfile($request_url);
使用
@readfile($_SERVER['DOCUMENT_ROOT'] . $request_url);