Instalar Handset Detection en local con WAMP y Windows

30 09 2008

Pues a raíz de un proyecto que hemos desarrollado en el estudio , hemos empleado el servicio para detección de dispositivos del que ya os hemos hablado en ocasiones, me refiero a Handset Detection.

Pongo aquí unos breves pasos de cómo poder ponerlo a andar en local, bajo una instalación WampServer y en Windows.

Con la mayoría de las instalaciones de WampServer, viene ya preparado todo para la instalación del framework PEAR, que es el que se requiere por defecto para hacer andar el ejemplo de Handset Detection, y que evidentemente facilita las cosas para ponerlo a funcionar.

El ejemplo con PHP del sistema es éste, y en el podéis observar que se usa un require, que busca el paquete HTTP_Request. Este paquete forma parte de un framework de clases denominado PEAR.

1) Instalando el paquete

Lo primero por tanto es lograr instalar dicho paquete PEAR en nuestro servidor local bajo Windows y WampServer. Si vamos a la carpeta donde hemos instalado el WampServer y miramos en la carpeta php, veremos que existe un fichero llamado go-pear.bat y otra carpeta llamada PEAR. Para una instalación local go-pear.bat es nuestro objetivo.

Al hacer doble clic sobre él se nos pregunta si la instalación es en un servidor o en local, escribirmos "local", y confirmamos escribiendo la palabra "yes".

Una vez que hemos hecho esto nos muestra una serie de rutas a configurar, que si tu instalación de WampServer ha sido típica (c:\wamp) no debes tocar nada.

Básicamente, pongo aquí lo que representa las 3 rutas más importantes de la instalación:

  • base $prefix (esta ruta es la instalación base de php en wamp, por lo que en una instalación típica como la que he comentado sería c:\wamp\php)
  • PHP Code $php_dir (esta ruta es el directorio donde se instalaran los paquetes PEAR, y que aconsejamos colocar en al carpeta PEAR de la carpeta php, que es donde viene preparado por defecto con la instalación de wampserver, por tanto sería: c:\wamp\php\pear)
  • Path to CLI php.exe (esta es la ruta donde se encuentra el ejecutable de php, en nuestro caso: c:\wamp\php)

Una vez que hemos continuado, procede a la instalación, es posible que nos arroje algunos WARNINGS relacionados con las últimas versiones de algunos paquetes de PEAR (pero que puede deberse a que nuestra instalación de wampserver no es la última o no está actualizada),

y finalmente nos consulta si queremos modificar el php.ini durante la instalación para proceder a incluir el path de los nuevos paquetes de clases.

Yo aquí he contestado que no, porque siempre prefiero modificar el php.ini a mano. Lo que hay que hacer es abrir el php.ini ( c:\wamp\Apache 2\bin\ ), localizar las lineas de Windows donde se trabaja el include_path, y añadir la siguiente línea (siguiendo con las rutas de nuestra instalación) a las que están comentadas con el ";"

include_path = ".;c:\wamp\php\pear"

Una vez hecho esto, guardamos php.ini, reiniciamos todos los servicios de Wamp y ya estamos listos para pasar a configurar el PEAR para poder usar Handset Detection.

2) Configuración y paquetes necesarios para usar Handset Detection.

Si la instalación ha ido bien, deberíamos poder acceder mediante la ventana de comandos MSDOS a la carpeta c:\wamp\php y alli ejecutar el comando "pear". Este comando nos mostrará una lista de las opciones que tiene. Eso quiere decir que la instalación ha sido correcta.

Para usar Handset Detection, se necesita usar la clase HTTP_Request, que a su vez emplea Net_Socket y Net_URL, con lo que primero pasamos a actualizar estas dos clases, y luego a descargar la clase HTTP_Request.

Para actualizar un paquete sería en la misma línea de comandos:

> pear upgrade Net_Socket

y posteriormente

> pear upgrade Net_URL

Finalmente una vez que tenemos esos paquetes actualizados pasamos a descargar el paquete HTTP_Request de la siguiente manera (también desde la línea de comandos)

> pear install HTTP_Request

Con eso todo debería estar listo. Solo nos queda poder hacer una prueba para ver si nos funciona correctamente. En general para conocer el nombre de cualquier paquete que necesitemos, ya sea para este caso o para cualquier otro, podéis encontrar la lista aquí.

3) Probando la instalación y configuración

Para probarlo lo mejor es crear en la carpeta www de la instalación wamp una página PHP que contenga el ejemplo de Handset Detection, o si queréis este otro (siemrpe que hayáis obtenido de la web de Handset Detection vuestra API KEY una vez registrados de forma gratuita):

