class Index extends CI_Controller {
private $data = array();
private $content_data = array();
public function __construct() {
parent::__construct();
if (isset($_GET['m2w'])) {
$stw = switch_to_web();
}
if (isset($_GET['w2m'])) {
$stm = switch_to_mobile();
}
// load mobile or desktop view
}
// Called within an helper function
function switch_to_web() {
return set_cookie('load-web', 'true', '86500');
}
function switch_to_mobile() {
return delete_cookie('load-web');
}
function is_mobile() {
// return true;
$CI = & get_instance();
if ($CI->input->cookie('load-web'))
return false;
$CI->load->library('user_agent');
if ($CI->agent->is_mobile()) {
return true;
}else
return false;
}
我有上面的代码块来确定是加载移动视图还是网络视图。
预期执行顺序:
- 如果设置了 m2w,则设置 load-web cookie(这是在调用 is_mobile 函数之前完成的
- is_mobile 函数看到 load-web cookie 已设置并加载桌面版本
实际执行顺序:
- 如果设置了 m2w,则调用 load-web cookie 进行设置,但是 is_mobile 函数没有将其视为已设置,因此未加载桌面版本
- 在 is_mobile 函数返回 true 后设置 cookie,我检查我的浏览器 cookie 并观察到 cookie 实际设置但未按预期设置
我做错了什么?