请求高手帮助:登录验证后会点击某些页面会自动退到首页
本帖最后由 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="修改" />
<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浏览器的机制不熟悉的原因吧,本人初学,希望高手指点指点,跪谢了!!! 经过多次尝试,在360的兼容模式下可以,但是为什么就不能在急速模式下正常使用呢,如果说是所有页面都存在这个问题么还可以理解,可是只是部分页面就会出现这个问题,在兼容模式下就可以了。太神奇了。。。无语中啊……………… 问题已经解决:
经过仔细研究,是由于在360急速模式下加载页面是分段加载的,因此,调整视图页面JS/CSS等内容的加载顺序,再次再firefox下进行调试,保证每个JS/CSS能够加载到,就不会出现这个问题了。 maomao0508 发表于 2013-11-7 15:26 static/image/common/back.gif
问题已经解决:
经过仔细研究,是由于在360急速模式下加载页面是分段加载的,因此,调整视图页面JS/CSS等内 ...
好发现~~{:soso_e104:}
页:
[1]