在下载之前,redirect文件为简单表单

问题描述 投票:0回答:2
我想在网站中重定向 *.pdf文件request.php?file = name_of_of_pdf_being_redirected where request.php是页面上带有表单的页面,请在继续进行之前询问一些详细信息。 网站中的所有PDF都保存在 /PDF文件夹中。 任何想法?

我在服务器上使用apache。

您可以尝试以下方法:

将文件移到“外部”网络根部的文件夹中,这样没有人可以通过浏览器访问它

使用会议来检测一个人是否已填写表格

使用php驱动的文件下载脚本。以其天真的形式,它看起来像这样:

if(isset($ _session ['ok_to_download'])== false) { 标题(“位置:MUST_FILL_THIS_FIRST.PHP”); 出口(0); } 标题(“ content-type:application/pdf”); //仔细检查以上,谷歌搜索我不确定 echo file_get_contents('some_directory_inaccessible_thru_www/'。$ _get ['pdf_name']); //理想情况下,需要上述二进制功能

php pdf .htaccess http-redirect url-rewriting
2个回答
1
投票

在apache中,您应该能够使用重写来将请求转换为其他形式。例如,将
    /pub/docs/x.pdf
  • 变成
  • request.php?file=/pub/docs/x.pdf
  • 可以用以下操作来完成:
  • RewriteRule ^/pdf/(.*)\.pdf/ request.php?file=/$1.pdf
保存考虑到这是记忆的(自从我触摸Apache且仍干净以来六年:-)格式可能略有不同。
update:


1
投票
1/重命名PDF具有不同的扩展名,以免它们被重写规则所捕获。他们应该配置为将相同的MIME类型推向客户端,以便在客户选择中打开。

2/也作为脚本的一部分进行下载,而不是直接访问PDF。由于表格的提交是HTTP请求,因此您应该能够立即用PDF内容回答,而不是将其重新指导到下载页面。

第二选项将是我的选择,因为它是:
tops的人们只需请求xx.pdfx而不是xx.pdf.
即可弄清楚他们可以进入PDF。

使人更快地获取PDF(他们不必再次单击链接)。
    

注意,我的答案是关于.NET网站的答案,但是我敢肯定,PHP中的某个地方也存在相同的结构。

我将具有一个带有 *.pdf的httpModule,它只是对request.php?... etc(在我的情况下request.aspx)进行响应。当您知道要显示哪个PDF并授权do do and a pde.contenttype = [mime of pdffffffffffffefect.php?... etcecte.php?响应end() 您还可以添加其他东西,以使其变得更好,例如文件大小等。但是在最小情况下,这会起作用。如果您想在C#中使用代码,我可以在大约3分钟内提出一些内容,但是在PHP中,我很迷失了。我会开始寻找httpmodules以及如何在PHP中写下它们。

为“ php httpmodule”的googling导致了这一点:php

中的asp.net httpmodules的等效性,所以我可能有点错,但是希望这是一个起点。

如果您使用的是Apache Web服务器,请使用.htaccess文件。您需要确保您启用了mod_rewrite,但是一旦您可以使用这两个简单的行重写所有文件:

螺纹仪 重写 ^.pdf $ /rewrite.php [nc,l]

如果您使用的是IIS,则可以使用isapi_rewrite完成类似的事情。 您的其他替代方法是将您的PDF放置在无法公开访问的目录的内部,然后任何对PDF资源提出的请求都会返回访问拒绝的错误,并且只能通过适当的下载脚本访问文件。

    if($user==authenticated){ //set pdf headers echo file_get_contents('actual.pdf');
  • 没有改写,隐藏了实际的来源,这是我通常所做的 - 希望这有帮助
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.