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

时间:2011-07-22 08:02:43

标签: php mysql database

有些日子我一直在努力让某些ips访问我的家庭网站,因为我只希望我的家人能够访问该网站。生病需要你们的帮助。这是我已经走了多远,如果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

5 个答案:

答案 0 :(得分:3)

我不确定问题是什么,但如果您想要对网站进行密码保护而又不想让用户再生成其他密码,则可以试用LightOpenID图书馆。这样,您的家人就可以使用他们选择的OpenID标识符登录。您只需要保留其标识符列表。它大致是StackOverflow使用的身份验证系统。

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

答案 1 :(得分:1)

mysql_affected_rows用于INSERT,UPDATE或DELETE 使用此:

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

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

答案 2 :(得分:1)

IP地址经常变化,因此他们可能有一天访问,而下一次会有所不同,他们将失去特权。

通过创建登录系统,您会感觉更好。这样,他们就可以从任何地方访问您想要共享的信息。

答案 3 :(得分:1)

您也可以考虑尝试使用htaccess执行此操作。查看stupid htaccess tricks

更好的方法可能是使用htaccess密码here's a free tool,这也很容易设置。

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

答案 4 :(得分:0)

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

请注意&lt; Directory /&gt;的默认Apache访问权限是全部允许的。这意味着Apache将提供从URL映射的任何文件。使用

等块更改此设置
<Directory />
   Order Deny,Allow
   Deny from All
   Allow from IP
</Directory>

然后为您想要访问的目录覆盖它。

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

ErrorDocument 403 http://www.google.com