Pasar Array por POST con PHP

Si queremos pasar un array por POST y lo hacemos tal cual, veremos que la cosa no acaba de funcionar. La manera correcta de hacerlo es serializando previamente nuestro vector y una vez enviado, deserializarlo. Para ello PHP dispone de las funciones serialize y unserialize que harán el trabajo por nosotros.

En el siguiente ejemplo, vemos un uso sencillo de este método para enviar nuestros datos por la web:

<?php

if(!isset($_POST['frutas']) && $_POST['frutas']=="" ) {
  // Creamos el array frutas
  $frutas[] = "Cereza";
  $frutas[] = "Pera";
  $frutas[] = "Fresa";
  $frutas[] = "Manzana";
} else {
  // si existe lo deserializamos para poder tratarlo
  $frutas = unserialize(stripslashes($_POST['frutas']));
  var_dump($frutas);
}
?>
<html>
<form method="POST">
  <input type="hidden" name="frutas" value='<?php echo serialize($frutas) ?>'></input>
  <input type="submit" value="Pasar">
</form>
</html></pre>
El resultado de hacer un var_dump de la variable $frutas serializado sería:
<pre dir="ltr"><span style="color: #cc0000;">a:4:{i:0;s:6:"Cereza";i:1;s:4:"Pera";i:2;s:5:"Fresa";i:3;s:7:"Manzana";}</span>

Si queremos, por ejemplo, enviar un array desde el lado del cliente mediante AJAX, podríamos por ejemplo, crearnos un método javascript sencillo que nos serializase un array y así luego poder desserializarlo desde PHP.

Mañana publicaré en un nuevo post una función serialize para JavaScript, de este modo, podemos enviar desde el lado cliente un array serializado con el submit de un formulario o mediante AJAX.

¿Qué son los QR-Codes?

QR-Code¿Y esto qué es?

Pues los “puntos aleatorios” que ves en el dibujo de la izquierda no son más que el QR-Code del texto http://manelperez.com, pero, exactamente ¿qué son estas imágenes?

¿Qué són los QR-Codes?

Un código QR es algo muy similar a un código de barras tradicional sólo que almacena la información en una matriz de puntos con lo qual conseguimos una capacidad de almacenameinto mucho mayor. Las siglas QR vienen de la palabra inglesa “Quick Response” (Respuesta rápida), nombre que le dieron sus desarrolladores para destacar la velocidad de lectura de un lector de este tipo.

En una de estas imágenes tan curiosas podemos almacenar hasta 4296 caractéres alfanuméricos o 7098 caractéres numéricos.

En Japón, lugar en el que se inventó a cargo de la empresa Denso-wave en 1994 están ampliamente extendidos, pero no ha sido hasta estos últimos años que se están poniendo de moda en la red a nivel global. Continue reading

Configurar Doctrine en Symfony

Doctrine Logo Symfony integra Propel ORM por defecto, sin embargo, Doctrine está ganando puntos sobre su rival.

La principal ventaja de cada uno de ellos es:

Propel: Está completamente integrado con Symfony y decenas de plugins sólo funcionan para Propel.

Doctrine: Tiene muy buen rendimiento en ejecución y una forma muy concisa al escribir consultas complejas.

Si te has decidido a utilizar Doctrine en lugar de Propel y no sabes como integrarlo con Symfony, aquí te dejo los pasos para activarlo. Continue reading

Qué es Doctrine ORM?

Qué es un ORM?

Un ORM o (Object Relation Mapper) es una técnica de programación que nos permite convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional, es decir, las tablas de nuestra base de datos pasan a ser clases y los registros objetos que podemos manejar con facilidad.

fig02

Continue reading

Linux KeyLogger

keyloggerLinux KeyLogger o LKL es una herramienta que registra en un archivo todas las teclas que se han pulsado en una máquina. Generalmente, suele utilizarse con fines poco saludables, como por ejemplo, obtener el password de acceso al correo de la chica que te gusta de la uni, obtener el número de tarjeta de crédito de una persona X… así podemos seguir un buen rato maquinando cosas poco recomendables, sin embargo, su uso oficial es como herramienta de diagnóstico utilizada en el desarrollo de software.

Aquí os dejo como instalarlo en Ubuntu y hacer que se inicie automáticamente al encender la computadora:
Continue reading

Convertir CD a MP3 en Ubuntu con Sound Juicer

Sound Juicer LogoHoy vamos a ver como podemos convertir un CD de música a formato MP3. Para ello utilizaremos el prgorama Sound Juicer. Sabremos si lo tenemos instalado si vamos a “Applications > Sound & Video > Audio CD Extractor”, en caso negativo, ya sabeis: sudo apt-get install sound-juicer También deberemos tener instalado el paquete gstreamer0.10-plugins-ugly-multiverse, si no lo tenemos:
sudo apt-get install gstreamer0.10-plugins-ugly-multiverse
Continue reading

Instalar DBDesigner4 en Ubuntu

DBDesigner4 logoDBDesigner4 es una aplicación gratuita que integra diseño de bases de datos, modelado, creación y mantenimiento en un entorno único.

Instalar DBDesigner4 en Ubuntu y hacer que funcione es relativamente fácil, el problema viene cuando quieres hacer conexiones con la base de datos para hacer, por ejemplo, ingeniería inversa y obtener el modelo gráfico de las tablas.

Para que esto no nos suceda, aquí os dejo los pasos a seguir para que os funcione en vuestra Ubuntu a la primera. Continue reading

Manipular archivos Excel con PHP

excel_2007¿Es posible tratar archivos xsl con PHP? pues un alma caritativa se ha currado una librería llamada PHP-ExcelReader basada en otra librería Java que nos permite tratar archivos de Excel con PHP de manera sencilla.

Aquí os dejo un ejemplo bastante simple que abre un archivo .xsl y pinta por pantalla todas las pestañas y su información en una tabla, muy simple, pero seguro que os da las bases para poder hacer lo que necesiteis. Continue reading

Explain MySQL para optimizar tus consultas

MySQL DolphinExplain es una potente herramienta que MySQL pone a nuestra disposición para orientarnos sobre como está ejecutando una consulta el motor de la base de datos.

Esto nos es de mucha utilidad cuando creamos una consulta nueva, pues nos indica que índices va a utilizar, de que tipo son, como de efectiva será la respuesta al usar esos índices… por lo tanto, podemos detectar rápidamente, por ejemplo, de que nuestra consulta no está bien formada o que nos falta un índice en algún campo concreto.

Si ejecutamos la siguiente consulta:

EXPLAIN SELECT *
FROM user u
INNER JOIN user_profile up ON u.id = up.user_id

Obtendremos una respuesta como esta:

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE up ALL user_id_idx NULL NULL NULL 13
1 SIMPLE u eq_ref PRIMARY PRIMARY 4 futbol.up.user_id 1

Pero, ¿qué quieren decir estas columnas? ¿qué información nos dan? Continue reading