PHP

PHPでデバイス判別:スマホ、フィーチャーフォン、キャリア、ブラウザを効果的に分類する方法

今やフィーチャーフォン用のサイトはほとんど見かけませんが、昔は様々なデバイスに対応するために、スマートフォンやフィーチャーフォン、さらにはキャリアやブラウザごとに内容を変える必要がありました。
今回は、PHPを使ってこれらのデバイスを判別する方法についてご紹介します。
ちなみに、この方法はJavaScriptや.htaccessを使っても実現可能です。

PHPでデバイスを判別するコード

<?php
$docomo = "/docomo/";		//ドコモ
$au = "/au/";			//au
$softbank = "/sb/";		//ソフトバンク
$msie = "/index.html";		//IE
$Netscape = "/index.html";	//Netscape
$opera = "/index.html";		//Opera
$firefox = "/index.html";	//Firefox
$pc = "/index.html";		//上記以外のブラウザ
$mobile = "/sp/";		//iPhone


if(isset($_SERVER['HTTP_USER_AGENT'])){
	$user_agent = $_SERVER['HTTP_USER_AGENT'];
	if(eregi("DoCoMo",$user_agent)){header("Location: $docomo");}
	elseif(eregi("UP\.Browser",$user_agent)){header("Location: $au");}
	elseif(eregi("J-PHONE",$user_agent)){header("Location: $softbank");}
	elseif(eregi("Vodafone",$user_agent)){header("Location: $softbank");}
	elseif(eregi("SoftBank",$user_agent)){header("Location: $softbank");}
	elseif(eregi("J-EMULATOR",$user_agent)){header("Location: $softbank");}
	elseif(eregi("MSIE",$user_agent)){header("Location: $msie");}
	elseif(eregi("Netscape",$user_agent)){header("Location: $netscape");}
	elseif(eregi("Opera",$user_agent)){header("Location: $opera");}
	elseif(eregi("Firefox",$user_agent)){header("Location: $firefox");}
	elseif(eregi("iPhone",$user_agent)){header("Location: $mobile");}
	else{header("Location: $pc");}
}else{
	header("Location: $pc");
}
?>

上記、各headerに記述するとページのスマホ、フィーチャーフォン、キャリア、ブラウザを種類別に判別が行えます。

このコードを使うことで、アクセスしてきたユーザーのデバイスがどのようなものかを判別し、適切なページにリダイレクトすることができます。

まとめ

PHPを使ったデバイス判別は、古い手法ではありますが、いまだに有効な場面があります。最近では、レスポンシブデザインによって、デバイスによる表示の違いをあまり意識しなくても良くなってきましたが、特定のデバイスに最適化されたページを提供したい場合などには、このような方法が役立ちます。

 
※流用される場合は自己責任でお願いします。