PHP Check mobile device

Asked

Viewed 12,776 times

3

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. Does anyone have any tips?

  • If you want to get the screen resolution think about using Javascript, I personally don’t know any PHP solution for this. But if you really want to detect mobile devices I left a solution below.

4 answers

6

Well as colleagues already posting in general compares the USER-AGENT or is the browser itself to determine whether it is mobile or not, the problem to my view is that there are many models of devices and browsers so several times can pass beaten, then the ideial would be to use the USER-AGENT combined with regular squeezes to ensure, but this is also boring and time consuming, so I have used the class Mobile Detect, which for me has been quite useful because it says whether it is Tablet or Phone and which exact model also.

<?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 for detecting the resolution you will only be able to use Javascript since PHP only runs on the server’s side or it does not have access to the machine’s hardware itself.

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

  • screen.width: It takes the width of the screen of the person or is the resolution that the machine is operating 800[X600] or 1024[x768] or 1920[x1080].

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

  • screen.availWidth: It takes the width of the screen of the person but it takes out the parts not used by you, such as the browser address bar the scroll bar, bookmark bar and 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 "screen.width".

  • screen.availHeight: It takes the height of the screen of the person but it removes the unused parts as the browser address bar the scroll bar, favorite bar among others or it is the really usable area of the browser and in general will always be smaller than the area of the "screen.height".

But attention: so much screen.availWidth as the 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>


Remember that there are other ways to capture the screen size or the HTML document or elements, as well as the rest of the device lying down (Landscape) or and foot (Portrait), I’ll leave that link - First, Understand Your Screen - if you want to know these other ways.

5

On the website Detect Mobile Browsers we get scripts capable of detecting mobile applications, and in different languages.

The code in PHP 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.

2

<?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";
}
?>
  • 1

    the first 7 lines picks up various systems, the if checks which is the mobile, for example if it is android, it will consider true and will show the msg "Hello, I am mobile", and so goes with the other systems. and the I if you access by computer it shows the msg "Hello, I am a computer"

2

The best I could think of!

<?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";
}
?>
  • I made an edit to show the code you had placed. When posting code in questions or answers, use the sample code button ({ }) in the editor.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.