tags:

views:

45

answers:

3

Hi all,

I need to access a site only from a specific IP address.

Is that possible using PHP.

The project is under development and some people used that and say "The site is not good". So

i like to avoid that kind of things. That's why i need this solutin.

Thanks in advance

Fero

+3  A: 

try this:

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

else 
   echo "user";

it checks the ip of user and do the action.

Dobiatowski
Sometimes the IP address given by REMOTE_ADDR is not valid (example, passed from proxy), so you can check using HTTP_CLIENT_IP and others (see snippet below). None of these methods are able to detect IP spoofers, though.
ina
A: 

You can use $_SERVER variables to check if the source is from the IP you're limiting to. Here are some useful function snippets ($s is just $_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'];}
ina
HTTP_CLIENT_IP ?
Dobiatowski
+2  A: 

I would suggest to use a .htaccess file instead of adding this to your php-code:

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]

just put the ".htaccess" file into your root-dir of your website. Then everybody will be redirected to the sorry_stay_out.html page, that contains the noentry_image.jpg.

All visitors from the IP that is allowed will see the site as normal. You can repeat the line "RewriteCond %{REMOTE_ADDR} !^213.123.39.12$ [NC]" with different IPs as often as you want, to add additional IPs.

Alternative with just blocking:

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