SWFUpload session丢失问题

在使用swfupload上传文件的时候,老是绕不过登录验证。查了一下GOOGLe,没查到,问了百度,他告诉我答案:

swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有post过来的session_id,那么就用函数session_id( $_POST[‘PHP_SESSIONID’])指定一下。

上传页的JS里面,可以获取当前的SESSION_ID的。

例如上传页的JS中:

post_params: {“PHPSESSID”: “<?php echo session_id(); ?>”},

在验证的判断页中:

if (isset($_POST[“PHPSESSID”])) {
session_id($_POST[“PHPSESSID”]);
}

(这一段是网上的注释:在带有Session验证的网站后台中SWFUpload无法正常工作,这是因为SWFUpload在上传时相当于重新开辟了一个新的Session 进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来“找回”其应有的Session。)

转于:http://jiuxiangpro.blog.sohu.com/143884350.html

解决 KindEditor SWFUpload 批量上传检测用户登录状态的问题

使用KindEditor时遇到个小问题,在给 泡泡站长网 (v2版 末上线)开发 用户发表文章 的功能时,KindEditor 批量上传图片失败。

经过百度搜索发现是 #SWFUpload# 无法读取cookie的原因,既然问题找到了就想办法解决呗。又经过一番百度搜索,找到#KindEditor#官方的解决方法

http://go.rritw.com/www.kindsoft.net/docs/option.html#extrafileuploadparams

我的解决方法:

var editor;
var editorSets = {

    themeType: 'default',
    urlType: 'absolute',
    cssPath: '/static/editor/iframe.css',

    uploadJson: '/article/add/upload/',
    allowImageUpload: true,
    allowFlashUpload: true,
    allowMediaUpload: true,
    allowFileUpload: true,

    allowFileManager: true,
    fileManagerJson: '/article/add/fileManager/',

    formatUploadUrl: true,
    fillDescAfterUploadImage: true,

    syncType: 'form',

    afterChange: function() {
        this.sync()
    },

    extraFileUploadParams: {
        user_id: '1',
        password: 'f49a77ef44205b1ed45f29'
    }
};

KindEditor.ready(function(K) {
    editor = K.create('#text', editorSets)
})

就是按官方提供的方法,在 editorSet 中添加extraFileUploadParams,我保存了一个user_id和password的密文,这两个参数会在上传文件时传到服务器端,以PHP为例可以使用$_REQUEST[‘user_id’]接收,下面是我服务器端的验证登录代码:

$user_id = isset($_REQUEST['user_id']) ? intval($_REQUEST['user_id']) : 0;
$password = isset($_REQUEST['password']) ? trim($_REQUEST['password']) : '';
$sql = "SELECT * FROM `pcb_user` WHERE `id` = ? LIMIT 1";
$data = $this->mysql->find($sql, array($user_id));
if (!$data || $data['status'] <= 0 || $data['password'] != $password)
    exit('登录用户才可以上传文件');

未经允许不得转载:SuperMan's blog » SWFUpload session丢失问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址