• ベストアンサー

PHPでのIP制限の方法

現在携帯専用のHPを作ってるんですが、 借りているサーバーがhtaccessを使えないので、phpで携帯のIP帯域のみアクセス許可したいのですが、可能でしょうか? もし出来るのであれば、方法をどなたかお教え願えませんでしょうか? よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • tripod_r
  • ベストアンサー率38% (5/13)
回答No.4

No2に関して チェック項目なのでfunction関数を使用しOKならスルーするといった感じになります。 例を記述すると <? $ip = $_SERVER["REMOTE_ADDR"]; ip_check($ip); print<<<END <html> main page </html> END; exit; #--------------------------- function ip_check($ip){ if(ereg("210.153.84.",$ip)){$ip_check='ok';} elseif(ereg("210.136.161.",$ip)){$ip_check='ok';} elseif(ereg("210.134.83.",$ip)){$ip_check='ok';} elseif(ereg("210.146.7.",$ip)){$ip_check='ok';} elseif(ereg("210.146.60.",$ip)){$ip_check='ok';} elseif(ereg("210.151.9.",$ip)){$ip_check='ok';} elseif(ereg("210.169.193.",$ip)){$ip_check='ok';} elseif(ereg("210.228.189.",$ip)){$ip_check='ok';} elseif(ereg("211.8.49.",$ip)){$ip_check='ok';} elseif(ereg("211.8.159.",$ip)){$ip_check='ok';} elseif(ereg("211.127.183.",$ip)){$ip_check='ok';} elseif(ereg("210.169.40.0",$ip)){$ip_check='ok';} elseif(ereg("210.196.3.192",$ip)){$ip_check='ok';} elseif(ereg("210.196.5.192",$ip)){$ip_check='ok';} elseif(ereg("210.230.128.0",$ip)){$ip_check='ok';} elseif(ereg("210.230.141.192",$ip)){$ip_check='ok';} elseif(ereg("210.234.105.32",$ip)){$ip_check='ok';} elseif(ereg("210.234.108.64",$ip)){$ip_check='ok';} elseif(ereg("210.251.1.192",$ip)){$ip_check='ok';} elseif(ereg("210.251.2.0",$ip)){$ip_check='ok';} elseif(ereg("211.5.1.0",$ip)){$ip_check='ok';} elseif(ereg("211.5.2.128",$ip)){$ip_check='ok';} elseif(ereg("211.5.7.0",$ip)){$ip_check='ok';} elseif(ereg("218.222.1.0",$ip)){$ip_check='ok';} elseif(ereg("61.117.0.0",$ip)){$ip_check='ok';} elseif(ereg("61.117.1.0",$ip)){$ip_check='ok';} elseif(ereg("61.117.2.0",$ip)){$ip_check='ok';} elseif(ereg("61.202.3.0",$ip)){$ip_check='ok';} elseif(ereg("219.108.158.0",$ip)){$ip_check='ok';} elseif(ereg("219.125.148.0",$ip)){$ip_check='ok';} elseif(ereg("222.7.56.0",$ip)){$ip_check='ok';} else{$ip_check='ng';} if($ip_check=='ng'){ header('Location:http://oshiete1.goo.ne.jp'); exit; } ?> となります。 これで一応DoCoMo&au&vodafone以外の端末からは入ってこれなくなるはずです。 あと、IP情報は予告無く変更及び追加されることがありますのでWWWC等を使用しこまめにチェックすることをお勧めします。 http://www.nakka.com/wwwc/ DoCoMo http://www.nttdocomo.co.jp/p_s/imode/ip/index.html#ip vadafon http://www.dp.j-phone.com/dp/tech_svc/web/ip.php au http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html

1986-0521-nami
質問者

お礼

ありがとうございました! できました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

逆引き処理するんでサーバが重くなりますが、 <?php //ホストを取得 $host = getenv("REMOTE_HOST"); $addr = getenv("REMOTE_ADDR"); if($host == "" || $host ==$addr){ $host = gethostbyaddr($addr); } if((ereg("docomo.ne.jp",$host)) or (ereg("jp-[a-z]",$host)) or (ereg("ezweb.ne.jp",$host))){ echo <<<EOM モバイル用HTMLを記述 EOM; }else{ echo <<<EOM PC用のHTML(アクセス禁止ですとか書く) EOM; } ?> で、いいと思います

全文を見る
すると、全ての回答が全文表示されます。
  • tripod_r
  • ベストアンサー率38% (5/13)
回答No.2

