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

时间:2012-01-11 09:37:59

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

我在Windows上使用XAMPP。

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

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

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

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

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中传递参数?

2 个答案:

答案 0 :(得分:4)

SWF文件未在服务器上执行。因此,你不能通过"任何 SWF文件。该文件只是由客户端下载,然后在浏览器中运行,它将获取URL参数。从客户端来看,这看起来像这样(简化):

只要该流程在客户端以这样的方式运行,与您提供文件的准确程度无关。

答案 1 :(得分:0)

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

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

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

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

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

<强>更新 感谢@deceze获取此信息,由于params的工作方式,这可能不适用于SWF文件