败给swfupload了
发布于:2022-01-17 09:50:54
#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
#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