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 件のコメント:
コメントを投稿