這件事很久以前在PC上痛苦過一次
想不到事隔多年在手機又是一樣的問題
而且比PC更麻煩!PC還可以放上下載連結請使用者下載
flash lite連想下載也辦不到!只能準備低階版本或用php代替
手機的flash lite也不像PC的瀏覽器一樣簡單可以查詢版本
只能透過各個機種的型號來辦別
這邊倒是有人已經寫好判別有沒有安裝flash的function可以直接使用
不過光是判別“有沒有”並不是今天的需求
終於在這邊找到更理想的解決方案
拖很多熱心測試好心人的福
我只要下載CSV就可以放到DB裡做查詢了!
只有一點點美中不足的是下載下來的CSV需要作一點更改
把所有空白的部份都填上NULL或0才能正常載入到DB中
參考上面兩篇文章後的成品
大致上就沒有什麼問題了!
function:
/** * Flash対応判定 */ function isEnableFlash($agent) { if (preg_match('/^J\\-PHONE|MOT\\-/', $agent)) { // J-PHONE, Vodafoneの一部【NG】 return false; } elseif (preg_match('/^Vodafone/', $agent) && !preg_match('/SH|SHf|SE\\//', $agent)) { // Vodafone【一部機種以外はNG】 return false; } elseif (preg_match('/^SoftBank/', $agent) && preg_match('/\\/70[0-9]|805SC/', $agent)) { // SoftBank【一部機種のみNG】 return false; } elseif (preg_match('/^Mozilla\\/5\\.0 \\(iPhone/', $agent)) { // Softbank iPhone【NG】 return false; } elseif (preg_match('/^DoCoMo\\/1\\.0\\//', $agent) && !preg_match('/[A-Z]{1,2}50[56]i/', $agent)) { // DoCoMo mova【505i, 506i以外はNG】 return false; } elseif (preg_match('/^DoCoMo\\/2\\.0\\ /', $agent)) { // DoCoMo FOMA【一部機種のみNG】 if (preg_match('/[NP]200[12]|[FN]2051|210[12]V|N2701|NM850iG|F880iES|N600i|L60[0-2]i/', $agent)) { return false; } } elseif (preg_match('/UP\\.Browser/', $agent)) { // au【HTTP_X_UP_DEVCAP_MULTIMEDIAの13桁目で判別】 if (!isset($_SERVER["HTTP_X_UP_DEVCAP_MULTIMEDIA"]) || !substr($_SERVER["HTTP_X_UP_DEVCAP_MULTIMEDIA"], 12, 1)) { return false; } } $column = "Flash_version"; $tbl = "mtb_ketai_master"; $where = "agent = '".$agent."'"; $ketaiinfo = $this->select($column,$tbl,$where); if($ketaiinfo[0]["Flash_version"]<2) return false; // その他はPC等も含めOKと想定 return true; } |
套用:
//Flash対応判定 $isEnableFlash = $userObj->isEnableFlash($_SERVER['HTTP_USER_AGENT']); $smarty->assign("isEnableFlash",$isEnableFlash); |