有一个完全运行的PHP站点,只有在使用ID /密码登录时才能访问。
我被要求在网站上添加一个上传PDF文件并在浏览器中显示现有PDF文件的功能。
所以我通过使用iframe在浏览器中嵌入PDF文件来实现这一目标。
但问题是,PDF文件不应该直接访问(访问www.aaa.com/pdf/test.pdf时不应该打开),并且只能在站点中显示这样只有授权用户才能查看该文件。
所以我尝试了一些事情:
,例如
order deny,allow
deny from all
allow from 127.0.0.1
或
Require local
等等。它显然阻止了直接访问,但也没有允许从网站上显示PDF(www.aaa.com/showPDF.php)。考虑到这一点,上述方法似乎只允许从物理服务器打开时读取文件。
我认为我过于复杂了,我认为合适的.htaccess文件只会这样做,但在这方面不了解多少。非常感谢这里的帮助,谢谢!
答案 0 :(得分:0)
似乎很简单。
Order Deny,Allow Deny from all Allow from www.aaa.com
的工作。谢谢你的建议!
=======================================
编辑:上面没有工作。
事实上,我没有权限访问我的webroot。 因此,我将pdf文件存储在我的webroot中的文件夹中,并使用以下命令拒绝所有人访问:
Deny from all
在.htaccess。
之后,由于.htaccess拒绝iframe,我尝试使用file_get_contents()打印PDF的内容。但这需要设置标题信息,例如
$contents = file_get_contents($filePath);
header('Content-Type: ' . mime_content_type($filePath));
header('Content-Length: ' . filesize($filePath));
echo $contents;
但是显示PDF文件内容的php页面(showPDF.php)在初始化期间已经发送了标题,我没有权限修改该部分。
所以我制作了一个新的php文件(pdfviewer.php),添加了会话信息,并添加了上面的4行。之后我在showPDF.php中iframed pdfviewer.php,它终于奏效了。
我认为这个问题真的特定于我目前的情况,但希望有人觉得它很有用。
另外,感谢@CBroe,因为我意识到我错了并得到了一些提示!