Clase para detectar dispositivos móviles con PHP

  • Autor Autor jpmaster
  • Fecha de inicio Fecha de inicio
jpmaster

jpmaster

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
hace tiempo encontre una clase open source, para comprobar si un usuario viene desde un dispositivo movil

aqui les traigo el codigo para los que necesiten en su proyecto, esta completamente funcional si desean comprobarlo pueden ingresar con cualkier dispositivo movil que tengan a la mano a mi web Enlace eliminado espero que les sirva, cualquier consulta comenten este post, si les gusto el tema den un like nada les cuesta 😀

clase php
PHP:
<?php

/**
 * Mobile Detect
 * @license    http://www.opensource.org/licenses/mit-license.php The MIT License
 */
class Mobile_Detect
{

	protected $accept;
	protected $userAgent;
	protected $isMobile = false;
	protected $isAndroid = null;
	protected $isAndroidtablet = null;
	protected $isIphone = null;
	protected $isIpad = null;
	protected $isBlackberry = null;
	protected $isBlackberrytablet = null;
	protected $isOpera = null;
	protected $isPalm = null;
	protected $isWindows = null;
	protected $isWindowsphone = null;
	protected $isGeneric = null;
	protected $devices = array(
		"android" => "android.*mobile",
		"androidtablet" => "android(?!.*mobile)",
		"blackberry" => "blackberry",
		"blackberrytablet" => "rim tablet os",
		"iphone" => "(iphone|ipod)",
		"ipad" => "(ipad)",
		"palm" => "(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)",
		"windows" => "windows ce; (iemobile|ppc|smartphone)",
		"windowsphone" => "windows phone os",
		"generic" => "(kindle|mobile|mmp|midp|pocket|psp|symbian|smartphone|treo|up.browser|up.link|vodafone|wap|opera mini)"
	);

	public function __construct()
	{
		$this->userAgent = $_SERVER['HTTP_USER_AGENT'];
		$this->accept = $_SERVER['HTTP_ACCEPT'];

		if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE'])) {
			$this->isMobile = true;
		} elseif (strpos($this->accept, 'text/vnd.wap.wml') > 0 || strpos($this->accept, 'application/vnd.wap.xhtml+xml') > 0) {
			$this->isMobile = true;
		} else {
			foreach ($this->devices as $device => $regexp) {
				if ($this->isDevice($device)) {
					$this->isMobile = true;
				}
			}
		}
	}

	/**
	 * Overloads isAndroid() | isAndroidtablet() | isIphone() | isIpad() | isBlackberry() | isBlackberrytablet() | isPalm() | isWindowsphone() | isWindows() | isGeneric() through isDevice()
	 *
	 * @param string $name
	 * @param array $arguments
	 * @return bool
	 */
	public function __call($name, $arguments)
	{
		$device = substr($name, 2);
		if ($name == "is" . ucfirst($device) && array_key_exists(strtolower($device), $this->devices)) {
			return $this->isDevice($device);
		} else {
			trigger_error("Method $name not defined", E_USER_WARNING);
		}
	}

	/**
	 * Returns true if any type of mobile device detected, including special ones
	 * @return bool
	 */
	public function isMobile()
	{
		return $this->isMobile;
	}

	protected function isDevice($device)
	{
		$var = "is" . ucfirst($device);
		$return = $this->$var === null ? (bool) preg_match("/" . $this->devices[strtolower($device)] . "/i", $this->userAgent) : $this->$var;
		if ($device != 'generic' && $return == true) {
			$this->isGeneric = false;
		}

		return $return;
	}

}


/* 
//modo de uso
include("Mobile_Detect.php");

$detectar_movil = new Mobile_Detect();


if ($detectar_movil->isMobile()) {
 //   redireccionar a la version movil m.esmp3.net
}


*/

me olvidaba tambien pueden condicionar si solamente quieren comprobar si vienen desde android blackberry etc etc por ejemplo en vez de :

PHP:
if ($detectar_movil->isAndroid()) {
 //   redireccionar a la version movil m.esmp3.net
}
 
Última edición:
Pues suena interesante , pero tengo unas dudas:
Tengo que tener un template version movil? o este codigo lo hace por si mismo..
Donde va el codigo? en el header?

Saludos
 
Pues suena interesante , pero tengo unas dudas:
Tengo que tener un template version movil? o este codigo lo hace por si mismo..
Donde va el codigo? en el header?

Saludos

En caso de que detecte un móvil (un móvil cualquiera o uno en especifico) te redireccionará a la página que tu le digas.
 
En caso de que detecte un móvil (un móvil cualquiera o uno en especifico) te redireccionará a la página que tu le digas.

asi es mi estimado, solo redirecciona al url que apuntes, ahi tu te encargas de tu diseño compatible con mobile 😉
 
Excelente script, sin embargo muchos smartphones por fortuna son capaces de proveer navegación 'real' (por ejemplo iPhone, BlackBerry, Android, etc.) y esta función tambien puede ser útil para "ofrecer" la versión móvil, mas no para redireccionar directamente sin tomar en cuenta lo que el usuario quiera hacer.
 
En esta URL pueden descargar la versión actualizada:

Enlace eliminado
 
se ve muy bien y es muy util para paginas que los celulares en veces no visualizan bien!!
 
Atrás
Arriba