今天在使用Uploadify和thinkphp进行多文件上传时遇到一个问题,在选择上传的文件并自动上传完成之后,弹出警告窗口提示“http 301”或者“http 302”重定向。后来发现是因为通过Flash插件发起的请求是另外一个客户端发起的,跟浏览器的会话不一致,而我的服务器后端代码恰好是有登录认证的。这就需要我们把当前的session_id通过url或者post的方式传递给php。
一开始我设想将session_id作为query_string传递给php后(即$_GET['session_id']或者$_POST['session_id']),通过session_destory()、session_id($_REQUEST['session_id'])、session_start()系列函数,将flash的会话同步为和浏览器一致。而一技术群里有高手提醒说只要把php.ini中的session.name作为参数传递,PHP就会自动处理了。也就是$_GET或者$_POST或者$_COOKIE数组里有一个“PHPSESSID=当前会话的id”,就能让php自动处理、实现会话的传递了。就是这样:
$("#uploadify").uploadify({ 'uploader' : '/xxx/xxx/uploadify.swf', 'script' : '/xxx/xxx/xxx.php', 'scriptData' : {'PHPSESSID' : '= session_id() ?>'}, ....
或者:
$("#uploadify").uploadify({ 'uploader' : '/xxx/xxx/uploadify.swf', 'script' : '/xxx/xxx/xxx.php?PHPSESSID== session_id() ?>', ...
不过谁能告诉我Flash的Cookies要怎么清除啊。。因为这个原因调试过程中一直困难重重。哈哈。。实在太笨了
这是今天解决的的一个问题,哈哈不过 我发现flash里只传PHPSESSID参数,赋值为空也可以……