Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未在来自SWF的POST请求中发送Cookie值_Php_Cookies_Flash - Fatal编程技术网

Php 未在来自SWF的POST请求中发送Cookie值

Php 未在来自SWF的POST请求中发送Cookie值,php,cookies,flash,Php,Cookies,Flash,我有一个SWF文件,允许用户在我的网站上传文件。该SWF向我的服务器上的upload.php发送POST请求,从而上传文件 但在此之前,在upload.php上,我想确保执行此操作的人已登录。目前,我检查请求头中发送的SID cookie值,并对照数据库中的该SID值检查条目(我将会话存储在数据库中)。我在chrome中工作得很好,但在firefox中失败,因为当SWF生成请求时,它不会发送任何cookie头 我该怎么做呢。谢谢你的帮助 以Chrome发送的标题 Content-Length:

我有一个SWF文件,允许用户在我的网站上传文件。该SWF向我的服务器上的
upload.php
发送POST请求,从而上传文件

但在此之前,在upload.php上,我想确保执行此操作的人已登录。目前,我检查请求头中发送的
SID cookie值
,并对照数据库中的该SID值检查条目(我将会话存储在数据库中)。我在
chrome
中工作得很好,但在
firefox
中失败,因为当SWF生成请求时,它不会发送任何cookie头

我该怎么做呢。谢谢你的帮助

以Chrome发送的标题

Content-Length: 355894
Origin: http://localhost 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52
Content-Type: multipart/form-data; boundary=----------ei4Ij5ae0ae0ei4Ef1Ef1KM7GI3Ef1 
Accept: */* 
Referer: http://localhost/home Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie: PHPSSID = 238e320eewbjdbew923e092ejhwbjhwebd
FireFox中发送的标题

Accept: text/* 
Content-Type: multipart/form-data; boundary=----------GI3Ef1Ef1ae0GI3cH2Ef1Ef1cH2KM7 
User-Agent: Shockwave Flash 
Host: localhost 
Content-Length: 355894 
Connection: Keep-Alive 
Cache-Control: no-cache

这是Chrome的一个功能,但不是FireFox的一个Bug。上传SWF必须明确发送浏览器cookie。看看从3.0版开始的FancyUpload

还要注意的是,如果用户代理头不等于浏览器的头,带有suhosin的PHP可以删除会话变量。这被称为“会话固定”。所以,在请求期间,上传SWF也必须发送浏览器用户代理(或者只是禁用suhosin补丁)