2021年12月6日月曜日

PHP ip2longの罠(2) ローカルIPアドレスが '::1'

XAMPPを使った cakePHP3のローカルな開発環境でブラウザ表示させる際に、$_SERVER['REMOTE_ADDR']を使ってIPアドレスを取得すると、localhostでは '::1' という値が返されてきた。

プログラムでは ip2long()関数を使って数値化されたIPアドレス値をデータベースに照合しているので、これじゃ使えない。

  $ip_address = $_SERVER['REMOTE_ADDR'];
  $ip_value = ip2long($ip_address);

実際、$ip_address='::1' の場合に $ip_value=ip2long('::1');を実行すると false が返ってきてしまっている。

WEBを検索すると、次の情報があったのでやってみた。(コントローラ内での呼び出し)

  $ip_address = $this->request->clientIp();

これでも、値は '::1' となる。こまったぞ・・・

よくよく考えると、自分のIPを返せばいいわけで。
次のコードでうまくいくようになった。

if($_SERVER["HTTP_HOST"] == "localhost")
{
	$ip_address = getHostByName(getHostName());
}
$ip_value = ip2long($ip_address);

無事取得できました。
めでたしめでたし。

0 件のコメント:

コメントを投稿