这个问题是指php mysql更新IP地址无法正常工作 在这里发帖希望得到答案。以下代码更新数据库中的访问者 IP 地址。但是当使用 Chrome 进行测试时,结果是有线的。
输出是
string(119) "更新 ddns SET LastIP=1886947462, LastUpdate=now() WHERE ddns_name='kc001'
string(112) "选择 INET_NTOA(LastIP) 作为 IPADDR FROM ddns where ddns_name='kc001' 112.120.136.134
但是当检查Mysql时,数据库中的LastIP实际上是2149463110。第二个查询也给出了我正确的IP地址。但是在其他文件中查询时,得到的IP是128.30.52.70
使用 Firefox 或 Safari 时,数据库中的 LastIp 将为 1886947462,正确。
有什么解释吗?
<?php
$dbh = mysql_connect("..mydatabase info..") or die("I cannot connect to the database");
mysql_select_db("glddns");
function getIP(){
//Test if it is a shared client
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip_tmp=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip_tmp=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip_tmp=$_SERVER['REMOTE_ADDR'];
}
//The value of $ip at this point would look something like: "192.0.34.166"
$ip = ip2long($ip_tmp);
return $ip;
}
function getddns(){
$var = explode(".",$_SERVER["SERVER_NAME"]);
return $var[0];
}
$ipaddr = getIP();
$ddns = $_GET["ddns"];
$sql = sprintf("UPDATE ddns SET LastIP=%u, LastUpdate=now() WHERE ddns_name='%s'",$ipaddr,$ddns);
var_dump($sql);
$result = mysql_query($sql) or die("Query failed:".mysql_error());
if ($result && mysql_affected_rows()==1)
echo "Update Done";
else
echo "Update Failed";
$sql= sprintf("select INET_NTOA(LastIP) as IPADDR FROM ddns where ddns_name='%s'",$ddns);
echo "<br><br>";
var_dump($sql);
$result = mysql_query($sql) or die("Query failed:".mysql_error());
while($line = mysql_fetch_assoc($result)){
echo "<br>". $line["IPADDR"];
}
mysql_free_result($result);
mysql_close($dbh);
?>