domingo, 13 de julio de 2008

Se me van las horas con las comillas...

¡Cuánto tiempo me hace perder esto de ser autodidacta de la programación web!.

Estaba necesitando un sistema de autentificación de usuarios para un sitio. Es cierto que en la web hay montones para bajar, adaptar y utilizar (por ejemplo, éste), pero quería hacerlo desde cero, para entender bien cómo funcionan.

Básicamente la idea era armar una base de datos con cuatro columnas: nombre, contraseña, correo y ayuda memoria. De forma que el usuario pudiera cambiar su contraseña cuando quisiera y que en ese momento se le solicitara una dirección de correo electrónico y un ayuda-memoria. En caso de que el usuario olvidara su cotraseña, podría solicitar que el sistema le enviara el ayuda-memoria a la dirección de correo guardados en la base de datos.

Hice la primera parte: el acceso al área restringida, y funcionó. Incluso le agregué la verificación de usuario por medio de una imagen (el conocido captcha).

Los problemas empezaron cuando comencé a armar la sección de cambio de contraseña.
Tuve varios problemas (no me reconocía la contraseña que estaba guardada en la BD, no guardaba la nueva contraseña, etc.), que, luego de muchos intentos, solucioné primero siguiendo las recomendaciones que encontré en un foro, que como está en inglés, a continuación traduzco libremente:

Hay algunos pasos simples que todo el mundo debería seguir cuando utiliza MySQL dentro de PHP:
  1. $connection = mysql_connect('host', 'user', 'pass') or die("Error with connect:".mysql_error()."");
  2. mysql_select_db('db_name', $connection) or die("Error with select: ".mysql_error()."");
  3. $query = "";(dentro de estas comillas es que va la consulta específica que se quiere hacer en lenguaje SQL).
  4. $result = mysql_query($query, $connection) or die("Error with query:".mysql_error()."");
Estos pasos nos proverán con información si algo marcha mal y, lo que es más importante, dónde marcha mal.

Al seguir estos pasos, como queda dicho, empecé a tener más pistas de qué estaba haciendo mal.

Luego, terminé de solucionar el problema inspirado en este otro foro, que en al final dice (traducción libre): Solucioné el problema: todo lo que tuve que hacer fue colocar comillas simples encerrando la variable.

¡Qué fácil que parece después que todo funciona! y ¡cuántas horas se pierden por culpa de unas mal colocadas o ausentes comillas!

Lo bueno es que para la próxima vez que necesite algo similar voy a adaptar el mismo código que ya escribí (aunque, sin duda, nuevos problemas aparecerán).

No hay comentarios:

Publicar un comentario

Lo que escriba a continuación será revisado antes de publicarse.
Gracias por tus comentarios.