Uff*_*ffo 19 php session jquery uploadify
我正在使用uploadify,我无法在我的php文件中设置会话,我的脚本如下所示:
$("#uploadify").uploadify({
'uploader' : '/extra/flash/uploadify.swf',
'script' : '/admin/uploads/artistsphotos',
'scriptData' : {'PHPSESSID' : '<?= session_id(); ?>'},
'cancelImg' : '/images/cancel.png',
'folder' : '/img/artists',
'queueID' : 'fileQueue',
'auto' : false,
'multi' : true,
'onComplete' : function(a, b, c, d, e){
},
'onAllComplete': function(event,data){
$bla = $('#art').find(':selected',this);
$fi = $bla.val();
$.ajax({
type: "POST",
url: "/admin/uploads/artistsphotosupload",
data: "artist="+$fi,
success: function(msg){
console.log(msg);
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
在PHP中如果我尝试:
$_SESSION['name'] = 'something';
Run Code Online (Sandbox Code Playgroud)
我无法在另一个文件中访问它.我有session_start(); 激活任何解决方案
小智 11
你无法解决这个问题,因为uploadify有自己的会话ID,由flash播放器创建.换句话说,Flash播放器以新用户的身份访问uploadify脚本并获得新会话.解决此问题的唯一方法是将当前页面session_id通过post传递给uploadify脚本.
通常,不会从POST读取会话ID.你可以这样做:
$_COOKIE['PHPSESSID'] = $_POST['PHPSESSID'];
session_start();
Run Code Online (Sandbox Code Playgroud)
小智 7
我找到了一个更容易实现的解决方案,特别是如果你已经有一个面向会话的PHP后端用于登录等等:
只需在jQuery语句中编写以下代码:
'script' : '/upload.php?<?= session_name(); ?>=<?= session_id(); ?>',
Run Code Online (Sandbox Code Playgroud)
这将神奇地附加您当前的会话名称和您的会话ID.
这可能有用但从安全角度来看确实是不好的做法.这将允许具有有效sessionID的任何人仅通过更改sessionid来模拟该会话.最好使用密钥(只有后端代码知道)对sessionid进行基本的同步加密,然后在upload.php脚本上对其进行解密.
| 归档时间: |
|
| 查看次数: |
19429 次 |
| 最近记录: |