user3109875
user3109875

Reputation: 828

How to detect samsung galaxy s4 with php mobile detect as mobile

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.

Upvotes: 5

Views: 4074

Answers (8)

Elliot Fehr
Elliot Fehr

Reputation: 774

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

Upvotes: 0

Carlos Robles
Carlos Robles

Reputation: 10947

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

Upvotes: 1

user2226755
user2226755

Reputation: 13167

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';
}

?>

Upvotes: 1

Chintan
Chintan

Reputation: 634

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

Check this tutorial

Upvotes: 2

shivaP
shivaP

Reputation: 297

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

Upvotes: 0

Yosi
Yosi

Reputation: 59

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!

Upvotes: 0

Aziz Shaikh
Aziz Shaikh

Reputation: 16524

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.

Upvotes: 0

user2823329
user2823329

Reputation:

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

Upvotes: 0

Related Questions