NYCPHP Meetup

NYPHP.org

[nycphp-talk] Browser detection

Federico Ulfo rainelemental at gmail.com
Wed Jun 12 12:48:06 EDT 2013


Hey Peter, because email clients don't allow javascript I had to implement
the browser detection in PHP. Perhaps looks like your detection is done on
the useragent string, so I believe your client solution is equivalent to
any server solution.

Anyway thanks for sharing this.


On Sun, Jun 9, 2013 at 9:20 PM, Peter Sawczynec <ps at blu-studio.com> wrote:

> It is definitely time to be using Responsive Grid (as there are just too
> many platforms and device screen sizes to go custom on all of them) and
> then theoretically one would not need browser detection. But if you still
> have a separate mobile version of a desktop site…****
>
> ** **
>
> I looked at all the options (WURFL, special php class libraries, etc).
> They were all too heavy and much too specific. Those old tools were for a
> time when tangible code breaking platform capabilities differences and
> browser differences were still important.****
>
> ** **
>
> Today - at least here in North America - with html5/webkit standards
> support virtually omnipresent, I find detecting generally for desktop vs
> tablet vs mobile is really all one needs to know.  ****
>
> ** **
>
> So for a couple of years now I have been using a really small  javascript
> browser detection script to detect for mobile by checking on a trifecta of:
> ****
>
> a) mobile OS in the user agent string****
>
> b) orientation****
>
> c) touch****
>
> ** **
>
> In actual use it looks quite much like the snippet below. I've made many
> versions of it including with cookies to save the user preference. This
> particular one below allows to route iPad users directly to the desktop
> site. You can customize it by adding more or less entries into the mobile
> OS regular expression and/or change up the logic a little.  ****
>
> ** **
>
> var agent = navigator.userAgent.toLowerCase();****
>
> // If the screen orientation is defined we are in a modern mobile OS****
>
> var mobileOS = typeof orientation != 'undefined' ? true : false;****
>
> // If touch events are defined we are in a modern touch screen OS****
>
> var touchOS = ('ontouchstart' in document.documentElement) ? true : false;
> ****
>
> // If is mobile user agent****
>
> var isanymobile =
> (/iphone|ipad|ipod|android|blackberry|symbianos|symbian|sonyericsson|samsung|webos|wap|motor|nokia|mini|windows\sce|palm/i.test(agent));
> ****
>
> var isiPad = /ipad/i.test(agent);****
>
> function check_mobile() {****
>
>                 if (mobileOS && touchOS && isanymobile && !isiPad) {****
>
>                                 window.location = 'http://m.anysite.com/';
> ****
>
>                 }****
>
> }****
>
> check_mobile(); ****
>
> ** **
>
> This post on a Samsung Galaxy Tab forum has a really good example of this
> type of mobile detection script in use too:
> http://www.thegalaxytabforum.com/index.php?/topic/621-detecting-android-tablets-with-javascript/
> ****
>
> ** **
>
> There is also special website called: http://detectmobilebrowsers.com/that gives the basic overview of how this type of mobile OS detection
> works.  ****
>
> ** **
>
> This concept has been discussed in detail too on stackoverflow.com****
>
> ** **
>
> Warmest regards, ****
>
>  ****
>
> Peter Sawczynec ****
>
> Technology Dir.****
>
> blūstudio ****
>
> 941.893.0396****
>
> ps at blu-studio.com <ps at sun-code.com> ****
>
> www.blu-studio.com ****
>
> ** **
>
> *From:* talk-bounces at lists.nyphp.org [mailto:talk-bounces at lists.nyphp.org]
> *On Behalf Of *Federico Ulfo
> *Sent:* Wednesday, May 01, 2013 3:52 PM
> *To:* NYPHP Talk
> *Subject:* [nycphp-talk] Browser detection****
>
> ** **
>
> Hi all, how do you solve the problem of the browser detection?****
>
> ** **
>
> The PHP built in function get_browser() doesn't seams to work very well,
> it's slow and inaccurate, it also need a huge browscap.ini file to be
> loaded and updated, and looks like isn't maintained really well.****
>
> ** **
>
> The most accurate library I've found uses the user-agent-string.info API,
> which isn't very fast, and it doesn't tell the device type, such as iPhone,
> iPad, Android, etc.****
>
> ** **
>
> Not satisfacted by the available solutions I've decided to create a
> library that with dependency injection loads other parser, so it's flexible
> and accurate. The library, Sail\Useragent, is open source and available on
> packagist:****
>
> https://github.com/rainphp/useragent****
>
> ** **
>
> _______________________________________________
> New York PHP User Group Community Talk Mailing List
> http://lists.nyphp.org/mailman/listinfo/talk
>
> http://www.nyphp.org/show-participation
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nyphp.org/pipermail/talk/attachments/20130612/045a26bd/attachment.html>


More information about the talk mailing list