Un poco de photoshop, diseño web, jquery, php…
Vamos a crear un formulario css válido, con validación en el lado de cliente mediante jquery, y enviando los datos al servidor con ajax. Para el ejemplo, vamos a validar un usuario y contraseña, para la lógica en el lado del servidor usaremos php. Para que toda la programación php sea más fácil y no tengamos que escribir ni una sóla linea de sql usaremos objetos generados con pog (php object generator). Todo esto, con tan sólo unas pocas lineas de código…. ¿Qué más puedes pedir?
El objetivo de este pequeño tutorial es demostrar como crear un formulario css válido de forma simple, poder validar el logeo de un usuario. Usaremos jquery para validar el formulario en el lado del cliente, php ayudado de pog (para los que no conozcan pog les puede servir también de introducción). Puedes ver el ejemplo funcionando aquí. Bueno, empecemos.
Lo primero en lo que tenemos que fijarnos, es que el destino del formulario es una página llamada ajax.php. En realidad, y para este ejemplo, el formulario podría llamarse a sí mismo, pero prefiero tener todo el código en un fichero (o varios) separado para tenerlo todo más claro y que todo sea después más facil de mantener. El formulario tiene un campo oculto, llamado accion. Contiene la acción que se va a ejecutar en el fichero ajax.php, en este caso, login. Explicaré todo eso más adelante.
El div con id mensaje es el que mostrará los errores de forma dinámica gracias a jquery.
Por lo demás, el código del formulario no tiene ningún misterio, he agregado span en los label para poder poner darle al visitante información sobre qué es cada campo.
Pasamos al código CSS:
Poco que comentar, simplemente destacar el display:none de #mensaje. Queremos que esa capa esté oculta cuando el formulario se muestre por primera vez.
Pasamos al código jquery. Obviamente, tendrás que descargarlo desde su página oficial e importarlo en tu documento xhtml, en mi caso ha sido así:
Para los ejemplos siempre uso las versiones sin comprimir ni reducir de jquery, ya que si necesito debugear o mirar algo puedo hacerlo. Si esto fuera para una página en producción, seria recomendable usar una versión mas ligera de jquery para que la página cargara más rápido. En este ejemplo, también necesitaremos un plugin para que el trabajo con formularios desde jquery sea más facil. En mi caso he usado este, su funcionamiento, como casi todo en jquery, es bastante fácil. Si quereis más información sobre el plugin, pasaros por su página oficial, está repleta de ejemplos y documentación abundante.
Pasamos al código jquery:
Si eres nuevo en jquery y nunca has usado otra libreria similar, quizá todo te suene un poco raro. Pásate por su página oficial y mirate la documentación, pronto te harás a su funcionamiento. Anteriormente también postee una recopilación de tutoriales de jquery que quizá te puedan ayudar.
Vayamos por partes:
Estamos diciendo que el formulario se enviará usando ajax (es decir, no se va a recargar la página). Antes de enviar el formulario llamaremos a la función validate, cuando se complete el envio de todos los datos llamaremos a la función hecho.
Pasamos a la función validate:
Bien veamos, declaro una variable para almaenar los posibles errores que ocurran, y me declaro una variable que contendrá todo el formulario. Tenemos dos if, que comprueban que los campos tengan valores (en este caso, los dos campos son obligatorios). En el caso de que no tengan valor, agregamos un la descripción dentro de un <li> para después poder mostrarla. Si hay fallo, le damos el foco al control para que el usuario lo pueda corregir.
Finalmente, si la variable error tiene longitud mayor a cero (es decir, ha habido algún error), lo que hacemos es vaciar la capa mensaje, genero la lista con los errores y se la asigno a la capa mensaje con el metodo append, y mostramos la capa con un efectillo, en este caso, slideDown. Devolvemos false para que el formulario no se procese.
Pasamos a la función hecho.
Recibe dos parámetros, responseText y statusText. Para más información, al igual que antes, visita su página oficial. A nosotros, en este caso nos interesa la variable responseText, que con el metodo append lo pondremos en la capa mensaje que mostraremos, al igual que antes, con slideDown
Si ya tenias algo de experiencia con jquery o similar, este código seguro que es fácil y rápido de escribir. Si no es tu caso, como ya he comentado antes, con unos ejemplos y un poco de practica lo dominarás sin mucho esfuerzo. Si hasta yo he aprendido a usarlo!
El código php yo lo pongo en un archivo aparte, ajax.php. Pasamos al código de dicho fichero:
Bueno, veamos, si no conoces pog, pásate por su página a ver la documentación y los ejemplos, también es bastante fácil y rápido de aprender siempre y cuando manejes php y sepas algo de programación orientada a objetos.
En la primera línea incluyo el fichero configuration. Lo genera pog, y es el que tendrás que editar para poner los datos para la conexión con tu base de datos. Las siguientes líneas son para comprobar que acción tenemos que realizar. Para este ejemplo, podríamos haber realizado directamente la accioón de logeo, pero como pienso ir ampliandolo poco a poco, esa estructurá me servirá dentro de poco.
La función login es la que realiza todo el trabajo. Primero, instancio al objeto usuario (generado con pog, más adelante te explico cómo). Busco todos los usuarios que tengan el mismo login y password en mi base de datos. Si hay alguno, guardo en una variable de sesión su id, si no lo hay, muestro que los datos introducidos no son correctos. Obviamente, si los datos fueran correctos habría que redirigirlos a otra página, pero para el ejemplo nos sirve tal y como está.
Comentar que todo lo que muestre desde este fichero será lo que tome después la variable responseText que usamos anteriormente con jquery en la función hecho
Es bastante fácil, simplemente dirígete a su página, ves poniendo los campos que vas a usar en la tabla (en el caso de este ejemplo simplemente login y password). De todo lo que nos genera, sólo nos interesa el fichero configuration.php y la carpeta objects.
Supongo que lo más complicado (raro más bien) de el tutorial puede ser la parte del pog. Cualquiera es libre de modificar el archivo ajax.php para hacerlo todo “a mano”. Agradecería que me lo enviarais para colgarlo también en el tutorial y que cada uno escogiera la opción que prefiriese.
Obviamente, los mensajes de error/éxito habria que modificarlos algo con css, pero para no liar más el ejemplo se ha optado por dejar la lista y los avisos tal cual.
Por otro lado, todo esto se podría haber hecho en un mismo archivo, pero me gusta tenerlo todo separado y ordenado para que cuando tenga que modificar algo sea todo más fácil.
Nota: Si os bajáis los archivos para probarlos vosotros mismos, no olvideis editar el archivo configuration.php. Los objetos de pog están generados para php 4, si usáis php 5 simplemente copiad y pegad la url del objeto, elegis php5, o sobrescribes los archivos.
Decarga todo el código fuente usado en el tutorial aquí.
Este blog es un blog personal. En el postearé manuales, recursos, cualquier cosa que me parezca interesante sobre diseño web, programación web, maquetación, photoshop, y algo de linux (ubuntu y linux mint). Si lo deseas, puedes ponerte en contacto conmigo para cualquier sugerencia, critica, agradeciminto, cualquier cosa referente a este blog.
iluminalo.com
Junio 21st, 2008 at 4:40 pm
Formulario css con validacion jquery y php | Uno de los otros…
Esta semana cree un tutorial sobre como crear un formulario de registro para ilustrar el funcionamiento del envio de formulario mediante ajax con jquery.
El ejemplo es simple, he tratado de explicar todo lo mejor posible….
autobombo.es
Junio 21st, 2008 at 4:48 pm
Formulario css con validacion jquery y php | Uno de los otros…
Esta semana cree un tutorial sobre como crear un formulario de registro para ilustrar el funcionamiento del envio de formulario mediante ajax con jquery.
El ejemplo es simple, he tratado de explicar todo lo mejor posible….
mueveme.es
Junio 22nd, 2008 at 12:20 am
Formulario css con validacion jquery y php | Uno de los otros…
Esta semana cree un tutorial sobre como crear un formulario de registro para ilustrar el funcionamiento del envio de formulario mediante ajax con jquery. He tratado de hacerlo lo mas simple posible para que sea de facil comprension….
ayudablogs.com
Junio 30th, 2008 at 8:31 pm
Formulario css con validacion jquery y php…
tutorial sobre como crear un formulario de validacion basico mediante ajax. Se usa phpy jquery para lograrlo….
Introduccion a phpobjectgenerator: Sistema de registro de usuarios con php. | Uno de los otros
Julio 5th, 2008 at 11:14 am
[...] poco escribi un post en el que explicaba como realizar un sistema de logeo de usuarios usando ajax con jquery, y php para la lógica de servidor (php object generator para acceder a la base de datos). He recibido algún email pidiendome que [...]
llse
Julio 28th, 2008 at 4:33 pm
saludos amigo imposible, ver como puedo hacerlo funcionar con php 5 he probado de todo soy nueva en este asunto agradeceria tu colaboracion
Jesus
Julio 29th, 2008 at 9:45 pm
ola llse,
en php5 no te va a funcionar por que las clases que uso en el ejemplo estan hechas para php4. Puedes volver a generar las clases tal y como explico en este otro post
http://www.jesusyepes.com/css/introduccion-a-phpobjectgenerator-sistema-de-registro-de-usuarios/
si aun así tienes dudas, comentamelo e intentare ayudarte.
un saludo
Diseño Web Peru
Agosto 13th, 2008 at 5:49 am
Gracias por el Gran àporte
Saludos
Ginno
Agosto 31st, 2008 at 7:19 pm
Hola, gracias por el tremendo aporte.
Pero siempre me ocurre lo siguiente:
Descargué todo el código fuente del turorial, lo implemente, vamos viendo:
1.- Cuando no ingreso nada (ni usuario ni contraseña): se comporta bien; es decir me solicita ingresarlos.
2.- Si ingreso uno (sólo usuario o sólo contraseña): se comporta bien; es decir me solicita ingresar el que no haya ingresado.
El problema:
Si ingreso un usuario cualquiera con una contraseña cualquiera me arroja:
Fatal error: Method usuario::__get() must take exactly 1 argument in C:\xampp\htdocs\Prueba\includes\objects\class.usuario.php on line 54
Y todavía no puedo dar con cómo solucionar ese error.
Te agradecería infinitamente si puedieses explicarme lo que puede estar pasando.
A la espera de tu respuesta y agradecido por tu tiempo, se despide
Ginno
Ginno
Agosto 31st, 2008 at 7:37 pm
Hola, se me olvidaba:
¿hay que crear de todas formas una base de datos o se genera sola?
Saludos
Ginno
Jesus
Septiembre 1st, 2008 at 5:32 pm
No, a ver, la base de datos la tienes que crear tu, lo que he publicado es solo un ejemplo de como usar jquery para validar formularios a lo “ajax” y una pequeña introduccion al pog, que al menos a mi me ha ahorrado muchas horas de programacion.
Lo del error que dices, a ver, que version de php tiene el servidor sobre el que lo estas ejecutando? Los ficheros que he puesto de ejemplo son para php 4, si fuese para php5 tendrias que regenerar los objetos y sobreescribirlos, no tendrias que cambiar nada de la programacion.
Cualquier cosa avisa, un saludo
Jose
Septiembre 30th, 2008 at 11:52 am
saludos. como puedo direccionar un enlace a este formulario luego de que el login del usuario haya sido confirmado?
Jesus
Octubre 1st, 2008 at 5:04 pm
Hola Jose,
Pues lo puedes hacer directamente con Javascript, con un window.location.
Luego en la pagina de destino, verificas que el usuario está logeado y la muestras, en caso de que no lo estes, lo reenvias a la pagina del formulario.
Si lo haces con php (como en el ejemplo) la funcion header() te va a servir para todo esto.
Un saludo