通过flash / uploadify时无法识别会话

时间:2011-01-15 19:08:43

标签: php jquery flash session uploadify

我正在编写一个使用基于cookie的会话进行身份验证的应用程序。一切顺利,直到我尝试将uploadify jQuery插件集成到我的网站中。我需要uploadify将文件发送到我的upload.php文件。当我检查upload.php脚本中是否存在任何预先知道的会话变量时,我什么也得不到。我已经尝试了print_r($_SESSION)并获得了一个空数组。

我不确定这是我的php会话代码或我的jquery uploadify代码的问题。我两个都有点新鲜。

/**  INSIDE JQUERY **/
$('.fileUploadify').uploadify({
    'scriptData': {'filesUploaded':'1','PHPSESSID' : <?php echo json_encode(session_id()); ?>},
    ...


/**  UPLOAD.PHP **/
if(isset($_REQUEST['PHPSESSID'])) 
    session_id($_REQUEST['PHPSESSID']);

if(!isset($_GET['logout']) && isset($_SESSION['user']) && $_SESSION['ipadd'] == $_SERVER['REMOTE_ADDR']) {
    define('USERHASH',$_SESSION['user']);
    require_once('lib/ez_sql_core.php');
    require_once('lib/ez_sql_sqlite.php');
    require_once('lib/functions.php');
    $db = new ezSQL_sqlite('./'.USERHASH.'/','fileInformationBase.sqlite');
    $mdb = new ezSQL_sqlite('./','fileServMain.sqlite');

    $stats = $mdb->get_row("SELECT ID,bandwidthUsage,lastLogin,...
} else die('No no no');

upload.php每次都会返回'No no no`。我已经检查了会话ID,并且 正确地发送到upload.php。

在我的常规页面标题上,我没有遇到此问题,我只是使用session_start()启动授权部分,然后使用相同的if(isset($_SESSION['user']) && $_SESSION['ipadd] ...) {行,该行按预期工作。


修改

这是上面的jQuery脚本生成的代码

 'scriptData': {'filesUploaded':'1','PHPSESSID' :"m3vgn7j6a7nd3ckppnio1ln3e1" }

在upload.php脚本中放置echo $_REQUEST['PHPSESSID']打印出来

'sjojolnjtcutbomceh50os3kg4'

2 个答案:

答案 0 :(得分:0)

如果您告诉您的插件通过常规GET / POST参数发送会话ID,则必须在服务器上启用它。您应首先通过查看从浏览器发出的网络请求(Firefox + FireBug插件是一个不错的选择)来调试此操作,以查看您的会话ID是否到达服务器。

如果是,请考虑.htaccess:

php_flag        session.use_trans_sid           on       
php_flag        session.use_only_cookies        off  

答案 1 :(得分:0)

不知何故,flash看到的会话是旧的价值观。我不知道他们是否被缓存或者是什么。在任何情况下,我都必须通过删除所有SESSION cookie并重新开始来“刷新”系统。然后它选择了正确的值。希望这可以在将来节省一些人。