プロが教えるわが家の防犯対策術!

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

よろしくお願いします!

A 回答 (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.ht …
vadafon
http://www.dp.j-phone.com/dp/tech_svc/web/ip.php
au
http://www.au.kddi.com/ezfactory/tec/spec/ezsava …
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/07/20 18:41

逆引き処理するんでサーバが重くなりますが、




<?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;
}

?>

で、いいと思います
    • good
    • 0

前準備として各携帯会社のIP情報を取得しリストを作成します。


DoCoMo
http://www.nttdocomo.co.jp/p_s/imode/ip/index.ht …
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 …
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とのダブルチェックを行えばさらに良いと思います。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます!
記述は、

<?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でしょうか??

お礼日時:2004/07/12 11:07

 自信はないですが、こういうのはどうでしょう?



 1.環境変数 $_SERVER['REMOTE_ADDR']で IPアドレスを取得する

 2.それを元に正規表現マッチングなどで許可・不許可を判定する

 3.不許可であった場合は、
header('Location:error.html');
  などで別ページに飛ばせる
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/07/12 11:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!