質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1730閲覧

IPアドレスが二種類ある?

hana_hana

総合スコア27

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/08/13 12:41

編集2019/08/13 12:52

###質問
下記(A)と(B)で、IPアドレスの表示が変わってしまうのはなぜでしょうか?

(A)
WordPressのheader.phpで、echo $_SERVER['REMOTE_ADDR'];を書いたときに、自分のサイトに表示されるもの
→11.1.11.11

(B)
https://www.cman.jp/network/support/go_access.cgi等にアクセスしたときに、こちらのサイトに表示されるもの
→111.111.111.11

###目的

もともとの目的は、下記↓functions.phpでメンテナンスモードを実装するときにIPアドレスで判定したいためです。

そのために自分のIPアドレスが必要なんですが、上のように2種類あるせいで★にどちらを書けば正解なのか混乱しています。

function my_maintenance_mode() { $getip = $_SERVER['REMOTE_ADDR']; if( $getip != '★' ){ wp_die('メンテナンス中'); } } add_action( 'get_header', 'my_maintenance_mode' );

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mokemokechicken

2019/08/13 12:50

その wordpress のサーバは、どこに置いてありますか? 外部のどこかでしょうか? それとも今お使いのPCと同一LAN内などでしょうか?
hana_hana

2019/08/13 12:54

Xサーバーさんと契約していますので、具体的な場所はわかりかねますが、外部のということになると思います。すると(A)の場合、Xサーバーさんの何かの情報が表示されているだけなのでしょうか?もしそうならば目的の★には一体何を書けば……
mokemokechicken

2019/08/13 13:06

外部、になりますね。 通常外部のサーバにアクセスするときの、PCのIPアドレスは同じになるはずです(B になるはず)。 可能性としてあるかな、と思うのは 途中にロードバランサーとか挟まったり、Proxyが挟まったりしているということです。 リクエストHeaderを全て表示してみて、以下のような X-Forwarded-For, X-Real-IP のようなのは混じってないでしょうか? https://christina04.hatenablog.com/entry/2016/10/25/190000
hana_hana

2019/08/13 13:22 編集

>リクエストHeaderを全て表示 表示方法がわからないのですが、おしえていただけませんでしょうか? ちなみに下記2通りを試してみたものの【コードとエラー】でした。 【コードとエラー】その1 <?php $myHeader = $_SERVER['HTTP_X_MY_HEADER']; var_dump( $myHeader ); ?> ↓ Notice: Undefined index: HTTP_X_MY_HEADER in /export/user/b/zjp_73a14b/live_720548/var/wordpress/wp-content/themes/test/header.php on line 46 NULL 【コードとエラー】その2 <?php foreach (getallheaders() as $name => $value) { echo "$name: $value\n"; } ?> ↓ Fatal error: Uncaught Error: Call to undefined function getallheaders() in /export/user/b/zjp_73a14b/live_720548/var/wordpress/wp-content/themes/test/header.php:47......(以下略)
mokemokechicken

2019/08/13 13:25

var_dump($_SERVER) とかでどうでしょうか?
hana_hana

2019/08/13 13:32 編集

おお、ごちゃごちゃ出てきました。ありがとうございます。 この中に「X-Real-IP」は見当たりませんが、下記がありました。 ["HTTP_X_FORWARDED_FOR"]=> string(14) "111.111.111.11" そしてこの「111.111.111.11」という値は(B)でした。
hana_hana

2019/08/13 13:31

ということは、目的のためのコードは、こちら↓で正解でしょうか?! function my_maintenance_mode() { $getip = $_SERVER["HTTP_X_FORWARDED_FOR"]; if( $getip != '111.111.111.11' ){ wp_die('メンテナンス中'); } } add_action( 'get_header', 'my_maintenance_mode' );
mokemokechicken

2019/08/13 13:36

そうですね、たぶん、それで良いんですが、 保険のために(間にいるであろう?LoadBalancerかProxyが外れても問題ないように) $remote_addr = $_SERVER['REMOTE_ADDR']; $forwarded_addr = $_SERVER["HTTP_X_FORWARDED_FOR"]; $my_ip = '111.111.111.111'; として、 if ($remote_addr != $my_ip && $forwarded_addr != $my_ip) { wp_die('...'); } の方が気持ち的には安心な気がします。
mokemokechicken

2019/08/13 13:38

あと、ご自宅からのアクセスの場合、固定IPの契約をしていないと モデムやルーターなどを再起動したり(そうでなくてもいつのまにか)IPアドレスが変わることはあるので 注意したほうがいいかもしれないです。
hana_hana

2019/08/13 13:40

そうさせて頂きます。サーバーのことは(も)まったくわからないので、大変勉強になりました。どうもありがとうございます。 IPアドレス変更の件も注意いたします。細部までお気遣い感謝です。 ぜひベストアンサーを差し上げたいので、大変お手数で申し訳ございませんが、もしよろしければご回答欄にひとことご記入頂けましたら幸いです。
mokemokechicken

2019/08/13 13:42

ありがとうございます。簡単にポイントだけ回答に書きました。
guest

回答1

0

ベストアンサー

可能性としてあるかな、と思うのは
途中にロードバランサーとか挟まったり、Proxyが挟まったりしているということです。

リクエストHeaderを全て表示してみて、以下のような
X-Forwarded-For, X-Real-IP のようなのは混じってないでしょうか?
https://christina04.hatenablog.com/entry/2016/10/25/190000

投稿2019/08/13 13:41

mokemokechicken

総合スコア948

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hana_hana

2019/08/13 13:44

どうもありがとうございます。仰るとおりの確認と対策で無事解決致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問