【javascript】IPアドレスを取得する方法

公開日:
更新日:
カテゴリー: javascript

javascriptを使ってIPアドレスを取得する方法についてまとめています。

javascriptではIPアドレスは取得できない

javascriptでユーザーエージェントなどの情報を取得する方法にも書いていますが、実はjavascriptではユーザーのIPアドレスは取得できません。

ひと工夫する必要があります。

PHPと組み合わせる

PHPではサーバ変数から簡単にアクセスしてきたユーザーのIPアドレスを取得できます(詳細はIPアドレス、リンク元、アクセスページ、ユーザーエージェントの取得)。

そのためPHPでユーザーのIPアドレスを取得し、javascriptに渡してあげれば結果的にjavascriptでIPアドレスを取得できます。

有用性

PHPを利用できる環境下でわざわざjavascriptにIPアドレスを渡してそれで取得できた!とやっても意味はありませんが、javascriptにIPアドレスを渡してゴニョゴニョしたいときに役にたちます。

具体例としては、GoogleAnalyticsのカスタム変数の値にIPアドレスを渡したりです(参考:【GoogleAnalytics】IPアドレスの取得方法)。

IPアドレスをjavascriptに渡す

ということで、PHPでIPアドレスを取得し、それをjavascriptに渡してみたいと思います。

<script type="text/javascript">
//PHPでIPアドレスを取得し、それを変数「ipAddress」に代入
var ipAddress = '<?php echo $_SERVER['REMOTE_ADDR']; ?>';
//出力
document.write(ipAddress);
</script>

IPアドレスを変数に渡してしまえば、あとは任意の処理が可能になると思います。

PHPが使えない環境下でもIPアドレスを取得する

ここからが目玉なのですが、PHPが使えない環境下でもjavascriptにIPアドレスを渡して取得させることができます。

それは、PHPが使える別のサーバーにPHPファイルを設置し、それを読み込めば良いです。

外部PHPファイルからIPアドレスを取得

具体的な方法ですが、PHPが使用できるサーバーに以下を記述したPHPファイルを設置します。

詳細な説明はjavascriptでPHPファイルを実行してそれを出力する方法を参照してください。

<?php
//javascriptファイルとして処理させる
header("Content-type: application/x-javascript");
//IPアドレスを変数に代入
$ip_address = $_SERVER['REMOTE_ADDR'];
//スクリプトの出力
echo "var ipAddress = '" . $ip_address . "';";
?>

そしてこのファイルをjavascriptファイルとして読み込むコードをサイトに設置します。

<script type="text/javascript" src="http://○○○.com/△△△.php"></script>
<script>
document.write(ipAddress);
</script>

グローバル変数にIPアドレスが格納されているので、あとはそれを受け取ればPHPが使用できない環境でもIPアドレスを取得してjavascriptに渡すことができます。

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント