Algunas expresiones regulares y como usarlas en PHP

Esta no es una guía sobre como crear expresiones regulares (aunque me gustaría hacer una). Estas son algunas pocas expresiones regulares que hice hace algo de tiempo, cuando tuve acceso a una lista de nombre, direcciones, números telefónicos, etc. Estaban formateados de maneras muy diferentes (en especial los números telefónicos) por lo que las expresiones regulares que usaba antes de eso tuvieron que ser mejoradas. También hablo sobre como usar estas expresiones regulares para validar campos de entrada en scripts de PHP.

Sentencias preparadas de MySQL en PHP (ejemplos orientados a objetos)

Encuentro triste cuantos sistemas en linea hay desprotegidos aún contra el tipo de ataque más simple, inyecciones de SQL. Esta es una guía y un conjunto de ejemplos sobre el uso de sentencias preparadas de MySQL en PHP. Si quieres ver como un ataque de inyección de SQL funciona puedes leer el artículo previo Un ataque de inyección de SQL. Hay una guía similar a esta pero utilizando las funciones estructurales regulares de la librería MysqlI en Sentencias preparadas de MySQL en PHP (ejemplos estructurados).

Sentencias preparadas de MySQL en PHP (ejemplos estructurados)

Encuentro triste cuantos sistemas en linea hay desprotegidos aún contra el tipo de ataque más simple, inyecciones de SQL. Esta es una guía y un conjunto de ejemplos sobre el uso de sentencias preparadas de MySQL en PHP. Si quieres ver como un ataque de inyección de SQL funciona puedes leer el artículo previo Un ataque de inyección de SQL. Hay una guía similar a esta pero utilizando la interfase orientada a objetos de MysqlI en los ejemplos en Sentencias preparadas de MySQL en PHP (ejemplos orientados a objetos).

Un ataque de inyección de SQL

Ya que escribí dos guías diferentes sobre el uso de sentencias preparadas de MySQL en PHP, y una de las razones para usar esto es para prevenir ataques de inyección de SQL, voy a escribir un poco sobre estos ataques que tantos sitios web han sufrido y continúan sufriendo incluso hoy. Más que definir que es este ataque, el objetivo es mostrar como funciona.

Los prefijos confusos para múltiplos binarios

Expresar tamaños en informática puede ser confuso a veces, esto es debido a la falta de estandarización entre fabricantes de hardware, programas y sistemas operativos en lo referente al uso de prefijos (K, M, G) al expresar múltiplos binarios. Un estándar existe, de esto trata el ISO/IEC 80000-13:2008, define un estándar para el uso de prefijos para múltiplos binarios, sin embargo, al momento de escribir esta publicación no ha sido ampliamente adoptado.

Esta confusión se origina de los comienzos de la informática. En computación, la unidad más básica de información es el bit, que puede verse como un interruptor, solo tiene dos estados, encendido y apagado (1 y 0). Debido a que solo se puede guardar un estado (encendido o apagado) en un bit, una unidad más grande fue creada, el byte, que es solo un grupo de bits. Un byte consiste de 8 bits, y esto nos permite representar un valor, de 0 a 255.

El SI (Sistema Internacional de Unidades) define que el prefijo K (Kilo) denota 1000, y M (Mega) representa 1000×1000, esto esta basado en nuestro sistema numérico de base 10. Originalmente 1 kilobyte quería decir 1000 bytes (103) y no había ninguna confusión. Sin embargo, en el mundo de la computación, debido a que todo está basado en el bit, el sistema numérico en uso es en base 2. La gente notó la conveniencia de denotar 1 kilobyte como 1024 bytes (210), y un megabyte como 1024×1024 (220); en lugar de la equivalencia SI de Kilo y Mega que denotan 1KB como 103 bytes, y 1MB 106 bytes.

Manejando MySQL desde la linea de comandos

Si nuestro servicio de hospedaje nos ofrece un shell SSH y tiene MySQL instalado, o si tenemos MySQL instalado en nuestra computadora, podemos administrar una base de datos desde la interfase de linea de comandos. Si desarrollamos programas que requieres del uso de una base de datos MySQL, es muy probable que ya estemos familiarizado con las peticiones de SQL. Utilizando el comando mysql podemos enviar estas peticiones a la base de datos.

Como crear vistas previas escaladas en PHP

Siempre es una buena idea generar tantos tamaños de vistas previas como sean requeridas para un sistema basado en web, justo después de que la imagen es transferida al servidor. Algunas de las ventajas de generar y guardar las vistas previas son que se reduce el tiempo de procesamiento que necesita el servidor si se generan las vistas previas al ser requeridas, y por su puesto se puede reducir el consumo de ancho de banda al no enviar una imagen de tamaño completo cuando esto no es necesario.

Trabajando con UTF-8 en PHP, MySQL y Apache

Como ya he publicado anteriormente en este sitio web, creo que es una buena idea estandarizar en una misma codificación de caracteres a través de todas las partes de un sistema, y ya que mi codificación de caracteres preferida es UTF-8, cuando creo un sistema con PHP reviso lo siguiente:

  • Que el navegador recibe e interpreta la salida de mis scripts de PHP como UTF-8.
  • Que los formularios en (X)HTML aceptan UTF-8.
  • Que PHP trata los datos recibidos de una base de datos de MySQL como UTF-8.