前準備として各携帯会社のIP情報を取得しリストを作成します。 DoCoMo http://www.nttdocomo.co.jp/p_s/imode/ip/index.html#ip 210.153.84. 210.136.161. vadafon http://www.dp.j-phone.com/dp/tech_svc/web/ip.php 210.134.83. 210.146.7. 210.146.60. 210.151.9. 210.169.193. 210.228.189. 211.8.49. 211.8.159. 211.127.183. au http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html 210.169.40.0 210.196.3.192 210.196.5.192 210.230.128.0 210.230.141.192 210.234.105.32 210.234.108.64 210.251.1.192 210.251.2.0 211.5.1.0 211.5.2.128 211.5.7.0 218.222.1.0 61.117.0.0 61.117.1.0 61.117.2.0 61.202.3.0 219.108.158.0 219.125.148.0 222.7.56.0 端末のIP情報を取得します。 $ip = $_SERVER["REMOTE_ADDR"]; 作成したリストと端末のIP情報を比較します。 if(ereg("210.153.84.",$ip)){$ip_check='ok';} elseif(ereg("210.136.161.",$ip)){$ip_check='ok';} elseif(ereg("210.134.83.",$ip)){$ip_check='ok';} elseif(ereg("210.146.7.",$ip)){$ip_check='ok';} . . . else{$ip_check='ng';} if($ip_check=='ng'){ header('Location:pc.html'); } 以上でIPチェックが行えます。 あと、ユーザーエージェントでIPとのダブルチェックを行えばさらに良いと思います。

1986-0521-nami
質問者

お礼

お返事ありがとうございます! 記述は、 <?php $ip = $_SERVER["REMOTE_ADDR"]; if(ereg("210.153.84.",$ip)){$ip_check='ok';} elseif(ereg("210.136.161.",$ip)){$ip_check='ok';} elseif(ereg("210.134.83.",$ip)){$ip_check='ok';} elseif(ereg("210.146.7.",$ip)){$ip_check='ok';} 以下、そのほかのIPを入れて... ↓ else{$ip_check='ng';} if($ip_check=='ng'){ header('Location:http://oshiete1.goo.ne.jp'); } ?> こんな感じでOKでしょうか??

全文を見る
すると、全ての回答が全文表示されます。
  • chupark
  • ベストアンサー率41% (90/218)
回答No.1

 自信はないですが、こういうのはどうでしょう?  1.環境変数 $_SERVER['REMOTE_ADDR']で IPアドレスを取得する  2.それを元に正規表現マッチングなどで許可・不許可を判定する  3.不許可であった場合は、 header('Location:error.html');   などで別ページに飛ばせる

1986-0521-nami
質問者

お礼

