maomao0508 发表于 2013-11-6 21:09:58

请求高手帮助:登录验证后会点击某些页面会自动退到首页

本帖最后由 maomao0508 于 2013-11-6 21:09 编辑

本人初学CI,遇到一个很奇怪的现象,个人能力有限,无法查找到问题原因,请高手帮帮忙,谢谢啦!
具体情况是:
用firefox、chrome、IE10均正常显示,功能正常。但使用360、世界之窗等浏览器,会出现在成功登录后点击某些页面会自动退出到首页(firefox、chrome、IE10 下不会),百思不得其解,还望高手指点:

代码如下:
一、CI 登录判断
1、自定义扩展类 Myislogin.php

function _is_mgr_login(){
            $CI = & get_instance();
            $CI->load->library('session');
            $this->_sess = $CI->session->userdata('_logsess');
            if(! empty($this->_sess) && $this->_sess == true){
                return true;
            }else{
                return false;
            }
}

2、扩展控制器 MY_Controller.php

class MY_Controller extends CI_Controller{
      protected $_data = array();

      function __construct(){
            parent::__construct();
            $this->load->library('form_validation');
            $this->load->library('myloadview');
            //加载验证类
            $this->load->library('myislogin');
            //调用验证方法,如果用户没登录将执行跳转
            if(!$this->myislogin->_is_mgr_login()){
                redirect(base_url('manager/login'));
                exit();
            }
}

二、在所有浏览器中,均可以正常访问的页面
1、控制器代码

//加载添加栏目视图
      public function additemform(){

            $data['title']='添加栏目';
            $data['h2'] = '添加栏目';
            $data['adminname'] = $this->_data['adminname'];
            $data['cate']=$this->item->getitem()->result();
            $this->myloadview->load_mgr_view('manager/item','additem',$data);
      }

2、视图页面additem_view.php

    <!--右侧内容开始-->
    <div class="right_content">
    <script type="text/javascript" src="<?=base_url();?>assets/js/My-jQuery.js"></script>
    <script>
      $(document).ready(function(){            
            $("#additem").click(function () { //“添加”按钮单击事件
                $.addform('<?=base_url();?>manager/item/additem','<?=base_url();?>manager/item/additemform','#itemadd','<?=base_url();?>manager/item');
            });
            $("#myreturn").click(function(){
                $.retbtn('管理栏目','<?=base_url();?>manager/item');
            });
      });
    </script>
    <h2><?=$h2?></h2>

         <div class="form">
         <form class="niceform" id="itemadd">

                <fieldset>

                  <dl>
                        <dt><label for="Item">所属栏目:</label></dt>
                        <dd>
                            <select size="1" name="ItemID" id="ItemList">
                            <?php if(empty($cate)){
                              echo '<option value="0" selected="selected">没有栏目,请先添加根栏目……</option>';
                            }else{
                              foreach($cate as $data):
                                    $str='';
                                    for($i=1;$i<$data->ItemLayer;$i++){
                                        $str=$str.' ';
                                    }
                                    $str=$str.$i.'-级栏目:';
                                    echo '<option value="'.$data->ItemID.'">'.$str.$data->ItemName.'</option>\n';
                              endforeach;
                           }?>
                            </select>
                        </dd>
                  </dl>

                  <dl>
                        <dt><label for="Name">栏目名称:</label></dt>
                        <dd><input type="text" name="ItemName" id="category" size="54" /></dd>                        
                  </dl>

                  <dl>
                        <dt><label for="Home">首页显示:</label></dt>
                        <dd>
                            <input type="radio" name="ShowAtHome" id="" value="1" checked="checked" /><label class="check_label">是</label>
                            <input type="radio" name="ShowAtHome" id="" value="0" /><label class="check_label">否</label>
                        </dd>
                  </dl>

                  <dl>
                        <dt><label for="EName">英文缩写:</label></dt>
                        <dd><input type="text" name="ItemEName" id="ecategory" size="54" /></dd>
                  </dl>

                  <dl>
                        <dt><label for="Remark">栏目简介:</label></dt>
                        <dd><textarea name="ItemRemark" id="remark" rows="5" cols="36"></textarea></dd>
                  </dl>

                  <dl>
                        <dt><label for="pic">栏目图片:</label></dt>
                        <dd><input type="file" name="ItemPic" id="picupload" /></dd>
                  </dl>

                  <dl class="submit">
                        <input type="button" name="submit" id="additem" value="添加" />   
                        <input type="button" name="myreturn" id="myreturn" value="返回" />
                  </dl>

