【问题标题】:Can I use header() to pass query string parameters?我可以使用 header() 传递查询字符串参数吗?
【发布时间】:2012-02-07 16:15:27
【问题描述】:

我在 Windows 上使用 XAMPP。

我已经配置 Apache 将所有请求重定向到一个 controller.php 文件。控制器在进行任何其他处理之前将所有请求记录到数据库中,并且它还执行其他一些操作,包括检查访问相关文件的权限。

大多数请求映射到一个文件,然后我使用适当的标头和一个读取文件提供该文件。例如:

header ( 'Content-Type: text/css' );
header ( 'Content-Length: ' . filesize ( $file ) );
readfile ( $file );

我的问题是,如果 URL 包含查询字符串,我不知道如何将其传递给文件。

http:///myswf.swf?q1=test 映射到 C:\SWF\myswf.swf

header ( 'Content-Type: applicaton/x-shockwave-flash' );
header ( 'Content-Length: ' . filesize ( $file ) );
readfile ( $file );

未能将 q1 参数传递给 SWF。

我无法修改 SWF。

我应该如何调用 SWF 并从 PHP 中成功传递参数?

【问题讨论】:

    标签: php windows http-headers query-string xampp


    【解决方案1】:

    SWF 文件不在服务器上执行。因此,您不能“传递”任何东西 SWF 文件。该文件由客户端简单地下载,然后在浏览器中运行,这将获取 URL 参数。从客户端看,这看起来像这样(简化):

    只要流程在客户端这样工作,您提供文件的准确程度并不重要。

    【讨论】:

    • 实际上,我希望它仍然是这样工作的,我已经有一段时间没有接触 Flash...:o)
    【解决方案2】:

    据我了解,您不能在文件名中使用 GET 参数,因此 readfile(filename.php?q=123);不会传递参数,

    事实上,我认为你可以做到这一点的唯一方法是使用远程 file_get_contents();如:

    echo file_get_contents("http://domain.com/file.swf?params");
    

    在这种情况下,domain.com 上的网络服务器将处理 swf 文件的参数,这意味着尽管 SWF 文件需要可公开访问,但没有人知道它的位置,所以您可以有一个像domain.com/asfqwasc213412sad/file.swf 这样的文件夹来隐藏它

    我对 SWF 如何处理 GET 参数没有太多经验,所以这都是关于使用参数提供 SWF 文件的假设

    更新 感谢@deceze 提供此信息,由于参数的工作方式,这可能不适用于 SWF 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      相关资源
      最近更新 更多