大部分網站的上傳文件功能都要求用戶登錄,而判斷用戶登錄狀態通常是用session標記。 php
如今流行flash上傳插件,優勢是顯示每一個文件上傳的進度條,可中途取消,暫停等等。 html
然而用flash上傳插件有個問題,那就是上傳的時候flash會丟失session,服務端會覺得是遊客而拒絕處理。 前端
解決辦法是有的,下面慢慢道來: 服務器
咱們知道,php裏啓用session,每一個session都會有一個sessionid做爲session文件標識,也就是說,當一個用戶訪問網頁的時候,php會自動給這個用戶建立一個session,而用戶每次訪問的時候,php會先判斷這個用戶有沒有sessionid,有的話就會根據sessionid去讀取以前存儲的session,也就是說一個sessionid對應一個用戶。而咱們使用flash上傳的時候,實際上php是將flash看成一個新的用戶,默認是沒有對應的sessionid的。
那麼咱們只要想辦法把sessionid這個鑰匙給flash,讓它帶到服務器上,服務器再根據這把鑰匙打開對應的session就好了,就好像是一根寬帶,用路由器撥號共享給多我的。 session
php端: 網站
<?php session_id($_REQUEST["sessid"]); session_start(); ?>前端:
<form> <input type=hidden name="sessid" value=<?php echo session_id();?>/> <input type=submit value="提交"/> </form>解釋:
咱們前段頁面裏,經過echo session_id(); 將咱們當前的session_id寫入表單,php端接收到sessid,而後在啓動session以前,先用session_id($sessid)來告訴服務器,咱們要取這個session_id對應的session。 spa
以uploadify爲例: 插件
只要在初始化的時候,在 formData : {"sessid":"<?php echo session_id();?>"} 便可將session_id傳給服務器。 code