「php」判斷flash lite版本

LINEで送る
[`evernote` not found]

這件事很久以前在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);