- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个简单的脚本来确定用户的 IP 地址:
function GetIp(){
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
现在在网上某个地方我看到有人在使用这个脚本:
if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != '')
$Ip = $_SERVER['HTTP_CLIENT_IP'];
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '')
$Ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != '')
$Ip = $_SERVER['REMOTE_ADDR'];
我想知道我的实现是否有问题。我是否需要检查 $_SERVER['HTTP_CLIENT_IP']
、$_SERVER['HTTP_X_FORWARDED_FOR']
的值>,或者 $_SERVER['REMOTE_ADDR']
是空的?或者实际上没有必要这样做?
最佳答案
如果你想找出客户端的 IP 地址的原因真的很重要,那就去他妈的所有这些东西。
这些 header 值中的任何一个都可以被随意欺骗。
REMOTE_ADDR
是唯一真正可靠的信息,因为它是由处理请求的网络服务器传输给您的。理论上可以falsified as well ,但这比欺骗 header 值和完全不同的攻击类别要困难得多。
在反向代理背后的非常非常具体的托管环境中也有异常(exception)。在这些情况下,管理该代理的人将能够告诉您需要测试的 header 值。
关于php - set $_SERVER ['HTTP_CLIENT_IP' ] 的值会是一个空字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7623187/
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: HTTP_HOST vs. SERVER_NAME $_SERVER['HTTP_HOST'] 和 $_SERV
我有一个反馈表,它将包含几个用户输入的字段以及一些由 PHP 函数生成的字段,例如“user-agent”和“referer”。 我的问题是这些字符串在输入之前是否应该进行清理?我知道可以很容易地更改
我打印了 $_SERVER,发现 $_SERVER['REDIRECT_URL'] 与 $_SERVER['REQUEST_URI'] 的值相同。两者有什么区别? 最佳答案 REQUEST_URI 是
有什么区别: $_SERVER['SCRIPT_NAME'] 和 $_SERVER['PHP_SELF'] 谢谢。 最佳答案 它们应该包含相同的信息。但是,从历史和技术上来说,两者是有区别的。 SCR
我带着一个简单的问题(或相关问题)回来了。 问题很简单,但我还没有收到答案。我问过很多有不同 PHP 经验的人。但我得到的回应是:“我不知道。我从来没有想过这个。”使用谷歌我找不到任何关于此的文章。希
$_SERVER['PATH_INFO'] 和 $_SERVER['ORIG_PATH_INFO'] 有什么区别?我该如何使用它们? 当我运行 print_r($_SERVER) 时,PATH_INF
我有一个 php 框架,我使用 $_SERVER['SCRIPT_NAME'] 来优化可移植性。这样我就不需要再手动配置路径了。 $this->base_url = str_replace('inde
我做了很多搜索,还阅读了 PHP $_SERVER docs .我是否有权在我的 PHP 脚本中使用哪个用于在整个网站中使用的简单链接定义? $_SERVER['SERVER_NAME'] 基于您的
使用 $_SERVER['REQUEST_URI'] 或 $_SERVER['PHP_SELF'] 作为表单中的操作或作为 href链接? 如果是这样,可以采取哪些措施来降低风险? 最佳答案 您在 w
我必须从 server script 获取远程 url 主机名,以下哪个更可靠: gethostbyaddr($_SERVER['REMOTE_ADDR']) 或 $_SERVER['REMOTE_H
在开始之前,我想指出我浏览了 Stack Overflow 并发现了其他类似的问题 - PHP_AUTH_USER not set?和 HTTP Auth via PHP - PHP_AUTH_USE
我在 php 脚本中使用 $_SERVER['HTTP_HOST'] 和 $_SERVER['REQUEST_URI'] 来获取页面的 url,但 envato 主题检查插件显示警告。 警告:在文件
我位于透明代理后面,该代理始终添加 HTTP_X_FORWARDED_FOR header 。 当我使用 PHP 转储 header 时, header 丢失了。但Python可以工作..哈哈 Pyt
这是对 this question 的扩展我们了解到可以使用 SetEnv 设置 $_SERVER 变量。 下一个问题是:有没有一种方法可以像这样使用 SetEnv: /var/www/www.exa
是否可以使用 .htaccess 或其他 apache 功能在 php 数组 $_SERVER 中设置自定义服务器值。 例如 if($_SERVER['is_special']) { echo
什么相当于 codeigniter 中的 $_SERVER ? 最佳答案 $this->input->server() 更多信息请引用用户指南:Input 关于Codeigniter 和 $_SERV
这是指向当前文件执行的目录吗? 最佳答案 不,它指向您的网络服务器的根目录 - 您网站的最顶层文件夹。 如果你想要当前文件的目录,使用: 目录名(__FILE__); 关于php - $_SERVER
我真的很想使用以下问题的答案:How can I force users to access my page over HTTPS instead of HTTP? 但我一直认为全局 $_SERVER
我需要知道当我处理 $_SERVER 变量时我是否可以安全地使用普通字符串或者我必须使用 mb_* 字符串。 (UTF-8) 例如 $_SERVER['HTTP_HOST'] 可以包含多字节字符? 如
我遇到过以下三行代码: $_SERVER; $_ENV; $_REQUEST; 对我来说,这三行代码似乎什么也没做。它们不会导致任何错误。 我知道这三个全局变量是什么,就是不知道这三行代码是干什么的。
我是一名优秀的程序员,十分优秀!