【发布时间】:2013-12-10 07:21:11
【问题描述】:
我有
$result = mysqli_query($mysqli,"SELECT * FROM ".MYSQLBTCTABLE." WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND date = '".date("Y-m-d")."' AND time = '".date("D")."'") or die(mysqli_error());
如何保护$_SERVER['REMOTE_ADDR'],使其不仅检查用户ip/proxy,还检查socks ip,这样他们就不会通过更改IP 来滥用我的代码?
我也发现了这段代码:
function getRealIpAddr()
{
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;
}
如果我输入WHERE ip = '".($ip)."',它会起作用吗?
【问题讨论】:
-
您的代码错误。使用反引号(或不使用)来包围表名。
-
我从这里删除的 .. 反引号你没看到有等吗?问题是关于 remote_addr
-
可以,但是你的代码会导致语法错误。
-
我知道我的真实代码是 $result = mysqli_query($mysqli,"SELECT * FROM ".MYSQLBTCTABLE." WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND date = '".date("Ymd")."' AND time = '".date("D")."'") or die(mysqli_error());
-
然后发布你的真实代码。我在这里看到了很多无法解决的问题,因为 OP 没有发布真正的代码。此外,有更多人看到您的问题,他们可能认为您的代码没问题,只需复制粘贴即可。