用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4908|回复: 14
收起左侧

在这样下去我都打算放弃CI了。问题太奇怪。麻烦大神进来看

[复制链接]
发表于 2012-10-29 20:57:20 | 显示全部楼层 |阅读模式
我是用swfupload+ci的upload库上传。

在chrome浏览器下一切正常。

但是在IE7下就不正常。一上传就显示:upload error:302

奇怪的是,刷新页面,后台就自动退出登陆页面。估计是清空了cookies吧。我是用ci 的session类写的验证页面。大概内容如下:

                parent::__construct();
                if($this->session->userdata('logged_in')!== TRUE)
                {
                        redirect('login');//一刷新,就退出登陆页面,就说明$this->session->userdata('logged_in')!=TRUE了。
                }
                $this->load->driver('cache');
                $this->load->model('manager_model');

写入我是用下面方式写入的: 

                        $data=array(
                                'id'=>$obj->id,
                                'name'=>$obj->name,
                                'logged_in'=>TRUE
                                );
                        $this->session->set_userdata($data);


为什么上传错误后,一刷新页面就退出了呢。哪位大神帮我分析一下。在chrome一切正常。如果有机会,加我QQ:55967659,我远程演示给大家看下。

哎。。。。。。。。。。痛苦,郁闷,烦燥,!!!


我用的是ci 2.1.2版本。
 楼主| 发表于 2012-10-29 21:07:51 | 显示全部楼层
找到一篇资料。似乎就是这个问题,供大神们参考。

关于Yii SWFUpload多文件上传的常见问题
1. SWFUpload Flash与Yii Cookie的问题.
按照SWFUpload官方文档中的说明, 由于Flash中FileReference的Bug,导致当前浏览器中的Cookie并不会随着Flash请求一起发送,Yii无法通过Session 检测上传者的用户识别信息,SWFUpload 将提示302错误的信息,解决办法在入口文件index.php中加入


?if(isset($_POST['PHPSESSID'])) $_COOKIE['PHPSESSID'] = $_POST['PHPSESSID'];


?$yii = dirname(__FILE__) . '/../framework/yii.php';
   
...
   
if(isset($_POST['PHPSESSID']))
    $_COOKIE['PHPSESSID'] = $_POST['PHPSESSID'];
   
require_once($yii);
Yii::createWebApplication($config)->run();


CI中如何解决这个问题呢?
发表于 2012-10-29 21:18:23 | 显示全部楼层
这个你就是用纯PHP也有这问题,这是FLASH上传引起的,和CI半毛钱关系没有。

怎么解决,本论坛就有很多帖子讲解。
发表于 2012-10-29 21:25:26 | 显示全部楼层
swfupload 不会携带 sessionid 上传,你可以在参数formvalue里加上,或者用get的参数传递。
 楼主| 发表于 2012-10-29 21:47:46 | 显示全部楼层
大神帮帮忙吧。我急的烦燥死了。现在都不知道如何解决。传seesionid就行吗?我在论坛里搜索,可是找不到这方面资料。我现在还在找呢。刚才处理了一下。可以上传了。但是一刷新,还是退出到后台登陆页面。
发表于 2012-10-30 09:55:03 | 显示全部楼层
发表于 2012-10-30 09:55:57 | 显示全部楼层
在你放弃之前先搜一下论坛的上的帖子
发表于 2012-10-30 09:57:54 | 显示全部楼层
post_params: {"PHPSESSID": "v8ibf9e3jj4ijs1s405d6urgh1"}

使用POST传参,php中设置session_id($_POST['PHPSESSID']);
 楼主| 发表于 2012-10-30 18:52:34 | 显示全部楼层
我按上面方式做了。可是还不行。能否加我QQ:55967659.远程帮我处理一下。快两天了
 楼主| 发表于 2012-10-30 18:54:09 | 显示全部楼层
我在swfupload通过post传了sessionid。

然后按下面处理。还是不行

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller{

        public function __construct()
        {
                parent::__construct();
                if (isset($_POST["SSID"])) {
                        session_id($_POST["SSID"]);
                } else if (isset($_GET["SSID"])) {
                        session_id($_GET["SSID"]);
                }


                if($this->session->userdata('logged_in')!== 1)
                {
                        redirect('login');
                }

本版积分规则