如何使用PHP仅从指定的IP访问网站

时间:2010-07-20 06:07:07

标签: php

我只需要从特定的IP地址访问网站。

这是否可以使用PHP。

该项目正在开发中,有些人使用它并说“网站不好”。所以

我喜欢避免那种事情。这就是我需要这个解决方案的原因。

3 个答案:

答案 0 :(得分:3)

试试这个:

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

else 
   echo "user";

检查用户的ip并执行操作。

答案 1 :(得分:2)

我建议使用.htaccess文件,而不是将其添加到您的php代码中:

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”文件放入您网站的root-dir即可。然后每个人都会被重定向到包含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

答案 2 :(得分: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'];}