2011-07-22 63 views
2

有几天我一直在努力使得只有某些访问我的家庭网站ips,因为我只希望我的家人能够访问该网站。生病需要你们的帮助。这是我得到了多少,如果IP不在数据库中,它将重定向到www.google.com。只允许某些ips访问我的“家庭网站”?

代码:

$ip =$_SERVER['REMOTE_ADDR']; 
$result = mysql_query('SELECT * FROM `ips` WHERE `ip`="' . $ip . '"'); 

if(mysql_affected_rows($link) < 0){ 
header('location:http://google.com'); 
} 

编辑:得到了什么,我可以使用不会更改计算机的MAC地址,这样的代码将需要表的变化和内部名称的想法。我将如何去做,所以当用户尝试访问我的网站时,它会检查计算机的mac地址是否在数据库中,否则会重定向到google.com。如果你使用Apache作为你的服务器,你可以改变httpd.conf配置文件中的目录节点的内容从YOUR_IP允许和所有拒绝

亲切的问候弗雷德里克

+0

IP是动态的东西。当您下次连接到网络时将分配一个新的IP地址 –

+3

您的家庭只有静态公有IP?哇! – Jacob

+2

你有问题,或者你只是炫耀你的代码? ;-P –

回答

0

。这通常是创建此类限制的更合适的地方。

请注意,< Directory/>的默认Apache访问是Allow from All。这意味着Apache将提供从URL映射的任何文件。用一个块如

<Directory /> 
    Order Deny,Allow 
    Deny from All 
    Allow from IP 
</Directory>

改变它,然后覆盖你想要访问的目录。

对于重定向部分,您可以将其添加到您的httpd.conf,以将403重定向到403 Forbidden错误。在进行更改后,请不要忘记重新启动网络服务器。

ErrorDocument 403 http://www.google.com

1

的mysql_affected_rows是INSERT,UPDATE或DELETE 使用此:

if(mysql_num_rows($result) == 0){ 
    header('location:http://google.com'); 
} 

你们为什么使用$链接变量,而不是$结果?

+0

代码现在看起来像这样:http://pastie.org/2252799 –

1

IP地址变化很频繁,所以他们可能有一天访问,接下来它将会不同,他们将失去特权。

通过创建登录系统,您将会变得更好。通过这种方式,他们可以从任何地方访问您想要共享的信息。

+0

他说他有静态IP。也就是说,创建一个登录系统无论如何是一个更好的主意。 –

+0

静态,我会假设,只能在家工作。但是使用登录系统,它可以从任何地方访问 – Ibu

+0

是的。就像我说的。 –

1

你也可以考虑试着用htaccess来做到这一点。退房stupid htaccess tricks

更好的方法可能是使用htaccess密码here's a free tool,这也是非常简单的设置。

此外,而不是检查受影响的行,你应该检查你的代码中返回的行数。看看PHP manual

3

我并不确定问题是什么,但是如果你想密码保护一个网站,并且你不想让你的用户生成另一个密码,你可以试试LightOpenID库。这样,您的家人就可以使用他们选择的OpenID标识符登录。你只需要保留他们的标识符列表。这大致是StackOverflow使用的认证系统。

至于OpenID帐户,如果您使用Google,Yahoo或其他许多网站,您已经拥有一个帐户。

+0

+1是的,为什么不使用用户和帐户来阻止坏人?你甚至可以设置你的家人使用谷歌帐户/ Twitter/Facebook登录到您的网站。 –