Jan 172011
 

有些網站只開放給某個國家的人訪問,而這種網站太多了。方法有很多,例如用IP地址來識別。這也是最有效的辦法。不過這個方法需要具備比較完整的IP地址庫,而且要不斷更新。這樣一來維護就麻煩點。所以這次我用一個相對簡單的辦法,用一段PHP代碼來實現。

衆所周知,不同的國家使用的語言不一定相同,而同一語言可能在好幾個國家通用。於是,軟件也分語言類別,瀏覽器也不例外。中文用戶的瀏覽器有這幾種語言識別代碼:zh、zh-Hans、zh-Hant、zh-CN、zh-TW、zh-MO、zh-SG。最常用的是zh-CN、zh-TW、zh-MO、zh-SG。所以只要發現不是這幾個語言的就一律拒絕,或者只要看到是這些語言的就一律放行。

簡單的幾行就可以了:

<?php
$lang = explode(',',strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']));
if($lang[0]=='zh-cn' || $lang[0]=='zh-hk' || $lang[0]=='zh-tw' || $lang[0]=='zh-mo' || $lang[0]=='zh-sg' || $lang[0]=='zh-hans' || $lang[0]=='zh-hant' || $lang[0]=='zh') {
// 寫入你想要做的代碼A;
}
else {
// 寫入你想要做的代碼B;
}
unset($lang);
?>

以上的代碼是,只要遇到這些語言的就執行“你想要做的代碼A”,對於中文以外的用戶就執行“你想要做的代碼B”。

不過這樣做也是有缺點的,搜索引擎很有可能會被拒之門外。爲了防止拒絕掉搜索引擎,就需要加上判斷搜索引擎的代碼:

preg_match("/(Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla|Google)/i", $_SERVER['HTTP_USER_AGENT']

這樣一來,只要有搜索引擎訪問,這條代碼就會返回True。然後添加進去:

<?php
$lang = explode(',',strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']));
if((preg_match("/(Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla|Google)/i", $_SERVER['HTTP_USER_AGENT'])) || $lang[0]=='zh-cn' || $lang[0]=='zh-hk' || $lang[0]=='zh-tw' || $lang[0]=='zh-mo' || $lang[0]=='zh-sg' || $lang[0]=='zh-hans' || $lang[0]=='zh-hant' || $lang[0]=='zh') {
// 寫入你想要做的代碼A;
}
else {
// 寫入你想要做的代碼B;
}
unset($lang);
?>

這樣做之後,就等於打發走很多閑雜人等了。

 Posted by at 上午 12:15  Tagged with:

Sorry, the comment form is closed at this time.