sábado, 20 de julio de 2013

Leer variables GET de una URL mediante Javascript

Es posible que necesitemos obtener los valores de una serie de parámetros que nos llegan por GET en una URL mediante Javascript. Con una sencilla función en la que utilizamos una expresión regular sobre el location.href obtendremos un array asociativo con el resultado. La página de la que queremos extraer los valores podría ser example.html?param1=value1¶m2=value2. Código
function getUrlVars() {
 var map = {};
 var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
  map[key] = value;
 });
 return map;
}
Llamada a la función
var params = getUrlVars();
var first = params["param1"];
var second = params["param2"];
 
alert(first);
alert(second);

miércoles, 17 de julio de 2013

Obtener número aleatorio entre un rango de números con Javascript

Con este simple código obtenemos un número aleatorio entre dos números dados.
function randomRange(ini, fin){
 return Math.floor(Math.random()*(fin-ini+1)+ini);
}

Obtener el factorial de un número con PHP

Calcular el factorial de un número es un algoritmo muy simple. Aquí abajo os dejo una implementación realizada en PHP

 function factorial($valor) {
  $res = 1;
  while ($valor > 1) {
   $res*= $valor--;
  }
  return $res;
 }

Eliminar el contenido de un directorio en PHP

Con el código que os dejo a continuación podemos eliminar fácilmente el contenido completo de un directorio mediante PHP.



 function eliminarDirectorio($dir) {
  // Obtenemos un manejador del directorio
  if ($handle = opendir("$dir")) {
   $res = true;

   // Recorremos los archivos del directorio
   while ((($fich = readdir($handle)) !== false) && ($res)) {
    if ($fich != '.' && $fich != '..') {
     // Si el archivo es un directorio llamo recursivamente a la función
     if (is_dir("$dir/$fich")) {
      $res = eliminarDirectorio("$dir/$fich");
     } else { // Eliminamos el fichero
      $res = unlink("$dir/$fich");
     }
    }
   }
   
   // Cerramos el manejador del directorio
   closedir($handle);
   
   // Si se ha eliminado correctamente eliminamos el propio directorio
   if ($res)
    $res = rmdir($dir);
  } else {
   $res = false;
  }
  
  // Devolvemos si se ha podido eliminar el directorio por completo correctamente
  return $res;
 }


jueves, 4 de julio de 2013

Agujero de seguridad en el 99% de los dispositivos Android

Hoy mismo ha aparecido en toda la prensa internacional la noticia de una reciente investigación de la empresa Bluebox Security en el que aseguran haber encontrado un error de vulnerabilidad en el 99% de los dispositivos con sistema operativo Android.

En el blog de la propia empresa Bluebox se explica perfectamente en qué consiste. Para los que tengáis problemas con el inglés el artículo se puede encontrar en español en muchísimas páginas como en la web de El País.

miércoles, 3 de julio de 2013

Oscurecer el color de un objeto HTML mediante Javascript o PHP

Una función que puede ser bastante útil es la de oscurecer un color que tenemos en formato hexadecimal. Yo lo uso para cambiar el color de un objeto HTML al pasar por encima de él y así obtengo el mismo color que el original pero más oscuro.
La función en PHP sería la siguiente:
 function oscurecerColor($color, $cant){
  //voy a extraer las tres partes del color
  $rojo = substr($color,1,2);
  $verd = substr($color,3,2);
  $azul = substr($color,5,2);

  //voy a convertir a enteros los string, que tengo en hexadecimal
  $introjo = hexdec($rojo);
  $intverd = hexdec($verd);
  $intazul = hexdec($azul);

  //ahora verifico que no quede como negativo y resto
  if($introjo-$cant>=0) $introjo = $introjo-$cant;
  if($intverd-$cant>=0) $intverd = $intverd-$cant;
  if($intazul-$cant>=0) $intazul = $intazul-$cant;

  //voy a convertir a hexadecimal, lo que tengo en enteros
  $rojo = dechex($introjo);
  $verd = dechex($intverd);
  $azul = dechex($intazul);

  //voy a validar que los string hexadecimales tengan dos caracteres
  if(strlen($rojo)<2) $rojo = "0".$rojo;
  if(strlen($verd)<2) $verd = "0".$verd;
  if(strlen($azul)<2) $azul = "0".$azul;

  //voy a construir el color hexadecimal
  $oscuridad = "#".$rojo.$verd.$azul;

  //la función devuelve el valor del color hexadecimal resultante
  return $oscuridad;
 }

Y su equivalente en Javascript
function oscurecerColor(color, cant){
 //voy a extraer las tres partes del color
 var rojo = color.substr(1,2);
 var verd = color.substr(3,2);
 var azul = color.substr(5,2);

 //voy a convertir a enteros los string, que tengo en hexadecimal
 var introjo = parseInt(rojo,16);
 var intverd = parseInt(verd,16);
 var intazul = parseInt(azul,16);

 //ahora verifico que no quede como negativo y resto
 if (introjo-cant>=0) introjo = introjo-cant;
 if (intverd-cant>=0) intverd = intverd-cant;
 if (intazul-cant>=0) intazul = intazul-cant;

 //voy a convertir a hexadecimal, lo que tengo en enteros
 rojo = introjo.toString(16);
 verd = intverd.toString(16);
 azul = intazul.toString(16);

 //voy a validar que los string hexadecimales tengan dos caracteres
 if (rojo.length<2) rojo = "0"+rojo;
 if (verd.length<2) verd = "0"+verd;
 if (azul.length<2) azul = "0"+azul;

 //voy a construir el color hexadecimal
 var oscuridad = "#"+rojo+verd+azul;

 //la función devuelve el valor del color hexadecimal resultante
 return oscuridad;
}