只允许某些ip访问我的“家庭网站”


only allow certain ips to access my "family site"?

几天来,我一直在努力使某些ip访问我的家庭网站,因为我只想让我的家人能够访问该网站。我需要你们的帮助。这就是我所得到的,如果ip不在数据库中,它将重定向到www.google.com。

代码:

$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。

问候Fredrik

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

至于OpenID帐户,如果你使用谷歌、雅虎或许多其他网站,你已经有了一个。

mysql_affected_rows用于INSERT, UPDATE或DELETE使用:

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

为什么使用$link变量而不是$result?

IP地址变化非常频繁,所以他们可能有一天可以访问,第二天就会不同,他们将失去特权。

你最好创建一个登录系统。这样,他们就可以从任何地方访问您想要共享的信息。

您也可以考虑尝试使用htaccess来做到这一点。看看这些愚蠢的htaccess技巧。

一个更好的方法可能是使用htaccess密码这是一个免费的工具,也很容易设置

另外,您应该检查代码中返回的行数,而不是检查受影响的行。查看PHP手册

如果您使用Apache作为web服务器,您可以将httpd.conf配置文件中的目录节点内容更改为允许从YOUR_IP和拒绝从所有。这通常是创建此类限制的更合适的位置。

请注意,默认的Apache访问是允许来自所有人。这意味着Apache将提供从URL映射的任何文件。用像

这样的块来改变它
<Directory />
   Order Deny,Allow
   Deny from All
   Allow from IP
</Directory>

,然后为您想要访问的目录重写此。

对于重定向部分,您可以将此添加到您的httpd.conf重定向到403禁止错误的谷歌。修改完成后,不要忘记重新启动web服务器。

ErrorDocument 403 http://www.google.com