2

この質問は、php mysql update IP address cannot work right に関するものです。ここに投稿して、回答を得たいと考えています。次のコードは、データベース内の訪問者の IP アドレスを更新します。しかし、Chrome を使用してテストすると、結果は有線です。

出力は

string(119) "UPDATE ddns SET LastIP=1886947462, LastUpdate=now() WHERE ddns_name='kc001'

string(112) "INET_NTOA(LastIP) を IPADDR FROM ddns として選択します。ここで、ddns_name='kc001' 112.120.136.134


しかし、Mysql を確認すると、データベースの LastIP は実際には 2149463110 です。2 番目のクエリでも正しい 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);
?>
4

2 に答える 2

0

これは非常に奇妙なことです。それは私のクロムで以前に起こりました。今、問題は存在しません。ありがとう。

于 2014-04-01T07:31:32.690 に答える
0

いずれかのブラウザが (別の) プロキシ サーバーを使用するように設定されているかどうかを確認します。

于 2013-04-17T12:29:32.250 に答える