via IPv4/IPv6を出力するPHP

管理しているVPSはたぶんIPv6レディである。そこで某ドメインにAAAAレコードを追加して、IPv6でのアクセスを許すようにした。そこで、時々プロバイダのトップページにあるみたいに、今v4とv6のどちらで通信しているかを表示しようと思って若干コーディングした。

まずはアイコンを作成する。僕にとってアイコンを作るなどの高度な操作はExcelでやるしかない…ので以下のようなアイコンを用意した。それぞれv4.pngv6.pngという名前で配置するものとする。

あとはPHPでアクセス元をIPv4かIPv6か判別して、この画像のどちらかを出せばよい。

  • IPv4のアドレスは数字を.で区切る
  • IPv6のアドレスは:で区切る

という事実を利用してコードを書けばよい。具体的にはこんな感じ(v4v6.php)。

<?php
$count = substr_count($_SERVER['REMOTE_ADDR'], ':');
if ($count > 0 ) {
    readfile('v6.png');
} else {
    readfile('v4.png');
}
?>

このコードは、コロン区切りであればv6.pngを、そうでなければv4.pngを読み込んで出力する。要は画像そのものを出しているのであるから、利用する側のHTMLは以下のようになる。

<img src="v4v6.php">

僕がやった方法はこれだけ。

もっとうまい方法がありそうな気がする。REMOTE_ADDR以外を用いて判断することができるのかもしれないが、知らないのでこのようにやってしまった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です