PHP Check mobile device

2

I need via PHP, some function that tells me if the user's device is mobile or not, or, at least tell me the resolution of it. Anyone have any tips?

    
asked by anonymous 02.04.2016 / 13:31

4 answers

6

Well according to colleagues already posting in general if you compare the USER-AGENT or the browser itself to determine whether it is mobile or not, the problem in my view is that there are many models of devices and browsers so sometimes several can pass then the ideal would be to use USER-AGENT combined with regular expressions to ensure, but that too is annoying and time consuming, so I've been using the class Mobile Detect , which for me has been quite useful because it says whether it's Tablet or Phone and which the exact model too.

<?php
// Inclui e inicia a classe
require_once("Mobile_Detect.php");
$detect = new Mobile_Detect;

// Testa se é Tablet ou Telefone
if ($detect->isMobile()) {
 echo "Diz que é um Dispositivo Movel";
}

// Função que testa e diz a versão do aparelho
echo $detect->version("iPhone"); // 3.1 (float)
?>


As far as detecting the resolution you will only be able to use JavaScript since PHP only runs on the server side or it does not have access to the hardware of the machine itself.

For this you can use 2 types of basic functions that combined have seen 4, because it is always height x width that they are:

  • screen.width : Get the width of the person's screen ie the resolution that the machine is operating 800 > [x1080].

  • screen.height : Get the screen height of the person or the resolution that the machine is operating [800x] 600 or [1024x] 768 or [1920x] 1080 >.

  • screen.availWidth : Get the width of the person's screen, but it discounts the unused part for you, such as the browser address bar the scroll bar, favorites bar among others that the user may have, ie it is the really usable area of the browser and in general will always be smaller than the area of the screen.width ".

  • screen.availHeight : Get the height of the person's screen but it discounts the unused part such as the browser address bar, the scroll bar, favorites bar among others, or it is the really usable area of the browser and generally will always be smaller than the screen.height area.

  • >

But attention : Both screen.availWidth and screen.availHeight do not work as well as they should, and sometimes they bring strange values.

<script>
var lagura = screen.width, altura = screen.height;
alert(lagura + " x " + altura);

var laguraDisponivel = screen.availWidth, alturaDisponivel = screen.availHeight;
alert(laguraDisponivel + " x " + alturaDisponivel);
</script>


It is worth remembering that there are other ways of capturing the size of the screen or the HTML document or of the elements, as well as the position of the device lying down or landscape (portrait) , I'll leave that link - First, Understand Your Screen - if you want to know these other forms.

    
03.04.2016 / 05:04
4

At Detect Mobile Browsers we get scripts that can detect mobile applications, and in different languages.

The PHP code is this:

<?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|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');

The above code simply tests if the user agent is mobile and redirects the http call.

    
03.04.2016 / 03:52
2

The best that I found I hope I have helped!

<?php
$mobile = FALSE;

$user_agents = array("iPhone","iPad","Android","webOS","BlackBerry","iPod","Symbian","IsGeneric");

foreach($user_agents as $user_agent){

    if (strpos($_SERVER['HTTP_USER_AGENT'], $user_agent) !== FALSE) {
        $mobile = TRUE;

        $modelo = $user_agent;

        break;
    }
}

if ($mobile){

    echo "Acesso feito via ".strtolower($modelo);

}else{

    echo "Acesso feito via computador";
}
?>
    
22.10.2017 / 13:43
1
<?php
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$ipad = strpos($_SERVER['HTTP_USER_AGENT'],"iPad");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
$symbian =  strpos($_SERVER['HTTP_USER_AGENT'],"Symbian");

if ($iphone || $ipad || $android || $palmpre || $ipod || $berry || $symbian == true) {
    echo "Olá, eu sou mobile";
} else {
    echo "Olá, eu sou um computador";
}
?>
    
02.04.2016 / 14:18