Cómo eliminar registros antiguos usando PHP y MySQL

Cómo hacer para...
Me llega este correo de un ex alumno:   Mauro como estás? Espero que muy bien! Sigo con el proyecto del centro cultural y quisiera saber si hay alguna forma de generar un script en sql que me borre los eventos que cargue a los cuales ya les haya pasado la fecha. Saludos,   Si quisiéramos adherir estrictamente a la pregunta, la respuesta sería "Sí"... pero sería un poco mala persona si lo dejara ahí, ¿cierto? :) Voy a profundizar un poco para no dejar a nadie con la intriga. Una forma de resolver el problema desde sql (Asumo que se trata de MySQL) sería generar un procedimiento almacenado o directamente tener a mano una consulta que hiciera lo que se busca: borrar los eventos a los que les haya pasado…
Leer más
Cómo iniciar sesión en una web utilizando PHP

Cómo iniciar sesión en una web utilizando PHP

Cómo hacer para...
  Me llegó esta pregunta a través de un grupo de Facebook en el que participo: El tema me recuerda un poco lo que escribí sobre obtener información de un sitio que no ofrece una API pero, si bien el problema es similar no es exactamente el mismo. La idea aquí es simple, se trata de obtener programáticamente la información que podemos obtener usando un navegador para entrar a algún sitio. Recientemente un amigo tiene en una farmacia me pedía ayuda para lograr algo bastante parecido: lo que él buscaba era ingresar al sitio de la droguería (su proveedor) y consultar el stock de un determinado medicamento (Algo que puede hacer muy sencillamente ingresando manualmente al sitio... imaginate que hacer una consulta por una buena cantidad de productos no es para…
Leer más
Cómo filtrar un arreglo multidimensional por clave en PHP

Cómo filtrar un arreglo multidimensional por clave en PHP

Cómo hacer para...
Me llegó esta pregunta a través de twitter: Veamos el arreglo en mayor detalle: Por lo que se ve, se trata de un array de arrays. El primer índice es por número y la segunda dimensión tiene índices string y, viendo el contenido del mismo entiendo que se trata del resultado de alguna consulta a una base de datos (Siendo que los elementos parecen tener la misma estructura y especialmente al haber un elemento llamado "id"). Muy bien, entonces el objetivo sería obtener sólo aquellos elementos en los cuales la columna "condial_39" vale 1, en este caso sería el array completo, pero obviamente este podría no ser el caso. Se me ocurren diferentes formas de lograr este objetivo: A la vieja usanza Simplemente se trata de hacer una recorrida del…
Leer más
Validaciones… ¿lado cliente o lado servidor?

Validaciones… ¿lado cliente o lado servidor?

Buenas prácticas, Seguridad
La respuesta corta primero: las dos (y si sólo puedo elegir una, definitivamente del lado servidor). Respuesta larga: ¿Por qué es más importante la validación del lado servidor que del lado cliente? Sencillamente porque tenés mucho más control sobre lo que sucede. En una aplicación de escritorio (o digamos, una aplicación que no sea de tipo cliente-servidor) no existe este problema: la aplicación es una sola con lo cual, lo que el front-end captura puede ser considerado confiable y volver a realizar la validación en el backend resultaría redundante. En cambio, en el entorno de una aplicación web (o una cliente-servidor), se trata realmente de dos aplicaciones independientes. Pensá un momento en cómo es el modelo de ejecución de una aplicación web: El cliente realiza un pedido El servidor responde…
Leer más
Cómo restringir el acceso a una web según el país del visitante

Cómo restringir el acceso a una web según el país del visitante

Cómo hacer para...
Una persona hizo esta pregunta en un grupo de desarrolladores de Facebook y me atacó la curiosidad. Para empezar, se me ocurren dos formas de atacar el problema, dependiendo de tus conocimientos, hosting que estés usando, etc... En cualquiera de los casos, lo mejor que podremos hacer será filtrar el tráfico en base a la dirección IP desde la que nos están visitando (Cada país tiene un rango de direcciones IP asignadas, con lo cual, suele ser una medida suficientemente buena). De lo que se trata en definitiva es de verificar si la IP del visitante está dentro de las IPs permitidas y, en caso contrario redireccionarlo a algún otro lado o mostrarle algún mensaje especial. Probablemente sea más fácil tener una lista de IPs prohibidas que permitidas (Suelen ser…
Leer más
Cómo tratar archivos comprimidos con PHP

Cómo tratar archivos comprimidos con PHP

Cómo hacer para...
Recientemente me tocó realizar una modificación a un sistema que había desarrollado para recibir un único archivo comprimido, en lugar de un conjunto de archivos en forma individual. Dejando de lado los ajustes hechos en el front-end (No fue gran cosa realmente, se trató de cambiar un formulario con 5 inputs por uno solo y, como lo había hecho usando el framework Symfony esa parte fue simple, ni tuve que tocar HTML), la parte interesante fue cómo procesar el archivo comprimido. Para empezar, algo que tuve que acordar con el usuario era el formato de compresión que íbamos a utilizar. Obviamente no es lo mismo descomprimir un archivo .rar que un .zip (Diferentes formatos, diferentes algoritmos de compresión, etc...). En mi caso no tuve problema porque tenía la posibilidad de definir…
Leer más
Cómo interactuar con MailChimp usando PHP

Cómo interactuar con MailChimp usando PHP

Cómo hacer para...
Uno de mis SaaS favoritos es MailChimp (El que uso para el envío de mis campañas de e-mail marketing y para algunos clientes también). Si bien su interface es algo rústica (A veces cuesta encontrar el modo de realizar ciertas tareas, sobre todo al comienzo cuando no se conoce bien), es sumamente funcional (Hasta tiene workflows automatizados). Pero, como siempre, las posibilidades que brinda de fábrica son más limitadas de lo que a un desarrollador le gustaría... afortunadamente, cuenta con una API muy buena que permite manipular todos los objetos del sistema y lograr algunas cosas que desde la interfaz web son complejas (o directamente imposibles). Algo que me sucedió recientemente (y que dio origen a este post) fue la necesidad de realizar un mismo envío (el cual incluyera el disparo de nuevos…
Leer más
Cómo generar archivos PDF con PHP

Cómo generar archivos PDF con PHP

Cómo hacer para...
Una necesidad bastante común en el desarrollo de aplicaciones basadas en web (Especialmente las que se usan dentro de ambientes corporativos) es la de emitir reportes. Una forma simple de resolver este problema es la generación de páginas html cuyo único objeto es ser impresas y dejar al usuario la decisión de guardarlas en lugar de imprimirlas. Si bien esta solución puede ser suficiente cuando se trata de emitir un reporte a un usuario, ciertamente no es lo ideal cuando se trata de intercambiarlo con algún otro sistema. Particularmente en este artículo voy a mostrarte algunas formas de generar archivos pdf usando PHP. Librería PDF de PHP Existe una extensión de PHP llamada PDF, la cual está basada en la librería PDFlib (Desafortunadamente, una librería propietaria). Esta librería debe ser instalada como una…
Leer más
Cómo determinar la versión de PHP de un sistema

Cómo determinar la versión de PHP de un sistema

Cómo hacer para...
Una de las primeras tareas que debemos encarar cuando realizamos una auditoría de código de un sistema es detectar la versión de PHP que se está utilizando. Es importante saberlo para darnos una idea de qué tanto mantenimiento se ha realizado sobre el código y hasta cuánto se puede mejorar apalcándonos en las últimas características disponibles (O qué tan costoso será incorporarlas debido a refactors y demás). Hay diversas formas de encarar esta tarea. Nombraré algunas: Qué nos dice el webserver Una forma muy sencilla es realizar una petición al servidor web y analizar los encabezados de la respuesta. Ejemplo: No hace falta ser muy perspicaz... si el webserver tiene instalada la versión 5.3.29... el código a lo sumo está desarrollado usando esa versión. Si bien no es una información 100%…
Leer más
Cómo hacer backups con MySQL

Cómo hacer backups con MySQL

Cómo hacer para...
Cuando una aplicación entra en producción (si no antes), resulta clara la necesidad de realizar backups. Por más que uno esté usando hostings virtualmente irrompibles (Como Digital Ocean), nunca se puede ser demasiado precavido. Por otro lado, seguro que el código de la aplicación que hiciste es una obra de arte digna del Louvre, pero, lo realmente importante son los datos que el cliente genera con ella (¡al menos para él!). Hay varias formas de resolver este problema, voy a nombrar algunas en orden de simplicidad decrecreciente (Es decir, empiezo por la más fácil :) ): Usando MySQL WorkBench Desde la pantalla principal (Una vez conectado a un servidor) Arriba a la izquierda encontramos el menú "Management": De ahí tenemos la opción "Data Export": Eso nos lleva a la pantalla…
Leer más