2012-12-27 63 views
0

我選擇了與數據庫相同的移動設備,所以它無法獲取我的頁面/代碼,不知道它是一個好主意還是您有安妮的想法呢? ..header to mobile site and header to normal page

我想要做的是找出它是否是移動設備,或者它是否只是您登錄的瀏覽器。

function db_c() 
    { 
     $link = @mysqli_connect('localhost', '..', '..', '..'); 
     if(!$link) 
     { 
      die('Connect Error: ' . mysqli_connect_errno()); 
     } 
     mysqli_set_charset($link, "utf8"); 
     $this->mysqli = $link; 


     function detect_mobile($ua=null) { 
      $ua = ($ua) ? $ua : $_SERVER['HTTP_USER_AGENT'];  
      return (preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|playbook|sagem|sharp|sie-|silk|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $ua));  
     } 


     if(detect_mobile($ua)) { 
      header('Location: http://mobil.blabla.dk/'); 
     } 
     else{ 
      header('Location: http://www.blabla.dk/'); 
     } 
} 

錯誤她:

注意:未定義的變量:UA在第39行上警告/home/jesperbo/public_html/blabla.dk/inc/function_php/function.php:不能更改頭信息 - 已在(/home/jesperbo/public_html/blabla.dk/inc/function_php/function.php:39開始處輸出)/home/jesperbo/public_html/blabla.dk/inc/function_php/function.php line 43

line 39 is here:

if(detect_mobile($ua)) { 

線43是在這裏:

header('Location: http://www.blabla.dk/'); 

我試圖藉此在我手裏,但隨後在去上什麼都不會的頁面http://dk1.php.net/manual/en/function.ob-start.php

上顯示如果我有這樣做:

function detect_mobile($ua=null) { 
      $ua = ($ua) ? $ua : $_SERVER['HTTP_USER_AGENT'];  
      return (preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|playbook|sagem|sharp|sie-|silk|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $ua));  
     } 


     if(detect_mobile()) { 
      header('Location: http://mobil.blabla.dk/'); 
     } 
     else{ 
      header('Location: http://www.blabla.dk/'); 
     } 

你會看到它顯示是這樣的:

Denne webside哈日等循環播放 Websidenpåblabla.dk/harforårsagetfor mange omdirigeringer。在rydde的Dette kan muligvisløsesved用於dette網站eller ved tillade tredjepartscookies的餅乾。 Hvis dette ikkehjælper,ligger problemet muligvis i din serverkonfigurationen og ikke din computer。她的名字: Genindlæsdenne webside senere。 如果您有任何疑問,請與我們聯繫。 Fejl 310(net :: ERR_TOO_MANY_REDIRECTS):Der var for mange omdirigeringer。

http://billedeupload.dk/images/fOUIQ.png

所以,如果我花$ UA更好,但我最後一次在這裏展示:

希望你能幫助我:)

回答

0

更改行:

if(detect_mobile($ua)) { 

要:

if(detect_mobile()) { 

detect_mobile方法將提供用戶代理爲你,如果你不自己提供的。

1

要如果移動或定期,您應該檢測檢查http://detectmobilebrowsers.com/您可以在大多數編碼中下載檢測器。

請記住,這絕不是100%確定的。移動計算機上的用戶可以像常規瀏覽器一樣瀏覽。即使在移動瀏覽時,用戶也可能希望看到常規網站。

檢測是好的,但嘗試給用戶一個選擇。

標題已發送表示已輸出到瀏覽器。你可以使用輸出緩衝如ob_start();來捕獲所有輸出,所以這個問題不會發生。但更好的是確保沒有輸出。這也意味着在任何包含文件的<?php ?>標記之外沒有空格或新行。

+0

當你說漢堡只有在移動端或普通頁面時纔會被選中,你在想什麼? –

+0

當即時通訊使用我的手機瀏覽網站時,我經常會看到類似於您正在做的移動頁面。這些頁面通常包含較少的信息或選項。所以我想選擇在我的手機上使用常規網站。 –

+0

Oohhh ...這是dejligtpå學習新的東西:)和現在的作品fint :) 這顯然是我的天氣! :) –

0

首先,重定向需要在任何實際輸出之前完成。

在你的情況下,有一些內容已經發送到客戶端,這就是爲什麼你不能重定向用戶。的

所以不是做喜歡:

<? 
db_c(); 
detect_mobile(); 
// other stuff 
?> 

這樣做的:

​​

,並檢查如果用戶使用的桌面瀏覽器或自己的手機/平板電腦等使用這個類: php-mobile-detection

然後你就可以使用它像這樣:

include 'Mobile_Detect.php'; 
$detect = new Mobile_Detect(); 
if ($detect->isMobile()) { 
    // redirect here 
} 
+0

它也似乎是一個很好的選擇 –