1

我想在访问 Web 服务器上的文件时运行 PHP 代码(例如 /../../somefile.pdf)。

当用户第一次访问网站时,我需要显示免责声明。每次访问网页时,我都可以执行 PHP 脚本,但我不知道如何在访问网页文件时运行脚本。这可能吗?

谢谢!

4

2 回答 2

2

当您要跟踪下载时,有两种方法:

  1. 将下载 URL 更改为通过 PHP 文件,而不是<a href="/../../somefile.pdf">..</a>尝试<a href="/download.php?file=/../../somefile.pdf">..</a>
  2. 使用 .htaccess (Apache Rewrite mod) 中的 rewrite 将下载 URL 首先重定向到 PHP 文件,例如: RewriteRule ^download_directory/(.*)$ /download.php?file=$1 [L,QSA]

在您的文件 download.php 中,您再次有两个选项:

  1. 使用参数中的路径读取文件file,并使用 PHP 回显输出。(此方法不安全,因为用户可能会修改file参数中的路径并获取他不应该访问的文件。)
  2. 由于您的文件位于 webroot 中(即它们可以直接访问),一旦您的跟踪代码完成执行,最好将用户重定向到实际文件,使用header('Location: ' . $_GET['file']);
于 2013-03-10T08:57:03.177 回答
1

对于原作者来说可能有点晚了,但这正是 MODX静态资源的完美之处。

静态资源是托管在您的服务器上的真实文件的抽象,在这种情况下,您可以像处理标准网页请求一样执行您已经在使用的相同片段/插件。不需要 .htaccess 模组或自定义标头。

更多信息:

于 2013-03-11T15:43:32.400 回答