tempa 发表于 2010-4-18 16:43:06

session和frame问题,用了frame就收不到session了?

本帖最后由 tempa 于 2010-4-18 16:53 编辑

登录后根据session判断一下用哪个视图。

if(isset($_SESSION["ashell"])){
                        if("" != $_SESSION["ashell"]){
                                $this->load->view('/administrator/vmain');
                        }
                }else{
                        redirect(admin_url()."/adminlogin/");
                }

有session的话就进入vmain视图,这个视图用了frame

<frameset rows="80,*" cols="*" frameborder="no" border="0" framespacing="0">
<frame src="<?php echo admin_url().'/admin_top/';?>" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
<frameset cols="260,*" frameborder="no" border="0" framespacing="0">
    <frame name=menu src="<?php echo admin_url().'/admin_left/';?>" scrolling=yes>
        <frame name=main src="<?php echo admin_url().'/admin_right/';?>" scrolling=yes>
</frameset>
</frameset>
<noframes>
</noframes>

对应载入另三个控制器地址,其中top还是再判断一次session

if(isset($_SESSION["ashell"])){
                        if("" != $_SESSION["ashell"]){
                                $this->load->view('/administrator/vadmin_top');
                        }
                }else{
                        echo 'no shell';
                }

但是得到的结果却是no shell,为什么页面间传session就可以,用了frame后就得不到session了?

zycbob 发表于 2010-4-18 16:49:37

两者不是同一个session
$_SESSION["shell"]
$_SESSION["ashell"]

也许第二个确实是空值

tempa 发表于 2010-4-18 16:53:15

本帖最后由 tempa 于 2010-4-18 16:54 编辑

我手误了,都是一样的ashell,里面的判断语句写的是一样的,就是不明白,第一次判断到了session进入视图,再判断为什么就不认了?

zycbob 发表于 2010-4-18 16:58:35

那不应该的。呵呵,你再仔细检查下代码吧

tempa 发表于 2010-4-18 17:58:46

上网搜了一下,好像说是什么session丢失问题,用表单提交没什么,页面间或链接有时会出现。
然后我问个基础问题,CI的session_start(); 是在文件中么,还是要手动写呢?

jeongee 发表于 2010-4-18 18:05:56

你最好使用CI的session,用hex修改的session类库

tempa 发表于 2010-4-18 18:08:50

本帖最后由 tempa 于 2010-4-18 18:18 编辑

类库下载了,我想先用php写,然后再改成类库的,但是没想到就出问题了。

仔细检查了一下,果然是少包含了一个session_start();的页面,太马虎了。:Q

ahkxhyl 发表于 2010-11-1 16:58:11

学习了 我也在搞这个:curse:
页: [1]
查看完整版本: session和frame问题,用了frame就收不到session了?