Cuál es la mejor forma de almacenar fechas en MySQL

Cuál es la mejor forma de almacenar fechas en MySQL

Buenas prácticas
¿Tenés que desarrollar una aplicación que maneja fechas? Tal vez un portal para reserva de turnos, o quizás algún sistema de membresías por tiempo limitado o por qué no un programa que le pregunte al visitante su fecha de nacimiento y le diga el signo del horóscopo chino al que pertenece. Más allá de cuál sea el objetivo de la aplicación en algún lado vas a necesitar almacenar fechas. Y ese lado será probablemente una base de datos relacional y, más aún, si estás usando PHP, seguramente sea MySQL. Existen varias opciones que podrías usar para definir el tipo de datos del campo en cuestión y la decisión puede no ser trivial. Usar un VARCHAR para almacenar un dato fecha Si bien técnicamente podrías guardar una fecha en un campo…
Leer más
Cuándo usar una clase abstracta y cuándo una interface

Cuándo usar una clase abstracta y cuándo una interface

Buenas prácticas
Un lector de mi libro sobre Programación Orientada a Objetos con PHP me envía esta pregunta a través de LinkedIn: Empecé a responderle a su mensaje pero luego se me ocurrió que sería mejor aprovechar y contestarlo en público así que aquí voy. Empecemos por comprender de qué se trata cada uno. Qué es una clase abstracta En su definición más cruda una clase se dice abstracta si no es posible utilizarla para crear objetos (instancias). Suena un poco raro, ¿no? ¿Para qué quiero tener una clase si no es para crear instancias? La explicación viene asociada al concepto de Herencia (Tema para otro artículo en todo caso). Una clase abstracta puede usarse como base de una jerarquía. Se define de esta forma: <?php abstract class Abstracta { public function…
Leer más
Validaciones… ¿lado cliente o lado servidor?

Validaciones… ¿lado cliente o lado servidor?

Buenas prácticas, Seguridad
Nadie duda de que los campos de los formularios que envían los usuarios deben ser validados. Seguro eso es lo que te dijeron cuando empezaste a estudiar, lo que no es muy claro cuando se trata de programación web es cuál es la manera correcta de hacerlo. En otras palabras, ¿cuáles son las mejores prácticas cuando se trata de validar? Más allá de las herramientas que vayas a usar para realizar la validación, lo primero que debes responder es dónde debe realizarse esa validación, ¿en el cliente o en el servidor? La respuesta corta primero: Idealmente las dos, y si sólo puedo elegir una, definitivamente del lado servidor. ¿Querés más detalles? Te invito a acompañarme a la respuesta larga :) Respuesta larga: ¿Por qué es más importante la validación del…
Leer más

Cuál es el modo más seguro de tratar con passwords en PHP

Buenas prácticas
Es bastante común últimamente recibir noticias de que algún sitio de gran popularidad ha sido hackeado (O, como suele comunicarse, "su seguridad se ha visto comprometida"). Dependiendo del tipo de sitio del que se trate el problema puede preocuparnos más o menos. Claro que eso es cuando somos meramente usuarios del sitio... ¿qué pasa cuándo se trata de un sitio que está bajo nuestra responsabilidad? Aclaremos algo antes de seguir: es imposible hacer un sitio 100% libre de vulnerabilidades. Si hay gente decidida a romper nuestra seguridad lo van a lograr (Si tienen la capacidad técnica y/o el teléfono de alguien que la tenga). Es por eso que es muy importante, no sólo poner trabas a los atacantes si no también dejar un botín poco atractivo para el caso de que…
Leer más
Dónde almacenar la configuración de una aplicación PHP de forma segura

Dónde almacenar la configuración de una aplicación PHP de forma segura

Buenas prácticas
Una pregunta que me llegó de un amigo que viene del mundo .Net (Que parece ser un poco más organizado o estandarizado que el nuestro :). Lo primero que deberíamos preguntarnos es de qué nos estamos queriendo proteger. Por lo general, la posibilidad de que alguien externo a nuestra organización tenga acceso a la configuración de nuestra aplicación no parece muy tentadora... ¿por qué? Básicamente porque puede haber información sensible (Como ser contraseñas, nombres de hosts donde están las bases de datos, etc...) que podrían dar a un atacante una ventaja importante si decidiera hacernos un daño. Una línea de defensa que tenemos es guardar estos archivos en un directorio que no sea públicamente accesible. Si usás el webserver Apache, conocerás seguramente la directiva DocumentRoot: lo que está "a la vista" de…
Leer más