我有一个带有完整浏览器和 jQuery Mobile 界面的网站,用户可以在两者之间切换。他们的偏好存储在 cookie 中。默认情况下,该站点向访问者提供完整版本,没有偏好 cookie,但为了让现代智能手机用户更好地使用它,我希望他们的默认值为 JQM。所以,我在我的基本控制器类的构造函数中有这段代码:
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....
}
在这里,我更喜欢速度而不是准确性,所以我不是在寻找更慢的、最新的查找服务,如这里建议的:简单的智能手机检测
只是快速表明访问者拥有支持 cookie 和 JQM 的当前顶级智能手机/平板电脑浏览器之一。
有人可以建议对我的 $SMARTPHONE_WITH_COOKIES 进行改进吗?或者将我指向适合我用例的 UA 签名集合?具体来说,将黑莓列入名单是否安全?我是否忽略了流行的功能浏览器?