5

Im using Mobile-Detect library to detect some mobile device and change to mobile, iOS works fine, but Samsung galaxy S4 is not being detected,

PHP

require_once 'php/Mobile_Detect.php';
$detect = new Mobile_Detect;
if ($detect->isMobile()){
   include_once 'php/header-full.php';
} else {
    include_once 'desktop.php';
}

Mobile_Detect Version 2.7.6. Testing Site.

Assaf Gamliel
  • 11,935
  • 5
  • 41
  • 56
user3109875
  • 828
  • 12
  • 35

8 Answers8

2

This can be easily achieved though .htaccess file and environment variables of PHP

Check this tutorial

Chintan
  • 614
  • 6
  • 15
1

Try "Detect Mobile Browsers | Open source mobile phone detection".

This : http://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|mobile.+firefox|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))) {
   include_once 'php/header-full.php';
} else {
   include_once 'desktop.php';
}

?>

user2226755
  • 12,494
  • 5
  • 50
  • 73
1

I went to http://demo.mobiledetect.net/ from my Samsung S4, and it worked perfectly. Probably you just need to update the library, or take a look at your settings. Anyways, i use chrome and all my settings are the default ones, and everything worked fine, so probably if you get the latest library, you dont have to care of anything else.

enter image description here enter image description here enter image description here

Carlos Robles
  • 10,828
  • 3
  • 41
  • 60
0

please insert this code and see what happen

echo $_SERVER['HTTP_USER_AGENT'];

if you cant see anything....then this may be because of using proxy. or your browser does not give info about your mobile in useragent string

if above are working then problem may be in your php detect file

0

From your Samsung S4, visit this site: http://demo.mobiledetect.net/. I tried it from my S4 and the site displayed "It is a mobile". So the library is detecting S4 properly.

Also, visit http://whatismyuseragent.com from your phone. See what useragent string is being sent to the webserver from the phone.

Aziz Shaikh
  • 16,245
  • 11
  • 62
  • 79
0

If the library doesn't support this phone, you may manually check the user agent using PHP. The user agent is stored in this PHP variable:

$_SERVER['HTTP_USER_AGENT']

Compare it to the phone's user agent. To find the phone's user agent (specifically for samsung devices), first find the model id here.

As you can see, Samsung Galaxy S4 has this model id: "GT-I9500" and therefore, it's user agent typically starts with "Mozilla/5.0 (Linux; Android 4.2.2; GT-I9500".

Since the android version might be different simply search for the model id in the user agent. For example:

if (strpos($_SERVER['HTTP_USER_AGENT'], "GT-I9500") !== FALSE)
    print "Samsung Galaxy S4";

There is another case in which the phone's browser is not sending the user agent header at all. In this case, you can write JavaScript code that will run on the phone's browser and will send the user agent to you. For this, you have this JavaScript variable:

navigator.userAgent

You can use ajax to send it to your server or handle the case using JavaScript code.

Good Luck!

Yosi
  • 59
  • 3
  • where in http://www.handsetdetection.com/properties/vendormodel/Samsung you found that S4`s user agent contains `GT-I9500` :) ? – voodoo417 Jan 22 '14 at 21:46
  • Just look for Galaxy S4 on the page, and click on the link below. You'll see it leads this page: http://www.handsetdetection.com/properties/vendormodel/Samsung/GT-I9500. So, GT-I9500 is the model id, and the model id is contained in the user agent. – Yosi Jan 22 '14 at 22:28
0

Try the class Mobile Detect. It's an open source. you can get refer the following link

Reference Link

Also try my example too

Click here for my example

shivaP
  • 299
  • 1
  • 2
  • 12
0

Your issue is most likely that you are running your Android phone on desktop mode.

Desktop mode will give a UA of:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24

If not it will identify as:

Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; GT-I9300 Build/IMM76K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

You can read more about this here:

Detecting mobile phone with wurfl or mobiledetect.net not working on Galaxy S3

Community
  • 1
  • 1
Elliot Fehr
  • 764
  • 6
  • 10