お返事ありがとうございます! 実は、PHP初心者なんです。。。 どうやってそれを記述したらよいでしょうか・・・? すみません

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHPで、IPアドレス帯域での接続制限を行いたいです

    例えば、210.169.40.0/24というbit数表記の範囲を持ったIPアドレス帯域での接続のみ許可したい場合、PHPではどのようなコードを書けばよいのでしょうか? htaccessなどでアクセス禁止するのではなく、別途の処理をしたいため、PHP限定でお願いします。

    • 締切済み
    • PHP
  • ウィルコムの携帯サイトでIP制限をかけたい

    現在、ウィルコムの携帯サイトを作成しています。 公開領域に置いてある画像を、 ウィルコム以外の携帯、パソコンではアクセスできない(表示しない)ようにしたいです。 そこで、.htaccessでIPの制限をかけたのですが上手く行きません。 http://www.dspt.net/tools/mobile_ip/ このサイトでウィルコムの.htaccessを作成し、画像があるフォルダに設置。 その後、ウィルコムでアクセスしましたが画像が表示されませんでした。 PHPでウィルコムのIPアドレスを表示したところ、 61.198.138.220 となっており、作成した.htaccessに61.198.138.220を追加したところ、 ウィルコムでは画像が表示され、パソコンでは画像が表示されない、意図した動作になりました。 .htaccessには帯域を表記した 61.198.138.100/32 のようなアドレスを書くのではなく、61.198.138.220 というふうに書かなければならないのでしょうか?

  • IPアドレスによるアクセス制限方法

    よろしくお願いいたします。 ウェブサーバのアクセス制限方法について質問です。 ウェブサーバの特定のフォルダのアクセス制限をかけたいのですが、 .htaccessをつかって、特定のIPアドレスのみアクセス許可して、 それ以外のIPアドレスからのアクセスは拒否するようにできるのでしょうか? よろしければサンプルコードが記載されているURLを教えてください。 もしくは核となるコードを教えてください。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 携帯PCのアクセス制限。PHP初心者です…

    現在は.htaccessで携帯のIPのみを許可しているのですが、管理の時に私のPCでアクセスできるようにしたいので、携帯以外の時にはBasic認証というふうなことはできるのでしょうか。どなたか教えて頂ければ助かります。宜しくお願いします。

    • ベストアンサー
    • PHP
  • 携帯サイト htaccessによるIP制限

    携帯サイトをPCからアクセスできないようにするため、htaccessを使ってIP制限をしたいのです。 下記アドレス7のロリポップのレンタルサーバーに書かれていた方法 http://lolipop.jp/?mode=manual&state=hp&state2=htaccess_03 で試みましたが、全く作動しません。普通にPCから見れてしまいます。 order deny,allow deny from all allow from 許可したいホスト・IP  ←携帯各社のIPをズラズラと並べました。 アップロードして拡張子は.htaccessに変更し、ファイルの属性も604にしました。 サイトの説明通りにしているつもりなのですが、他にも何か設定の項目があるのでしょうか? 実際にロリポップを使用されている方がいましたら助かります。 アップロードはロリポップのFTPやフリーソフトのFFFTPも使ってみましたが、結果は同じでした。

  • htaccessで特定のIPアドレスからしかアクセスできないようにする

    htaccessで特定のIPアドレスからしかアクセスできないようにする方法がありますが、そのIPを外部ファイルにまとめたいと考えております。 アクセス許可するIPの変更や追加などがあったときに、サーバー内にある全てのサイトに存在するhtaccessを1つ1つ変更するのは大変です。まとめたファイルを読み込むだけにしておけば、そのまとめたファイルを変更するだけで済むので便利だと考えております。 htaccess内で外部ファイルをincludeするような方法があるようなら教えて頂きたいです。 よろしくお願い申し上げます。

  • WordPressの特定のページの閲覧制限

    現在WordPressでサイトを作っているのですが、特定の「ページ」だけ許可したIPからしかアクセスできないようにしたいと考えています。 理想的には.htaccessなどを使ってサーバー側で制限できれば良いのですが、WordPressの「ページ」は実際にファイルやディレクトリがあるわけではないので、.htaccessが効くのかどうかがよくわかりません。 もし.htaccessなどで制限が可能でしたら、その方法を教えてください。そうでない場合は、何か他の手段があればぜひ教えてほしいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • PHP PCアクセス制限

    アクセス振り分けPHPですが、 以下のように直してみました。 ですが、 ↓こんなエラーが出てしまいました。 Parse error: syntax error, unexpected '}' in /index.php on line 89 <?php if (isDoCoMoIP()) { } if (isAuIP()) { } if (isSoftBankIP()) { } function isDoCoMoIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { //DoCoMo のIP帯域をセット $ip_list = array( '210.153.84.0/24', '210.136.161.0/24', '210.153.86.0/24', '124.146.174.0/24', '124.146.175.0/24' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "DoCoMo"; return true; } } } } function isAuIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { // au のIP帯域をセット $ip_list = array( '210.230.128.224/28', '121.111.227.160/27', '61.117.1.0/28', '219.108.158.0/27', '219.125.146.0/28', '61.117.2.32/29', '61.117.2.40/29', '219.108.158.40/29', '219.125.148.0/25', '222.5.63.0/25', '222.5.63.128/25', '222.5.62.128/25', '59.135.38.128/25', '219.108.157.0/25', '219.125.145.0/25', '121.111.231.0/25', '121.111.227.0/25', '118.152.214.192/26', '118.159.131.0/25', '118.159.133.0/25' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "au"; return true; } } } } function isSoftBankIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { //SoftBank のIP帯域をセット $ip_list = array( '123.108.236.0/24', '123.108.237.0/27', '202.179.204.0/24', '202.253.96.224/27', '210.146.7.192/26', '210.146.60.192/26', '210.151.9.128/26', '210.169.130.112/28', '210.175.1.128/25', '210.228.189.0/24', '211.8.159.128/25' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "SoftBank"; return true; } } } } return false; } print "PC"; ?>

    • 締切済み
    • PHP
  • PHPを使って特定のIPアドレスよりのみのアクセスを許可する。

    特定のIPアドレスのみからのアクセスを許可するHPを作ってみたいと思っています。 こういった場合、PHPの記述などどのように書けば宜しいでしょうか? どなたか御教授願いします。

  • phpについて

    phpの利用は許可されているサーバーなのですが、 たとえばhttp://www.xxx.com/index.phpをhttp://www.xxx.com/だけで表示できるようにするにはどうすればいいのでしょうか?.htaccessでしょうか?でもどう書けばいいかわからないです。 あと、どっかのサイトで携帯端末との振り分けがあったのですけど、それが実行できなくしかたなく1つのphpファイルの中にそれぞれのhtmlを書いて、それを場合わけ(携帯の場合はこっち。それいがいはあっち)しようかと思っているんですけど、容量とか考えたらあまりよくないのでやっぱり振り分けしたいんでできそうなの教えてください。