Jump to content
Larry Ullman's Book Forums

Finding If User Is On Smartphone Or Desktop


Recommended Posts

Do any of your books(Larrry) contain information on how to checki if a user is accessing a webpage on a desktop or smartphone?  I want to create seperate web pages and css files for each type- desktop and smartphone.  Would it be better to use PHP or Java? Thank you

Link to post
Share on other sites

I also want to have different sites for desktop and mobile.
But I want to detect the screen width so tablet and larger get the full website and smaller gets the moble website.
But I haven't researched how to do it because I'm working on something else right now.

Link to post
Share on other sites

I use this code on some of my sites. It serves up a different page for phones. You would need to amend it for tablets.

 

function mobilePhone() {
	$type = $_SERVER['HTTP_USER_AGENT'];
	if  ((strpos((string)$type, "Windows Phone") != false) || (strpos((string)$type, "iPhone") != false) || (strpos((string)$type, "Android") != false) )
		{ return true; }
	else 
		{ return false; }
}

if (mobilePhone() == true) {
	header('Location: http://www.example.com/mobile.html'); }
?>

 

 

Link to post
Share on other sites

Margaux, I think that's pretty dangerous code. It gives a very false sense of handling the problem, when it really doesn't. Compare your code with that used by detectmobilebrowsers.com:

 

 

<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
header('Location: http://detectmobilebrowser.com/mobile');
?> 
  • Upvote 1
Link to post
Share on other sites

Thanks Larry for pointing out another useful resource.

 

Abigail and I are looking for detection of mobile phones only  - tablets are served the same site as desktops. Unfortunately the code you've referred to would mean tablet users would be served the mobile site.

 

What do you think of the Mobile_Detect class which allows you to target tablets specifically thereby excluding them from the redirect?

 

I agree that there are big downsides to creating different sites for different devices, but sometimes there are strong arguments to do so.

Link to post
Share on other sites

I've not used that other class but it looks okay. 

 

Just for my own benefit of understanding your reasoning, a 7" Nexus tablet or a small Kindle will be served the same content as someone using a desktop computer with a 27" screen? And what would you do with an iPod? It's not a mobile phone technically but it's the same user experience (except for downloading data) as an iPhone. 

 

Yes, to be clear, there are arguments to both approaches (separate sites and redirection or one responsive site). It's a lot of work either way and I wouldn't want anyone to make that decision casually. 

Link to post
Share on other sites

Just for my own benefit of understanding your reasoning, a 7" Nexus

tablet or a small Kindle will be served the same content as someone

using a desktop computer with a 27" screen? And what would you do with

an iPod? It's not a mobile phone technically but it's the same user

experience (except for downloading data) as an iPhone.

Good questions which highlight the decisions a web designer, developer and indeed the owner are required to make.They also highlight how increasingly complex web development is becoming. What are we going to do when google glass comes online?

 

I always start with the users (e.g.what device they will be using to access the site and where from ) and what the objective of the page is e.g. selling, dissemination of information etc. Obviously, cost and time constraints have to be factored in. These considerations determine what devices need to be targeted with separate sites, responsive design or not at all.

 

Link to post
Share on other sites
  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...