2012-11-02 26 views
-1

我使用CakePHP的內置方法$this->RequestHandler->isMobile()來檢測移動設備,但是當我想使用桌面瀏覽器來嘗試我的應用時,它不起作用。所以我使用下面的代碼,因爲它的url以'm'開頭。例如「m.mywebsite.com」:PHP:如何檢測URL是否以'm。'開頭?

<?php 
    $url = explode('.', $_SERVER['SERVER_NAME']); 
    if($url[0] == 'm'){ 
     echo "Welcome to our mobile version"; 
    } 
    ?> 

但不知何故,當有子域的地址,如「m.trial.mywebsite2.com」另一臺服務器上測試也沒有工作。這種網址是否還有其他更好的檢測代碼?

+1

如果您將'echo $ url [0];'添加到您的代碼中,會返回什麼內容? – bergie3000

+0

在我的本地主機中,'m.localhost.com'返回'm'。但在另一臺服務器上,'m.trial.xxxxx.com'則返回「試用」。 – abdgstywn

回答

2

使用正則表達式,或只是strpos()它。

// Regular Expression 
if (preg_match('/^m\./', $_SERVER['SERVER_NAME']) { 
} 

// strpos() 
if (0 === strpos($_SERVER['SERVER_NAME'], 'm.')) { 
} 

你的情況聞起來有點不對勁$_SERVER['SERVER_NAME'],你應該真的給它​​檢查一下。

+0

你是對的,但我認爲最好使用'$ _SERVER ['HTTP_HOST']'而不是'$ _SERVER ['SERVER_NAME']' – abdgstywn

+0

屬性HTTP_HOST完全依賴請求/響應標題出現在$ _SERVER中,至少需要在服務器端進行適當的配置。小心使用它。 – Vicary

相關問題