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;
}
我有上述代碼塊來確定是否加載移動或Web視圖。CodeIgniter中的執行順序
預期執行的順序:
- 如果M2W設置,設置負載網絡Cookie(這是IS_MOBILE函數被調用
- IS_MOBILE功能做過認爲負載網絡Cookie已定並加載桌面版本
執行的實際順序:
- 如果M2W是set,load-web cookie被調用來設置,但是is_mobile函數沒有看到它的設置,因此桌面版本沒有加載
- 在is_mobile函數返回true之後設置cookie,我檢查我的瀏覽器cookie並觀察到cookie實際上已設置,但沒有在預期的時間
我沒有正確地做什麼?
您正在展示課程,但我們也需要看看過程。 –
只是一個想法,但你可以嘗試一個響應式設計,而不必爲此而煩惱。同樣,當每個瀏覽器都嘗試幾乎相同並基本無法區分時,通過使用者檢測是毫無意義的。 – Amelia
@mamdouh請求被定向到索引。PHP文件加載必要的代碼點火器庫並加載相應的控制器,我使用codeigniter框架,在這種情況下,構造函數幾乎是入口點,除非我不明白你的意思。 – kayfun