我有一個完整的瀏覽器和jQuery Mobile界面的網站,用戶可以在兩者之間切換。他們的偏好存儲在一個cookie中。默認情況下,該網站向訪問者提供完整版本,而不是爲偏好設置cookie,但爲了使現代智能手機用戶更好,我希望他們的默認設置爲JQM。所以,我在我的控制器基類的構造函數的代碼:檢測支持cookie和jQuery Mobile的智能手機/平板電腦瀏覽器
class BaseController
{
protected $mobile; // must be 0 or 1, cookies can't handle boolean 'false'
public function __construct()
{
if (isset($_COOKIE['mobile']))
{
$this->mobile = $_COOKIE['mobile'];
}
else
{
$this->mobile = $this->isSmartphoneWithCookies();
setcookie("mobile", $this->mobile, time() + 7776000, '/', ''); // 90 days
}
}
private function isSmartphoneWithCookies()
{
$SMARTPHONE_WITH_COOKIES = "android.+mobile|blackberry|ip(hone|od)|opera m(ob|in)i";
return preg_match("/$SMARTPHONE_WITH_COOKIES/i", $_SERVER['HTTP_USER_AGENT']) ? 1 : 0;
}
// the rest of my controller class....
}
在這裏,我喜歡速度,準確性,所以我不是在尋找一個更慢,跟上時代的查詢服務,如下建議:Simple Smart Phone detection
只是一個快速提示,訪問者擁有當前支持cookies和JQM的頂級智能手機/平板電腦瀏覽器之一。
有人可以建議改善我的$ SMARTPHONE_WITH_COOKIES嗎?或者將我指向符合我的用例的UA簽名集合?具體來說,黑莓手機在名單上安全嗎?我忽略了一個流行的瀏覽器嗎?
良好的信息:MobileESP項目中的DetectTierIphone()函數可能證明是可行的。關於客戶端JQM檢測的鏈接是無用的,不是這樣,我不希望在沒有cookie的情況下每次請求進入時都會重定向頁面。當然,有人必須知道這四類瀏覽器是否支持cookies。 – 2012-08-13 19:53:02