为什么有时不能读取IP地址,这个功能
why cant read ip address sometimes, this function
我使用这个函数来获取用户的ip地址在我的网站,但它不能读取ipaddress有时。我不知道用户是否可以隐藏ipaddress ?如果用户能够这样做,那么我如何获得ipaddress或任何其他解决方案来识别用户的本地计算机,以便我可以阻止该计算机打开我的网站。
如有任何建议,不胜感激。
function GetIP()
{
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}
通常只有echo $_SERVER['REMOTE_ADDR'];
应该做这项工作。否则,请解释一下"it cannot read ipaddress sometimes"是什么意思
Ip地址不是禁止用户的可靠方法,因为他们可以使用代理,或者可以使用动态Ip。例如,对一些用户来说,禁止IP只意味着他们必须重新启动路由器,他们可以再次访问你的网站。
根据您的站点,拒绝某人访问的更好方法是使用用户身份验证(用户登录)
简短的回答是没有100%保证获得用户IP地址的方法- $_SERVER['REMOTE_ADDR']
是您最好的选择,但即使这样也不是100%可靠-特别是对于网络上的用户。
任何从客户端通过HTTP传递的内容都可能被阻止/欺骗。
用另一种方法解决你的问题更容易——将访问列入白名单比将其列入黑名单更容易(也更安全)——如果你能这样做,我会选择它。它只需要一些简单的东西(在Apache .htaccess或vhost配置中):
Deny from all
Allow from mydomain.com
您可以从环境中获得的唯一IP地址是REMOTE_ADDR
。
代码中其他愚蠢的字符串只不过是HTTP头,可选的。可以伪造,省略,格式错误,为空等
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 使用正则表达式评估电子邮件地址时出现性能问题
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 跟踪用户点击Adsense广告的IP地址
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 自动将光标放在多功能框/地址栏中
- 为什么有时不能读取IP地址,这个功能
- 在流星发布功能中获取用户的电子邮件地址