                </fieldset>

         </form>
         </div>

   </div>
   <!--右侧内容结束-->

正常页面截图:视图页面additem_view.php
http://codeigniter.org.cn/forums/data/attachment/album/201311/06/204145ppfnffa30rnjpnsz.png
三、在360、世界之窗等浏览器中出现错误的页面
1、控制器代码

         //加载修改用户自己密码的表单
      public function resetpwdform(){
            $data['title']='修改密码';
            $data['h2']='修改密码';
            $data['adminname'] = $this->_data['adminname'];
            $data['adminid'] = $this->_data['adminid'];
            $this->myloadview->load_mgr_view('manager/admin','resetpwd',$data);
      }

2、视图页面resetpwd_view.php

<!--右侧内容开始-->
    <div class="right_content">
    <script type="text/javascript" src="<?=base_url();?>assets/js/My-jQuery.js"></script>
    <script>
      $(document).ready(function(){
            $("#resetpwd").click(function () { //“修改”按钮单击事件
                $.editpwd('<?=base_url();?>manager/admin/resetpwd','#resetadminpwd','<?=base_url();?>manager/logout');
            });
            $("#myreturn").click(function(){
                $.retbtn('后台首页','<?=base_url();?>manager/home');
            });
      });
    </script>
    <h2><?=$h2?></h2>

         <div class="form">
         <form class="niceform" id="resetadminpwd">

                <fieldset>
                  <input type="hidden" name="AdminID" readonly="true" value="<?=$adminid?>" />
                  <dl>
                        <dt><label for="PWD">旧 密 码:</label></dt>
                        <dd><input type="password" name="AdminPWDo" size="54" /></dd>                        
                  </dl>

                  <dl>
                        <dt><label for="PWD">新 密 码:</label></dt>
                        <dd><input type="password" name="AdminPWD" size="54" /></dd>                        
                  </dl>

                  <dl>
                        <dt><label for="PWD">确认密码:</label></dt>
                        <dd><input type="password" name="AdminPWDf" size="54" /></dd>                        
                  </dl>

                  <dl class="submit">
                        <input type="button" name="submit" id="resetpwd" value="修改" />&nbsp;&nbsp;&nbsp;&nbsp;
                        <input type="button" name="myreturn" id="myreturn" value="返回" />
                  </dl>

                </fieldset>

         </form>
         </div>

   </div>
   <!--右侧内容结束-->

该视图在firefox、ie10、chrome浏览器中的正常截图
http://codeigniter.org.cn/forums/data/attachment/album/201311/06/204845pogk7ylepjikkxbi.png
在360、世界之窗浏览器中,点击该页面后出错,之后跳转到登录窗口后的截图
http://codeigniter.org.cn/forums/data/attachment/album/201311/06/204845vanlq29m7nlnnral.png
正常登录窗口截图
http://codeigniter.org.cn/forums/data/attachment/album/201311/06/204845kdzglusvgbtdtys2.png

以上情况着实让我头大,好几天了尝试过以下几种方式,均不行:
1、换过控制器验证登录方式,直接改为在每个页面控制器中控制登录验证,不行!
2、去掉CI session改为PHP session 仍是一样的效果!
3、自定义视图加载类,改为控制直接加载,问题依旧!
同样的代码,同样的逻辑,搞不懂为什么会出现这种奇妙的问题,可能是对IE浏览器的机制不熟悉的原因吧,本人初学,希望高手指点指点,跪谢了!!!

maomao0508 发表于 2013-11-6 23:40:02

经过多次尝试,在360的兼容模式下可以,但是为什么就不能在急速模式下正常使用呢,如果说是所有页面都存在这个问题么还可以理解,可是只是部分页面就会出现这个问题,在兼容模式下就可以了。太神奇了。。。无语中啊………………

maomao0508 发表于 2013-11-7 15:26:22

问题已经解决:
经过仔细研究,是由于在360急速模式下加载页面是分段加载的,因此,调整视图页面JS/CSS等内容的加载顺序,再次再firefox下进行调试,保证每个JS/CSS能够加载到,就不会出现这个问题了。

Ahgigu 发表于 2013-11-7 16:42:04

maomao0508 发表于 2013-11-7 15:26 static/image/common/back.gif
问题已经解决:
经过仔细研究,是由于在360急速模式下加载页面是分段加载的,因此,调整视图页面JS/CSS等内 ...

好发现~~{:soso_e104:}
页: [1]
查看完整版本: 请求高手帮助:登录验证后会点击某些页面会自动退到首页