2010-07-20 56 views
1

我只需要從特定IP地址訪問站點。如何僅使用PHP訪問指定IP的網站

這是可能使用PHP。

該項目正在開發中,一些人使用它,並說「該網站不好」。所以

我喜歡避免那種事情。這就是爲什麼我需要這個解決方案。

回答

3

試試這個:

if ($_SERVER['REMOTE_ADDR'] == "x.x.x.x") 
    echo "admin"; 

else 
    echo "user"; 

它會檢查用戶的IP和做動作。

+0

有時REMOTE_ADDR給出的IP地址是無效的(例如,由代理通過),這樣你就可以檢查使用HTTP_CLIENT_IP等(見下文片段)。雖然這些方法都不能檢測IP欺騙者。 – ina 2010-07-20 07:39:25

0

您可以使用$ _SERVER變量來檢查源是否來自您所限制的IP。下面是一些有用的功能段($ S就是$ _ SERVER):

function gethostname($ip){ 
return gethostbyaddr($ip);} 

function gethostnamepretty($ip){ 
$host=gethostbyaddr($ip); 
$host=explode('.',$host); 
$max=count($host); 
return $host[$max - 2];} 

function getRawRealIP($s){ 
if (!empty($s['HTTP_CLIENT_IP'])) //check ip from share internet 
{ 
    $ip=$s['HTTP_CLIENT_IP']; 
} 
elseif (!empty($s['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy 
{ 
    $ip=$s['HTTP_X_FORWARDED_FOR']; 
} 
else 
{ 
    $ip=$s['REMOTE_ADDR']; 
} 
return $ip;} 

function checkIP($ip){ 
return long2ip(ip2long($ip));} 

function useragent($s){ 
return $s['HTTP_USER_AGENT'];} 
+0

HTTP_CLIENT_IP? – 2010-07-20 06:14:37

2

我會建議使用的,而不是添加這對你的PHP代碼.htaccess文件:

RewriteEngine On 
RewriteBase /
# IPs that are still allowed to view everything 
RewriteCond %{REMOTE_ADDR} !^213.123.39.12$ [NC] 
RewriteRule !^(noentry_image.jpg|favicon.ico)$ sorry_stay_out.html [L] 

只是把將「.htaccess」文件放入您的網站的根目錄中。然後,所有人都將被重定向到包含noentry_image.jpg的sorry_stay_out.html頁面。

來自被允許的IP的所有訪問者都會正常看到該網站。您可以根據需要隨時重複使用不同IP的「RewriteCond%{REMOTE_ADDR}!^ 213.123.39.12 $ [NC]」行,以添加其他IP。

替代與正好擋住:

order allow,deny 
allow from 62.57.16.192 
allow from 72.232.56.154 
deny from all