败给swfupload了

#1 anythink

swfupload  会变成一个新的 session_id  且在框架内 无法 设置 session_id() 导致了,现在在swfupload 内无法判断 登陆情况



何解?

2011-07-13 15:17:38

#2 anythink

就算我用cookie 传递过来了  也不能 session_id($_COOKIE['sid'])

2011-07-13 15:22:02

#3 anythink

IE 下面 倒是 SESSION 没丢  FF 下面 就成新访客了

2011-07-13 15:25:43

#4 anythink

SWF DEBUG: Event: uploadSuccess: File ID: SWFUpload_0_0 Response Received: true Data: Array
SWF DEBUG: (
SWF DEBUG:     [] => Array
SWF DEBUG:         (
SWF DEBUG:             [verifycode] =>
SWF DEBUG:         )
SWF DEBUG:
SWF DEBUG:     [uid] => 4
SWF DEBUG:     [domain] => anythink
SWF DEBUG:     [username] => 幻の羽翼
SWF DEBUG:     [admin] => 0
SWF DEBUG:     [tempid] => 9
SWF DEBUG: )


IE 下

2011-07-13 15:42:36

#5 anythink

糟糕 站长帮我 编辑下  把邮箱删掉。。。。

2011-07-13 15:42:58

#6 anythink

Data: Array
SWF DEBUG: (
SWF DEBUG: )

火狐下...  空了

if (isset($_COOKIE['blogs'])) {session_id($_COOKIE['blogs']); }
                session_start();
               
                print_r($_SESSION);
这样都没用

2011-07-13 15:43:34

#7 jake

要直接GET参数传session的ID过去,然后再session_id($_GET['session_id']);

因为flash里面算是一个独立的客户端,无法和浏览器通用COOKIE和SESSION。

2011-07-13 16:10:59

#8 anythink

可是  session_id  没用了 是不是 之前已经开启了 session_start() 了

2011-07-13 16:33:30

#9 anythink

你说这个问题还有救么

2011-07-13 16:33:49

#10 anythink

我先在实际可以给swfupload 传 sid,但是没办法设置成 传过来的sessionid

2011-07-13 16:35:00

#11 anythink

// 自动开启SESSION
if($GLOBALS['G_SP']['auto_session'])@session_start();

2011-07-13 16:42:17

#12 anythink

是不是得 停用这个功能?

2011-07-13 16:42:26

#13 anythink

不应该啊

2011-07-13 16:43:31

#14 anythink

session_name("blogs");
if(isset($_COOKIE['blogs'])) session_id($_COOKIE['blogs']);



我在 spRun();   之前就用 cookie 来存 sessionid 了  可是 ff下还是获取不到。。。。。

2011-07-13 16:44:14

#15 jake

只能把SESSIONID GET过去,不能通过COOKIE。(我前面就说过了。)

swfupload自己的例子也是GET过去的
session_start();那个最好在配置里面关了,在session_id(赋值);后再开

2011-07-13 17:24:30

#16 anythink

session_start() 如何关闭 在配置文件里面

2011-07-13 19:02:36

#17 jake

auto_session=false

2011-07-13 20:20:15

#18 anythink

我是说speedphp , php.ini 我咩有开

2011-07-13 22:15:50

#19 anythink

我找到了

2011-07-13 22:16:55

#20 anythink

汗,去掉后 更麻烦。。。。登陆验证神马的 全都米用了

2011-07-13 22:25:40

#21 jake

其实session_id(赋值);后也需要session_start();的,所以你直接在入口文件spRun();之前来session_id(赋值);就可以了。session_start();是在之后才会启动。

2011-07-13 22:34:57

#22 anythink

我就是这样 试的 可是没有效果。。。

2011-07-13 23:09:29

#23 anythink

我重新开了一个访问入口 upload.php

为什么访问的时候老提示我 由错误,请检查控制器目录下是否存在该控制器/动作。


[default_controller] => main
            [default_action] => index
            [url_controller] => c
            [url_action] => a
            [auto_session] =>
            [dispatcher_error] => spError('路由错误,请检查控制器目录下是否存在该控制器/动作。');
            [auto_sp_run] =>
            [sp_cache] => E:\server\htdocs\blog/tmp
            [sp_app_id] =>
            [controller_path] => E:\server\htdocs\blog/controller/systems/upload
            [model_path] => E:\server\htdocs\blog/model
            [url] => Array
                (
                    [url_path_info] =>
                    [url_path_base] => /blog/upload.php
                )


这是我print_r 的 $GLOBALS 信息


并且我已创建文件 controller\systemspload\main.php  

里面写了

class main  extends spController
{
        function index()
        {
                echo '这里是上传执行的位置';       
               
        }
}
?>

我访问的是  upload.php 这个入口

2011-07-13 23:23:51

#24 anythink

入口问题没解决, 但是session丢失问题解决了。。

if(isset($_POST['ssid'])) session_id($_POST['ssid']); //swfupload 是post 提交的ssid。
我多加了一个判断

2011-07-13 23:38:46

#25 anythink

我重新开了一个访问入口 upload.php

为什么访问的时候老提示我 由错误,请检查控制器目录下是否存在该控制器/动作。

老大给看看呗

2011-07-14 10:54:00

#26 jake

多入口的程序,可以参考
http://www.speedphp.com/release-dirs.html

2011-07-14 12:14:12

#27 anythink

我就是参考这个手册 配置的, 但是访问入口 没有找到 main index,我也是设置的

2011-07-14 21:57:59

#28 lhabc

我是这么做的,没问题啊   
  controller: $this->sessionid=session_id();
    tpl:                    upload_url: "<{spUrl c=upload a=up}>",
                    post_params: {"PHPSESSID": "<{$sessionid}>"},

2011-08-06 10:36:16

#29 jake

回复 28 lhabc


   :handshake好

2011-08-06 16:56:44