ホームページ  >  記事  >  バックエンド開発  >  訪問者のソースの問題を表示する

訪問者のソースの問題を表示する

WBOY
WBOYオリジナル
2016-06-23 13:37:441096ブラウズ


function getIp(){
$onlineip='';
if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){
$onlineip=getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){
$onlineip=getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){
$onlineip=getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){
$onlineip=$_SERVER['REMOTE _ADDR'];
}
$onlineip を返します。
}

$onlineip = getIp();

$ipinfo=json_decode(file_get_contents("http://ip.taabao.com/service/getIpInfo.php?ip=".$onlineip),true);// 将APIのjson格式解码保存到ipinfo变量
?>
<テーブル>

IP:


国家:


省份:


城市:


县:


地区:


ISP:


これは私が書いたもので、IP にはアクセスできますが、アクセスできるのは 1 回だけです。その後のゲストも表示されていますが、最初のゲストのソースは、対応するデータベースを構築していません。問題は、暗号化の問題であり、対応するデータテーブルも作成されていません。同じ公である場合ネットワークIPが送信された2人が同一のIPであるかどうかを確認する。 CMS と関係なく、これをテストすることもできます。また、これは
http://ip.taovao.com/service/getIpInfo.php から取得したデータです。この例は、テーブルを作成する必要はありません。

表示されるのは、すべての接続が同意されたソースであるかどうか? 使用する Web サーバーは中間にプロキシを通過しているかどうか?

クライアントの接続のそれぞれは異なるネットワーク プロバイダですか? 同じパブリック ネットワークの場合IP が送信された 2 人が同一の IP であるかどうかを確認します。 CMS に関係なく、
http://ip.taovao.com/service/getIpInfo.php

から取得したデータをテストすることもできます。この例では、テーブルを作成する必要はありません。



他の訪問者は同じパブリックネットワーク上にいないので、テストのために他の場所からの友人に送信しました。表示されているのは私のIPです

そもそもIPの取得方法は厳密ではありません、それが今日まで流通し、今でも人々が使用しているとは予想していませんでした

IPの取得方法は厳密ではありません。そもそも、これが今日まで配布され、まだ人々に使用されているとは思いませんでした


もっと厳密にするには

まずは $_SERVER['REMOTE_ADDR'] を試してみてください。

あるいは、そのコード内のどの変数が最後に有効になったかを調べれば、問題が見つかるでしょう。これは、独自のサーバー ネットワーク構造にも関係します。まず、PHP マニュアルの「定義済み変数」セクションでこれらの環境変数の意味を理解する必要があります。たとえ他の人がそれを解決したとしても、あなたにとっては盲点になってしまうので、このようなコードをそのまま放り出すべきではありません。

そうですね、Web ページが静的だったので問題は解決しましたが、動的に変更したところ、テストは成功しました。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。