ホーム > Mobile | PHP > PEAR::Net_IPv4を利用したIPアドレスによるキャリア判別

PEAR::Net_IPv4を利用したIPアドレスによるキャリア判別

PEARライブラリ「Net_IPv4」を利用して、IPアドレスによるキャリアの判別を行う。

まず、キャリアを判別するスクリプトを用意する。
(PCではいいけれど、モバイルの実機ではこのスクリプトをそのまま実行できないため外部スクリプトとしてincludeして利用する)

主要3キャリアの IP アドレス情報は以下より
キャリアごとのIPアドレス情報

mobile_ip_carrier.php

<?php

// Net_IPv4を読み込む
require_once 'Net/IPv4.php';

// IPアドレスからキャリアを判別する
function mobile_ip_carrier()
{
	// IPを設定する配列を準備する
	$ip_table = array();

	// DoCoMoのIP帯域を配列に格納
	$ip_table['docomo'] = array();
	$ip_table['docomo'][] = '210.153.84.0/24';
	$ip_table['docomo'][] = '210.136.161.0/24';
	$ip_table['docomo'][] = '210.153.86.0/24';
	$ip_table['docomo'][] = '210.153.84.0/24';
	// 以下略

	// auのIP帯域を配列に格納
	$ip_table['au'] = array();
	$ip_table['au'][] = '210.230.128.224/28';
	$ip_table['au'][] = '121.111.227.160/27';
	$ip_table['au'][] = '61.117.1.0/28';
	$ip_table['au'][] = '219.108.158.0/27';
	$ip_table['au'][] = '219.125.146.0/28';
	$ip_table['au'][] = '61.117.2.32/29';
	$ip_table['au'][] = '61.117.2.40/29';
	$ip_table['au'][] = '219.108.158.40/29';
	$ip_table['au'][] = '219.125.148.0/25';
	$ip_table['au'][] = '222.5.63.0/25';
	$ip_table['au'][] = '222.5.63.128/25';
	$ip_table['au'][] = '222.5.62.128/25';
	$ip_table['au'][] = '59.135.38.128/25';
	$ip_table['au'][] = '219.108.157.0/25';
	$ip_table['au'][] = '219.125.145.0/25';
	$ip_table['au'][] = '121.111.231.0/25';
	$ip_table['au'][] = '121.111.227.0/25';
	$ip_table['au'][] = '118.152.214.192/25';
	$ip_table['au'][] = '118.159.131.0/25';
	$ip_table['au'][] = '118.159.133.0/25';

	// SoftBankのIP帯域を配列に格納
	$ip_table['softbank'] = array();
	$ip_table['softbank'][] = '123.108.236.0/24';
	$ip_table['softbank'][] = '123.108.237.0/27';
	$ip_table['softbank'][] = '202.179.204.0/24';
	$ip_table['softbank'][] = '202.253.96.224/27';
	// 以下略

	// IPのキャリアを決定する
	$ip_carrier = '';

	// IPアドレスからキャリアを判断する
	if (empty($ip_carrier)) {
		foreach ($ip_table as $ip_table_carrier => $ip_table_value) {
			foreach ($ip_table_value as $value) {
				$value = trim($value);
				if (strcmp($_SERVER["REMOTE_ADDR"], $value) == 0 || Net_IPv4::ipInNetwork($_SERVER["REMOTE_ADDR"], $value)) {
					$ip_carrier = $ip_table_carrier;
					break 2;
				}
			}
		}
	}

	// 携帯のキャリアIPアドレスでない場合はPCからのアクセスとみなす
	if (empty($ip_carrier)) {
		$ip_carrier = 'pc';
	}

	return $ip_carrier;
}

echo mobile_ip_carrier();
?>

つづいて、携帯の実機でアクセスする(キャリア判別の結果を表示する)ページを作成する。

test.php
先に作成した判別用のスクリプトをrequireでincludeして利用。
判別結果を変数$ip_carrier(外部スクリプト内で設定した)を使用して出力。

<?php

// IPアドレスからキャリアを判別する外部スクリプトを読み込む
require_once 'mobile_ip_carrier.php';

?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset='Shift_JIS'" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<title>キャリア判別</title>
</head>
<body>

<?php echo $ip_carrier ?>

</body>
</html>

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
http://showzine.info/blog/2009/04/net_ipv4%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%9f%e3%82%ad%e3%83%a3%e3%83%aa%e3%82%a2%e5%88%a4%e5%88%a5.html/trackback
トラックバックの送信元リスト
PEAR::Net_IPv4を利用したIPアドレスによるキャリア判別 - SHOWJIN*BLOG より

ホーム > Mobile | PHP > PEAR::Net_IPv4を利用したIPアドレスによるキャリア判別

検索
フィード

ページの上部に戻る