我可以使用header()传递查询字符串参数吗


Can I use header() to pass query string parameters?

我在Windows上使用XAMPP。

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

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

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并成功地从PHP中传递参数?

SWF文件不会在服务器上执行。因此,您不能将任何"传递"到SWF文件。该文件只需由客户端下载,然后在浏览器中运行,也就是说,它将获得URL参数。从客户端来看,这看起来像这样(简化):

  • 浏览器打开URLhttp://example.com/myswf.swf?q1=test
  • SWF文件下载
  • 浏览器执行下载的文件并向其传递URL/query参数

只要这个过程在客户端是这样工作的,那么如何准确地提供文件并不重要。

据我所知,你不能在文件名中使用GET参数,所以readfile(filename.php?q=123);不会通过参数,

事实上,我认为唯一能做到这一点的方法是使用远程文件_get_contents();例如:

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

在这种情况下,domain.com上的Web服务器将处理swf文件的参数,这意味着swf文件需要公开访问,但没有人会知道它的位置,所以你可以使用domain.com/asfqwasc213412sad/file.swf这样的文件夹来隐藏它

我对SWF如何处理GET params没有太多经验,所以这都是用params 为SWF文件提供服务的假设

更新感谢@deceze提供的信息,这可能不会在SWF文件上工作,因为参数的工作方式