php ipアドレスを取得する
phpで、ipアドレスとホスト名を取得するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Linux release 8.0.1905 (Core)
- php 8.0.0
- nginx 1.14.1
ipアドレス取得
$_SERVER[‘REMOTE_ADDR’]を取得すればIPアドレスを取得することが可能です。
<?php
if (isset($_SERVER['REMOTE_ADDR'])) {
echo $_SERVER["REMOTE_ADDR"];
}
ホスト名は「gethostbyaddr」で取得することが可能です。
<?php
if (isset($_SERVER['REMOTE_ADDR'])) {
echo $_SERVER["REMOTE_ADDR"];
echo gethostbyaddr($_SERVER["REMOTE_ADDR"]);
}
ホスト名からIPアドレスに戻す場合は、gethostbynameを使用します。
<?php
if (isset($_SERVER['REMOTE_ADDR'])) {
// IPアドレスを取得
echo $_SERVER["REMOTE_ADDR"] . PHP_EOL;
// ホスト名をIPから取得
echo gethostbyaddr($_SERVER["REMOTE_ADDR"]) . PHP_EOL;
// IPアドレスに戻す
echo gethostbyname(gethostbyaddr($_SERVER["REMOTE_ADDR"])) . PHP_EOL;
}
ロードバランサーやリバースプロキシを使用してる場合は、HTTP_X_FORWARDED_FORを試してみてください。
<?php
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$_SERVER['HTTP_X_FORWARDED_FOR'];
}
DBなどに書き込む場合は、ip2longでIPアドレスを数値に変換することも可能です。
<?php
$result = ip2long("192.168.1.1");
echo $result; // 3232235777
echo long2ip($result) . PHP_EOL; // 192.168.1.1
またサーバー側のIPを取得する場合は、SERVER_ADDRを使用します。
<?php
if (isset($_SERVER['SERVER_ADDR'])) {
echo $_SERVER['SERVER_ADDR'];
}
-
前の記事
Ruby putsとprintとpの出力の違い 2020.12.11
-
次の記事
javascript アロー関数で配列データを取得するfor文を記述する 2020.12.11
コメントを書く