PHP:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>[Q] :: Test Detección de Móvil</title>
  6.  
  7. </head>
  8.  
  9. <?php
  10. include "HTTP/Request.php";
  11. define('APIKEY','XXXXXXXXXX');
  12. define('HD_SERVER','http://c1.handsetdetection.com');
  13.  
  14. function sendxml($data, $url) {
  15.    
  16.     $str = "<?xml version=\"1.0\"?><request>";
  17.     foreach($data as $key => $value) {
  18.             $str .= "<$key>$value</$key>";
  19.     }
  20.     $str .= "</request>";
  21.    
  22.     // echo("Peticion: ".$str."<br />");
  23.    
  24.     $req =& new HTTP_Request($url);+
  25.     $req->addHeader("Content-Type", "text/xml");
  26.     $req->setMethod(HTTP_REQUEST_METHOD_POST);
  27.     $req->addRawPostData($str);
  28.     $req->sendRequest();
  29.     $reply = $req->getResponseBody();
  30.    
  31.     // echo("RESPUESTA: ".$reply." <br />");
  32.     return simplexml_load_string($reply);
  33. }
  34.  
  35.  
  36. function doDetect() {
  37.     $options = array('display','flash_lite');
  38.    
  39.     $data = array();
  40.     $data['apikey'] = APIKEY;
  41.  
  42.     // Pick up user agent from headers passed to the server 
  43.     $data['User-Agent'] = $_SERVER['HTTP_USER_AGENT'];
  44.    
  45.     // Random ip address. (Yes - its designed to get it totally wrong sometimes)
  46.     $data['ipaddress'] = $_SERVER['REMOTE_ADDR'];
  47.  
  48.     $str = ""
  49.     // Load up the options array with some random data;
  50.     for($i=0; $i <count($options); $i++)
  51.     {   
  52.           $str .= $options[$i].",";
  53.     }
  54.     $data['options'] = substr($str, 0, sizeof($str)-2);;
  55.  
  56.     // Passing $_SERVER options in is optional.
  57.     $data = array_merge ($data, $_SERVER);
  58.    
  59.     // $result = sendjson($data, HD_SERVER."/devices/detect.json");
  60.     $result = sendxml($data, HD_SERVER."/devices/detect.xml");
  61.  
  62.     return $result;
  63. }
  64.  
  65.  
  66. ?>
  67.  
  68. <body>
  69.     <h1>Test detección de Móvil</h1>
  70.     <h2>Handset Detection System</h2>
  71.     <h3>Resultado del test:</h3>
  72.    
  73.     <?php
  74.         $resultado = doDetect();
  75.     ?>
  76.    
  77.     <dl>
  78.         <dt>MENSAJE:</dt>
  79.         <dd><?php echo($resultado->message); ?></dd>
  80.         <dt>DISPLAY WIDTH:</dt>
  81.         <dd><?php echo($resultado->display->resolution_width); ?></dd>
  82.         <dt>DISPLAY HEIGHT:</dt>
  83.         <dd><?php echo($resultado->display->resolution_height); ?></dd>
  84.         <dt>FLASH LITE SCREENSAVER:</dt>
  85.         <dd><?php echo($resultado->flash_lite->fl_screensaver); ?></dd>
  86.         <dt>FLASH LITE STANDALONE:</dt>
  87.         <dd><?php echo($resultado->flash_lite->fl_standalone); ?></dd>
  88.     </dl>
  89. </body>
  90. </html>

Donde XXX...XXX es la APIKEY que hemos logrado al registrarnos en el sistema.

Si entramos con el navegador, y nos arroja resultados, ya sea un mensaje de Not Found o un mensaje con unos valores, quiere decir que la instalación de pear y la comunicación con Handset Detection está realizada de forma correcta!

Si accedemos a esta página desde un terminal móvil (se puede acceder a un servidor local desde un móvil habilitando una serie de parámetros en la instalación del equipo local, y accediendo con la IP local, por ejemplo: http://192.168.1.34/testmovil/index.php), debería detectarnos nuestro terminal y sacar el ancho de pantalla, el alto y las capacidades flash lite que se indican.

Finalmente esperamos poder poneros la segunda parte de este tutorial que será la que explique como instalarlo en un hosting compartido, sin acceso como administrador del mismo (que según PEAR, es posible mediante un go-pear.php).



Acciones

Informacion

2 respuestas a “Instalar Handset Detection en local con WAMP y Windows”

30 09 2008
Raul Jimenez (23:23:07) :

Plas! Plas! Plas!

Bravo, buenísimo el tutorial. Yo he de decir que antes era de WampServer, aunque ahora me estoy decantando más por XAMPP, que me parece algo más completo.

De todas formas, ambos programas son muy buenos y cualquier elección creo que es acertada ;)

Por cierto, un buen complemento al tutorial de instalación de WURFL y WALL.

Deu!!

4 10 2008
Instalar Handset Detection en local con WAMP y Windows | 2flash2furious :: diseño gráfico, web & multimedia :: por [Q] interactiva (10:01:44) :

[...] Blocketpc > Instalar Handset Detection en local con WAMP y Windows [...]

Deje un comentario

usted puede usar estos tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>