Mi solución a “escapar carácteres” en php…

2 10 2007

Pues de momento este código me hace el uso, imagino que se debe poder mejorar, pero con este código, inserto los datos de cualquier formulario en bases de datos sin crear ningún conflicto con ningún tipo de conversión, ya sea ISO, utf8 o HTML…

  1. $var_edad = controlChars($_POST["edad"]);

Ahora, el modo de uso es muy sencillo, pero tenemos que tener en cuenta que mysql_real_escape_string() requiere que haya una conexión abierta para funcionar… ok?
De modo que esta función siempre la ejecutaremos después de haber abierto la conexión con la base de datos.
Normalmente en las páginas donde proceso datos, al inicio suelo abrir la conexión y al final la cierro, de manera que siempre mientras uso este código tengo la conexión establecida, es una opción ;)
Igualmente, se aceptan sugerencias, comentarios y lo que venga.

Esto es el resultado de lo que comente en un anterior post…

.: Escapar carácteres para  inserción de datos en MySQL :.



Escapar carácteres, utf-8, inserción de datos en mysql…

27 09 2007

Esta mañana me ha dado por arreglar un problema que venia acarreando desde hace un tiempo, pero que siempre por falta de tiempo lo dejaba aparcado a un lado como si de lentejas se tratara. El problema básicamente es que desde hace un par de meses todas las bases de datos que estaba creando en MySQL, las creaba con codificación latin1_spanish_ci. Y francamente eso es una guarrada.

Hoy en día tal y como está el tema del multilenguage en las páginas web, es una marranada, por que el día en que tengamos que aplicarle otro idioma, a vamos a liar. Pues bien, hoy se ha empezado a hacer esto bien, cada una de las tablas con codificación utf8_general_ci.

Por otro lado, tenia una función para parsear carácteres maliciosos para la base de datos, sobre todo apostrofes, y también para evitar el SQLInjection. Esta función consistía en filtrar las cadenas de texto por la función htmlentities() de PHP.
Bueno, pues maaaaaaaal, otra cagada, por que esto lo que hace es que cualquier simbolo (acento, eñes, dieresis, etc…) los transforma a su código HTML correspondiente, por lo cual al insertar los datos en la base de datos, insertaba una palabra y en lugar de haber la vocal con su acento, aparecía su código HTML correspondiente.

Estas cosas a según que idiomas, no les gusta nada, básicamente por que no existe conversión HTML para todos los idiomas.

La forma correcta de almacenar los datos en una base de datos es tal cual se introducen en los campos de formulario, entonces pensareis “bueno y que hago con los apostrofes de las pel***” pues bien, para ello está la función mysql_real_escape_string() de PHP.

http://www.php-es.com/function.mysql-real-escape-string.html

Mañana os coloco un ejemplo del uso de esta función, de momento echadle un ojo a ver que sacáis en claro.