//Detect special conditions devices
$iPod = stripos($_SERVER['HTTP_USER_AGENT'],"iPod");
$iPhone = stripos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$iPad = stripos($_SERVER['HTTP_USER_AGENT'],"iPad");
if(stripos($_SERVER['HTTP_USER_AGENT'],"Android") && stripos($_SERVER['HTTP_USER_AGENT'],"mobile")){
$Android = true;
}else if(stripos($_SERVER['HTTP_USER_AGENT'],"Android")){
$Android = false;
$AndroidTablet = true;
}else{
$Android = false;
$AndroidTablet = false;
}
$webOS = stripos($_SERVER['HTTP_USER_AGENT'],"webOS");
$BlackBerry = stripos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$RimTablet= stripos($_SERVER['HTTP_USER_AGENT'],"RIM Tablet");
//do something with this information
if( $iPod || $iPhone ){
//were an iPhone/iPod touch -- do something here
}else if($iPad){
//were an iPad -- do something here
}else if($Android){
//we're an Android Phone -- do something here
}else if($AndroidTablet){
//we're an Android Phone -- do something here
}else if($webOS){
//we're a webOS device -- do something here
}else if($BlackBerry){
//we're a BlackBerry phone -- do something here
}else if($RimTablet){
//we're a RIM/BlackBerry Tablet -- do something here
}else{
//we're not a mobile device.
}
If you would like information on how to detect a device other than those supported above, feel free to contact me.
Update (9-14-2011): Added BlackBerry & Playbook detection.
Update (9-6-2011): Split Android detection to differentiate between Tablets & Phones.










Feb 4th, 2012 at 11:22 am
Hello, to detect BBerries and playbook table we’d be talking about something like that:
$blackberry = stripos($_SERVER['HTTP_USER_AGENT'],”blackberry”);
or is there any other thing required?
Many thanks for your solution!
[Reply]
Chris Schiffner Reply:
February 4th, 2012 at 11:22 am
I’ll look up the BlackBerry and Playbook user agents tomorrow and update the code to add support.
[Reply]
Chris Schiffner Reply:
February 4th, 2012 at 11:23 am
I’ve updated the example above to detect BlackBerry’s and Playbooks. Hope it helps!
[Reply]
Douglas Reply:
February 4th, 2012 at 11:23 am
Thanks Chris for your contribution, great work!
[Reply]
Mar 14th, 2012 at 10:58 am
How can the code be modified to give the user the option to view the desktop version of the site if required from their mobile device?
Also on the conditional code section i.e.
}else if($iPad){
//were an iPad — do something here
How would add a redirect here to a m.mydomain.com address ?
[Reply]
Chris Schiffner Reply:
March 18th, 2012 at 8:57 pm
You could simply add }else{ //do something } for a desktop version.
As for a redirect — php’s header function is your friend: header(‘Location: http://www.example.com/‘) — http://php.net/manual/en/function.header.php
[Reply]
Jun 14th, 2012 at 6:10 pm
Will the code above also resize it for the mobile device?
[Reply]
Chris Schiffner Reply:
June 15th, 2012 at 1:35 am
This code simply detects the most common mobile os’s. How you use it is up to you but it does not modify how a page displays. The only OS excluded is Windows Mobile — which I will add shortly.
[Reply]
Jun 24th, 2012 at 12:58 pm
Thanks for this, it might not work in every single case (Nokia Symbian and Windows Phone are missing, off the top of my head), and I need OS version checking for blackberrys as I plan on supporting the newer ones, but a very lightweight, usable script that gets the job done.
[Reply]
Chris Schiffner Reply:
June 29th, 2012 at 2:08 pm
While it may not include support for all user agents out of the box it’s quite easily expanded. I’ll try and add in a few more user agents in the near future. Glad you found it useful.
[Reply]
Aug 11th, 2012 at 10:53 am
Hi Chris,
I’ve stripped the details out of this script and left the focus on BlackBerry devices
only. I will be providing useful examples to other developers at the upcoming BlackBerry
Jam conference on August 23rd and this is a fine example of Agent detection for net
based content developers.
Thank you in advance for the useful code snippet :)
$BlackBerry = stripos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$RimTablet= stripos($_SERVER['HTTP_USER_AGENT'],"RIM Tablet");
if($BlackBerry)
{
//we're a BlackBerry phone -- do something here
}
if($RimTablet)
{
//we're a RIM/BlackBerry Tablet -- do something here
}
[Reply]
Aug 11th, 2012 at 3:57 pm
I wanted to add a handy contribution for detecting tablet or mobile device
orientation in order to serve formatted content based on the orientation of the
device in either Portrait or Landscape mode:
/* Specific CSS can be applied to page elements if the user is holding their device in a given orientation. This is the CSS script. */
@media (orientation:portrait)
{
#isPortrait { display: block; }
#isLandscape { display: none; }
}
@media (orientation:landscape)
{
#isPortrait { display: none; }
#isLandscape { display: block; }
}
And these are the blocks you would place in your HTML page:
<div id=”isPortrait”>
//Show the content formatted for Portrait orientation between these Div tags.
</div>
<div id=”isLandscape”>
//Show the content formatted for Landscape orientation between these Div tags.
</div>
[Reply]
Anthony Reply:
December 3rd, 2012 at 2:01 am
What if the switch in the middle of browsing? Does your method still work?
Thanks Anthony
[Reply]
Anthony Reply:
December 3rd, 2012 at 2:24 am
nvm I played with it and it works great. Thanks
[Reply]
Apr 3rd, 2013 at 7:25 am
i want to stay on the http://www.example.nl/index.php if i’m on my desktop and he must load that page with his content
[Reply]
Puntje Reply:
April 3rd, 2013 at 9:26 am
I think if i leave it empty the on de index.php, the computer part, then it works.
Is there also a separate php part for only opera mini. It works different.
[Reply]
Jun 4th, 2013 at 6:20 pm
It works. But now a question about nokia phones and windows phones. How must i redirect this.
Because i redirect ipad, iphone, android mobile, webos, blackberry en rim tablet.
But i don’t see how i must redirect windows smartphone or other smartphones or tablets that are not in de list.
Can someone please help.
[Reply]