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

[讨论/交流] 请求高手帮助:登录验证后会点击某些页面会自动退到首页

[复制链接]
发表于 2013-11-6 21:09:58 | 显示全部楼层 |阅读模式
本帖最后由 maomao0508 于 2013-11-6 21:09 编辑

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

代码如下:
一、CI 登录判断
1、自定义扩展类 Myislogin.php
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
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、控制器代码
PHP复制代码
 
//加载添加栏目视图
        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
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

三、在360、世界之窗等浏览器中出现错误的页面
1、控制器代码
PHP复制代码
 
         //加载修改用户自己密码的表单
        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
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浏览器中的正常截图

在360、世界之窗浏览器中,点击该页面后出错,之后跳转到登录窗口后的截图

正常登录窗口截图


以上情况着实让我头大,好几天了尝试过以下几种方式,均不行:
1、换过控制器验证登录方式,直接改为在每个页面控制器中控制登录验证,不行!
2、去掉CI session改为PHP session 仍是一样的效果!
3、自定义视图加载类,改为控制直接加载,问题依旧!
同样的代码,同样的逻辑,搞不懂为什么会出现这种奇妙的问题,可能是对IE浏览器的机制不熟悉的原因吧,本人初学,希望高手指点指点,跪谢了!!!
 楼主| 发表于 2013-11-6 23:40:02 | 显示全部楼层
经过多次尝试,在360的兼容模式下可以,但是为什么就不能在急速模式下正常使用呢,如果说是所有页面都存在这个问题么还可以理解,可是只是部分页面就会出现这个问题,在兼容模式下就可以了。太神奇了。。。无语中啊………………
 楼主| 发表于 2013-11-7 15:26:22 | 显示全部楼层
问题已经解决:
经过仔细研究,是由于在360急速模式下加载页面是分段加载的,因此,调整视图页面JS/CSS等内容的加载顺序,再次再firefox下进行调试,保证每个JS/CSS能够加载到,就不会出现这个问题了。
发表于 2013-11-7 16:42:04 | 显示全部楼层
maomao0508 发表于 2013-11-7 15:26
问题已经解决:
经过仔细研究,是由于在360急速模式下加载页面是分段加载的,因此,调整视图页面JS/CSS等内 ...

好发现~~{:soso_e104:}

本版积分规则