在我的数据库中,我决定存储回答民意调查的访问者的 IP。 一切正常,但只有 2 种情况,不仅存储 1 个 IP,而且同一访问者有 2 个相同的 ip
MySQL输出(我用XX替换了2个数字)
10.188.XX.129, 10.188.XX.129
以下是接收访问者 IP 的脚本:
<?php
function realip() {
if (isset($_SERVER)) {
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$realip = getenv( 'HTTP_X_FORWARDED_FOR' );
} elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$realip = getenv( 'HTTP_CLIENT_IP' );
} else {
$realip = getenv( 'REMOTE_ADDR' );
}
}
return $realip;
}
?>
我的问题是:99.9%的时间,只有1个IP存储在MYSQL上。我在 mySQL 数据库中有 2 个案例(我的帖子中的示例),其中 2 个 IP 存储在 mySQL 的 1 行上:这是否意味着访问者正在使用 PROXY ? 谢谢
最佳答案
嗯嗯,终于明白了。
您将 IP 地址存储在 varchar(255) 之类的列中,而不是 int 列中,甚至也不是 varchar(15) 中。所以,任何东西都可以存储。因此,您可以存储除了 IP 地址之外的任何内容。
$_SERVER["REMOTE_ADDR"]
之一。
可以对 realip() 函数的结果进行一些使用,但使用它时应采取预防措施并了解相关知识,并且 - 最重要的部分 - 不能代替 IP 地址,而只能作为其补充,作为一些补充信息。
关于php - 2 为访客存储 IP : PROXY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2787176/