回答
這裏是源:
代碼:
<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm(os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(|\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(|\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg(g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|)|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
header('Location: http://detectmobilebrowser.com/mobile');
?>
謝謝你,這是我見過的最大的條件之一,但它很簡單! – Abs 2010-11-07 13:48:02
HTTP_USER_AGENT可能是僞造的嗎? – 2015-05-25 12:54:47
真棒!好的答案=) – 2015-06-01 07:06:31
沒有可靠的方法。您也許可以查看user-agent string,但這可能是欺騙或省略。或者,您可以使用GeoIP服務來查找客戶端的IP地址,但同樣可以輕鬆繞過此操作。
GeoIP不會真的有所幫助。即使你可以確定他們的IP屬於移動網絡,他們也可以將連接綁定到臺式計算機上。如果它不是一個移動網絡,你真的沒有任何設備可以通過Wi-Fi連接。你也有維護IP範圍的全球數據庫的問題。使用用戶代理,即使它不完美,我會認爲更可靠。這不是因爲服務錯誤的瀏覽器內容真的是一個安全問題,所以誰在乎?如果有人欺騙UA,他們可能已經知道他們正在爲自己做些什麼。 – Mike 2015-11-01 02:37:28
我在PHP寫this script to detect a mobile browser。
該代碼根據用戶代理字符串通過preg_match()檢測用戶經過數百次測試後僅在移動設備用戶代理字符串中找到的單詞來檢測用戶。它在所有當前移動設備上都具有100%的準確性,並且我正在更新它以支持更多的移動設備。該代碼被稱爲isMobile和如下:
function isMobile() {
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
您可以使用它像這樣:
// Use the function
if(isMobile()){
// Do something for only mobile users
}
else {
// Do something for only desktop users
}
將用戶重定向到您的移動網站,我這樣做:
// Create the function, so you can use it
function isMobile() {
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
// If the user is on a mobile device, redirect them
if(isMobile()){
header("Location: http://m.yoursite.com/");
}
讓我知道你是否有任何問題和祝你好運!
@羅伯特哈維 - 我很困惑。他們都問基本相同的事情,所以我應該怎麼做,除了回答這個問題?告訴他們每次使用別的東西?我新來這裏所以我不知道如果我應該鏈接到第一個答案? – 2012-06-13 03:42:58
這個關鍵字「平板電腦」在一些IE8(PC)頭文件中產生了一個問題,這些頭文件有「Tablet PC 2.0」的響應 – 2013-10-29 15:55:34
爲什麼使用函數來存儲條件而不是簡單的變量並執行if($ isMobile){ }'? – D4V1D 2016-01-14 22:10:10
PHP device detection from 51Degrees.com確實如你所願 - 檢測移動設備和與檢測到的設備相關的各種屬性。使用簡單,無需維護。設置完成4個簡單步驟:
- 從http://sourceforge.net/projects/fiftyone/下載Zip文件。
- 將文件解壓縮到PHP服務器中的目錄中。
- 然後將下面的代碼添加到您的PHP頁面:
- 所有可用的設備的信息將被包含在$ _51d陣列:
require_once 'path/to/core/51Degrees.php';
require_once 'path/to/core/51Degrees_usage.php';
if ($_51d['IsMobile'])
{
//Start coding for a mobile device here.
}
51Degrees設備檢測器不使用正則表達式進行檢測。只有HTTP標頭的重要部分用於匹配設備。這使得該解決方案成爲最快(平均硬件每秒檢測500萬次)和最準確(99.97%準確率),因爲每週都會向數據庫添加數百個新設備(支持的設備類型包括控制檯,智能電視,電子閱讀器,平板電腦等)。
軟件是在Mozilla公共許可證2下分發的開源軟件,與商業和開源項目兼容。作爲獎勵51Degrees解決方案還包含一個補充PHP image optimiser,可以自動調整圖像的移動設備的大小。
默認51Degrees PHP設備檢測器使用免費的Lite數據文件,其中包含30000多個設備和50個屬性。 Lite文件每3個月更新一次。如果您希望獲得有關請求移動設備的更高級別的詳細信息,則可以使用Premium和Enterprise數據文件。 Premium包含超過70000個設備,每個設備每週更新100個屬性。企業每天更新,包含150000多個設備,每個設備有150個屬性。
該軟件是煩人的。不支持IIS,沒有PHP只有庫。 – Tschallacka 2016-04-14 07:21:06
我發現mobile detect是非常簡單的,你可以只使用isMobile()
功能:)
我喜歡這個課程似乎會定期更新。 [最新版本](https://github.com/serbanghita/Mobile-Detect/releases)24天前本評論。 – showdev 2018-01-11 21:44:17
你只需要包括user_agent.php
文件可以從Mobile device detection in PHP頁面中找到並使用下面的代碼。
<?php
//include file
include_once 'user_agent.php';
//create an instance of UserAgent class
$ua = new UserAgent();
//if site is accessed from mobile, then redirect to the mobile site.
if($ua->is_mobile()){
header("Location:http://m.codexworld.com");
exit;
}
?>
我想知道,到現在爲止,爲什麼有人沒有公佈接受答案的使用implode()
的稍微改變,以讓代碼的可讀性更好。所以這裏有雲:
<?php
$uaFull = strtolower($_SERVER['HTTP_USER_AGENT']);
$uaStart = substr($uaFull, 0, 4);
$uaPhone = [ // use `= array(` if PHP<5.4
'(android|bb\d+|meego).+mobile',
'avantgo',
'bada\/',
'blackberry',
'blazer',
'compal',
'elaine',
'fennec',
'hiptop',
'iemobile',
'ip(hone|od)',
'iris',
'kindle',
'lge ',
'maemo',
'midp',
'mmp',
'mobile.+firefox',
'netfront',
'opera m(ob|in)i',
'palm(os)?',
'phone',
'p(ixi|re)\/',
'plucker',
'pocket',
'psp',
'series(4|6)0',
'symbian',
'treo',
'up\.(browser|link)',
'vodafone',
'wap',
'windows ce',
'xda',
'xiino'
]; // use `);` if PHP<5.4
$uaMobile = [ // use `= array(` if PHP<5.4
'1207',
'6310',
'6590',
'3gso',
'4thp',
'50[1-6]i',
'770s',
'802s',
'a wa',
'abac|ac(er|oo|s\-)',
'ai(ko|rn)',
'al(av|ca|co)',
'amoi',
'an(ex|ny|yw)',
'aptu',
'ar(ch|go)',
'as(te|us)',
'attw',
'au(di|\-m|r |s)',
'avan',
'be(ck|ll|nq)',
'bi(lb|rd)',
'bl(ac|az)',
'br(e|v)w',
'bumb',
'bw\-(n|u)',
'c55\/',
'capi',
'ccwa',
'cdm\-',
'cell',
'chtm',
'cldc',
'cmd\-',
'co(mp|nd)',
'craw',
'da(it|ll|ng)',
'dbte',
'dc\-s',
'devi',
'dica',
'dmob',
'do(c|p)o',
'ds(12|\-d)',
'el(49|ai)',
'em(l2|ul)',
'er(ic|k0)',
'esl8',
'ez([4-7]0|os|wa|ze)',
'fetc',
'fly(\-|_)',
'g1 u',
'g560',
'gene',
'gf\-5',
'g\-mo',
'go(\.w|od)',
'gr(ad|un)',
'haie',
'hcit',
'hd\-(m|p|t)',
'hei\-',
'hi(pt|ta)',
'hp(i|ip)',
'hs\-c',
'ht(c(\-| |_|a|g|p|s|t)|tp)',
'hu(aw|tc)',
'i\-(20|go|ma)',
'i230',
'iac(|\-|\/)',
'ibro',
'idea',
'ig01',
'ikom',
'im1k',
'inno',
'ipaq',
'iris',
'ja(t|v)a',
'jbro',
'jemu',
'jigs',
'kddi',
'keji',
'kgt(|\/)',
'klon',
'kpt ',
'kwc\-',
'kyo(c|k)',
'le(no|xi)',
'lg(g|\/(k|l|u)|50|54|\-[a-w])',
'libw',
'lynx',
'm1\-w',
'm3ga',
'm50\/',
'ma(te|ui|xo)',
'mc(01|21|ca)',
'm\-cr',
'me(rc|ri)',
'mi(o8|oa|ts)',
'mmef',
'mo(01|02|bi|de|do|t(\-| |o|v)|zz)',
'mt(50|p1|v)',
'mwbp',
'mywa',
'n10[0-2]',
'n20[2-3]',
'n30(0|2)',
'n50(0|2|5)',
'n7(0(0|1)|10)',
'ne((c|m)\-|on|tf|wf|wg|wt)',
'nok(6|i)',
'nzph',
'o2im',
'op(ti|wv)',
'oran',
'owg1',
'p800',
'pan(a|d|t)',
'pdxg',
'pg(13|\-([1-8]|c))',
'phil',
'pire',
'pl(ay|uc)',
'pn\-2',
'po(ck|rt|se)',
'prox',
'psio',
'pt\-g',
'qa\-a',
'qc(07|12|21|32|60|\-[2-7]|i\-)',
'qtek',
'r380',
'r600',
'raks',
'rim9',
'ro(ve|zo)',
's55\/',
'sa(ge|ma|mm|ms|ny|va)',
'sc(01|h\-|oo|p\-)',
'sdk\/',
'se(c(\-|0|1)|47|mc|nd|ri)',
'sgh\-',
'shar',
'sie(\-|m)',
'sk\-0',
'sl(45|id)',
'sm(al|ar|b3|it|t5)',
'so(ft|ny)',
'sp(01|h\-|v\-|v)',
'sy(01|mb)',
't2(18|50)',
't6(00|10|18)',
'ta(gt|lk)',
'tcl\-',
'tdg\-',
'tel(i|m)',
'tim\-',
't\-mo',
'to(pl|sh)',
'ts(70|m\-|m3|m5)',
'tx\-9',
'up(\.b|g1|si)',
'utst',
'v400',
'v750',
'veri',
'vi(rg|te)',
'vk(40|5[0-3]|\-v)',
'vm40',
'voda',
'vulc',
'vx(52|53|60|61|70|80|81|83|85|98)',
'w3c(\-|)',
'webc',
'whit',
'wi(g |nc|nw)',
'wmlb',
'wonu',
'x700',
'yas\-',
'your',
'zeto',
'zte\-'
]; // use `);` if PHP<5.4
$isPhone = preg_match('/' . implode($uaPhone, '|') . '/i', $uaFull);
$isMobile = preg_match('/' . implode($uaMobile, '|') . '/i', $uaStart);
if($isPhone || $isMobile) {
// do something with that device
} else {
// process normally
}
function isMobile(){
if(defined(isMobile))return isMobile;
@define(isMobile,(!([email protected](@$_SERVER['HTTP_USER_AGENT']))?0:
(
preg_match('/(android|bb\d+|meego).+mobile|silk|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm(os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i'
,$HUA)
||
preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(|\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(|\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg(g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|)|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i'
,$HUA)
)
));
}
echo isMobile()?1:0;
// OR
echo isMobile?1:0;
function isMobileDev(){
if(isset($_SERVER['HTTP_USER_AGENT']) and !empty($_SERVER['HTTP_USER_AGENT'])){
$user_ag = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(Mobile|Android|Tablet|GoBrowser|[0-9]x[0-9]*|uZardWeb\/|Mini|Doris\/|Skyfire\/|iPhone|Fennec\/|Maemo|Iris\/|CLDC\-|Mobi\/)/uis',$user_ag)){
return true;
}else{
return false;
};
}else{
return false;
};
};
簡單,你可以按照鏈接。它非常簡單並且非常易於使用。我正在使用這個。它的工作正常。
使用這樣
//include the file
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;
// Any mobile device (phones or tablets).
if ($detect->isMobile()) {
//do some code
}
// Any tablet device.
if($detect->isTablet()){
//do some code
}
你也可以使用第三方API通過用戶代理字符串做設備檢測。其中一項服務是useragentinfo.co。只需註冊並獲得您的API令牌和下面是你如何讓通過PHP的設備信息:
<?php
$useragent = $_SERVER['HTTP_USER_AGENT'];
// get api token at https://useragentinfo.co/
$token = "<api-token>";
$url = "https://useragentinfo.co/api/v1/device/";
$data = array('useragent' => $useragent);
$headers = array();
$headers[] = "Content-type: application/json";
$headers[] = "Authorization: Token " . $token;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status != 200) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
}
curl_close($curl);
echo $json_response;
?>
這裏是樣本響應,如果訪問者使用的是iPhone:
{
"device_type":"SmartPhone",
"browser_version":"5.1",
"os":"iOS",
"os_version":"5.1",
"device_brand":"Apple",
"bot":false,
"browser":"Mobile Safari",
"device_model":"iPhone"
}
這個工程!這個簡單的腳本似乎是我發現的最好的腳本之一:(直到現在)它是唯一可以檢測到我的華碩ZenPad平板電腦的腳本!但注意:他們將$ url更改爲[https://useragentinfo.co/device](https://useragentinfo.co/device),請參閱他們的頁面[https://useragentinfo.co](https:// useragentinfo .co):它給bash代碼執行curl,但實際上你可以用你的PHP代替這個。但是,您應該省略「Authorization:Token ..」這一行,因爲它似乎不再需要了(並且我看不到獲取該API密鑰的方法)。 – 2017-07-25 22:16:35
沒有得到迴應。只是顯示{} 我認爲API令牌是需要的,你可以請指導我如何生成令牌。 – 2017-08-23 11:46:07
$ data = array('user_agent'=> $ useragent); 它應該是:$ data = array('useragent'=> $ useragent); – 2017-08-23 12:25:22
<?php //-- Very simple way
$useragent = $_SERVER['HTTP_USER_AGENT'];
$iPod = stripos($useragent, "iPod");
$iPad = stripos($useragent, "iPad");
$iPhone = stripos($useragent, "iPhone");
$Android = stripos($useragent, "Android");
$iOS = stripos($useragent, "iOS");
//-- You can add billion devices
$DEVICE = ($iPod||$iPad||$iPhone||$Android||$iOS||$webOS||$Blackberry||$IEMobile||$OperaMini);
if ($DEVICE !=true) {?>
<!-- What you want for all non-mobile devices. Anything with all HTML codes-->
<?php }else{ ?>
<!-- What you want for all mobile devices. Anything with all HTML codes -->
<?php } ?>
- 1. 檢測帶有javascript的移動設備的最簡單方法
- 2. 檢測移動設備
- 3. 檢測設備移動
- 4. navigator.userAgent檢測移動設備?
- 5. 檢測移動設備和重定向的最佳方法
- 6. 最簡單,最便宜的方式來啓動WPF測試
- 7. 如何檢測移動設備移動?
- 8. 簡單的方法來檢查用戶是否是移動設備?
- 9. 檢測移動設備,然後加入單獨的樣式表
- 10. 推薦的方式來檢測移動設備上的Ajax支持?
- 11. 移動設備被檢測爲非移動設備
- 12. 如何檢測設備的移動?
- 13. 檢測移動設備的Java
- 14. 移動設備上的語言檢測
- 15. 格式化移動設備上的自動檢測經緯度
- 16. 在mvc3中檢測移動設備的一些最佳做法
- 17. 檢測設備移動距離
- 18. 檢測一些移動設備
- 19. 檢測設備向前移動
- 20. 移動設備檢測問題
- 21. Rspec強制mobile_fu檢測移動設備
- 22. 移動設備檢測 - 網絡開發
- 23. Javascript - 檢測點擊移動設備
- 24. 檢測室內移動設備(J2ME)
- 25. 使用JavaScript檢測移動設備
- 26. 檢測窗口移動設備
- 27. DNN中的移動設備上的移動設備檢測和重新發射
- 28. PyUsb:檢測設備移除
- 29. 簡介javascript移動設備
- 30. 最簡單的方法來檢測PDF使用PHP加密
您可以在檢查屏幕分辨率的頁面中放入一個javascript,但這將是客戶端:http://www.howtocreate.co.uk/tutorials/javascript/browserwindow – thejh 2010-11-07 11:55:07
以下是您的解決方案:http:// code .google.com/p/php-mobile-detect2/ – 2011-04-19 17:09:16