2015-07-03 33 views
0

我的問題是:我需要限制訪問另一個國家(如日本)的人。因爲我這樣做,日本沒有人可以去我的網站?我如何限制我的頁面訪問? Symfony2

+0

你應該實現一個事件監聽器監聽控制器事件做你的邏輯 參考 http://stackoverflow.com/questions/12553160/getting-visitors-country - 從 - 他們-IP 和 http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html –

回答

0

使用http://ipinfo.io/ API。代碼如下:(PHP)

$allowed_countries = array("IN", "US", ...); 
$country = file_get_contents("http://ipinfo.io/{$_SERVER['REMOTE_ADDR']}/country"); 
if(!in_array($country, $allowed_countries)) 
{ 
    echo 'Restricted'; //or any error message. 
} 
+0

緩存的IP地址(或將它們存儲在一個數據庫),使之前檢查你的緩存(或DB)每次通話都可以加快呼叫。 – qooplmao

1

您必須檢測用戶的IP和用戶重定向到一個錯誤頁面,如果該IP是來自日本。

一個很好的捆綁於檢測用戶的IP可以在這裏找到:

https://github.com/aferrandini/Maxmind-GeoIp

要阻止一次你能做到這定義方法onKernelRequest一個聽者裏面的IP檢查你的網頁。這裏可以看到一個例子: http://symfony.com/doc/2.3/cookbook/service_container/event_listener.html#request-events-checking-types

不要忘記在每個bundle中的services.yml文件中註冊監聽器。

的另一種方法來檢測日本用戶可以解析從瀏覽器接收用戶代理並解析它,它很可能包含「JA」或「JP」作爲語言標記。