Formulario de login con Node.js
Clase 44 de 50 • Curso de Programación Básica 2014
Contenido del curso
Clase 44 de 50 • Curso de Programación Básica 2014
Contenido del curso
Faacuu Diaz
Erick Orlando Velasco Martínez
John Alanis
Fernando López Moreno
Cesar David Ramírez Dimaté
Luis Saraza
John Rios
Juan Jose Fernandez Belloso
Jose Luis Macias Santana
Camilo Tabares
David Rangel
Beto Mendez Vilca
Julio Cesar Labrador Rosales
Hernando Hurtado Hoyos
Juan Carlos Espinoza Zurita
Eduardo Lemus Zavala
Knock Boy
Roberto Araoz
Oscar Pérez
Héctor Rebollo Espinosa
Manu Lagos
Lorena Mendez
Juan Castro
Eduardo Lemus Zavala
Raul Montano
Eduardo Lemus Zavala
Julio Cesar Labrador Rosales
Marco Estrada Lopez
Si alguien tuvo problemas con res.sendfile... les dejo la solución.
web.get("/", function(req, res){
res.sendFile("formulario.html", {root:__dirname});
});
Simplemente es por la versión mas actualizada de express donde reemplazo sendfile por sendFile y ademas pide que se especifique la carpeta raiz.
Perfecto, así funciono de maravilla con la nueva version de sendFile.
Gracias!
Puse lo que dijiste pero ahora me sale esto, AYUDA!!! =(
Error: ENOENT: no such file or directory, stat '/Users/JoNaS/Desktop/programacionBasica/NODE/formulario.html'
at Error (native)
Debo aceptar que ahora me resulta más fascinante el área del Backend.
Offtopic:
![]()
Instalar body-paser de manera local (desde la raíz)
npm install body-parser
formulario.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Entra si eres capaz</title> </head> <body> <h2>Coloca tu usuario y tu contraseña</h2> <form method="post" action="/entrar"> Usuario: <input type="text" id="user" name="usuario" /> <br /> Contraseña: <input type="password" id="pass" name="clave" /> <br /> <input type="submit" id="enviar" name="enviar" value="Entrar" /> </form> </body> </html>
backend.js
var pepito = "Bogotá"; var basededatos = { // Objeto JSON usuario: "freddier", password: "mejorandola" }; console.log("Arrancando server de Node JS"); var express = require("express"); // Instrucción de Javascript que corre al lado del servidor. var parcero = require("body-parser"); // Parsea los datos del formulario a un objeto de Javascript. var web = express(); // Crear aplicación Web. web.use( parcero. urlencoded() ); var server; // Sevidor corriendo server = web.listen(8080, function() { // Parámetros (Puerto, Función Anónima) console.log("Sevidor arrancado :D"); }); web.get("/", function (req, res) { res.sendfile("formulario.html"); }); web.post("/entrar", function (req, res) { console.log(req.body); // Siempre debe darse una respuesta al navegador (response). //res.send("Enviado"); if(req.body.usuario == basededatos.usuario && req.body.clave == basededatos.password) res.send("Bienvenido al área secreta de NodeJs"); else res.send("Shu, shu, fuera de aquí"); }); /* Prueba de URL Amigables */ web.get("/prueba", function (req, res) { // Petición GET con el / como el home de la página web. Función Anónima (request, response) res.send("Buen trabajo, lograste un servidor web desde " + pepito); // Enviar texto plano al navegador. }); // Prueba de HTML web.get("/hola/mama-es-linda", function (req, res) { res.send("Hola <strong>mamá</strong>, estoy triunfando"); }); // Prueba de variables GET y variables globales web.get("/test", function (req, res) { // http://127.0.0.1:8080/test?avion=airbus&edad=28 console.log(req); res.send("tu avión es el " + req.query.avion + " y tu edad es " + req.query.edad); });
Si desean reiniciar el servidor cada que realicen un cambio (para evitar el trabajo molesto reiniciarlo manualmente todo el tiempo), se puede hacer uso de nodemon:
npm install nodemon -g
por si aun se están perdiendo compañeros, aquí les dejo la documentación de la librería Express de Node.js:
Arrancando server de Node
module.js:338
throw err;
^
Error: Cannot find module 'body-parse'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (~~pruebas platzi.com\node\bac
kend.js:10:15)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
Al arrancar el body-parser me da este error. He vuelto a instalar y me sigue dando error
en la linea:
var parcero = require("body-parser");
esta poniendo
body-parse en ves de poner body-parser
hacer falta la "r"
cuando trate de obtener formulario.html como en el video me sale un error aparentemente del package JSON, pero lo pude solucionar asi(lo solucione pero me gustaria saber porque me salio ese error, creo que es con algo relacionado a que deben ser urls absolutas):
web.get("/", function(req , res){ //res.sendFile("formulario.html"); res.sendFile(__dirname + '/formulario.html'); })
Creo que el error estaba en el senfile
en la primera linea esta en mayúscula y en segunda esta con minúscula, lo correcto es minúscula.
yo necesito ayuda en la comparación, no entra cuando escribo esto:
if(req.body.usuario == baseDeDatos.usuario &&
req.body.clave == baseDeDatos.password)
Diferencias entre GET Y POST
Method Get: Envía datos y son visibles en la url
Method Post: Envía los datos y estos están ocultos
req.query = es por donde llega las variables get.
req.body= es por donde llega las variables post.
Excelente video freddy.
Hola estoy creando un formulario para enviar un mensaje a mi correo pero sale este error "Cannot read property 'response' of undefined" y no se por que me ayudan.
app.post('/enviar',function (req,res){ var email = req.body.email; if(/(.+)@(.+){2,}\.(.+){2,}/.test(email)){ var transport = nodemailer.createTransport('SMTP',{ host:"/", secureConnection: false, port:2626, auth: { user: "micorreo@gmail.com", pass: "micontraseña" } }); var options = { from: req.body.nombre + '<' + req.body.email + '>', name= "nombre" y name="email" en html to:'micorreo@gmail.com', subject:req.body.asunto, // name="asunto en" html text: req.body.texto //name="texto" en html } transport.sendMail(options,function (error,info){ if(error){ res.send("no se ha logrado"); } console.log(info.response); res.send("lo logre!!!"); }); } else { res.send("El email no se valido Volver") } });
Para poder enviar un email usando tu cuenta de gmail en "host" debes poner smtp.gmail.com que es el servidor SMTP de Gmail y en port tienes que poner 25 o 465. El campo host se debe llamar con un nombre de dominio o un dirección IP del servidor al que te quieres conectar y el port depende del servidor. Me imagino que estabas intentado conectarte a tu propia computadora pero no creo que tengas un servidor SMTP corriendo en tu computadora.
var baseDeDatos = { usuario:"lalo", password:"lemus" }; // var parser = require("body-parser"); //usamos el sistema de decodificacion de bodu-parser web.use(parser.urlencoded()); web.post("/entrar", function(req,res){ //console.log(req.body); //res.send("entraste"); if(req.body.usuario == baseDeDatos.usuario && req.body.clave == baseDeDatos.password) { res.send("Bienvenido"); } else { res.send("Equivocado"); } });
Intente lo de la imagen y fue re genial
si quisiera mostrar una ventana modal en el cliente cuando el password es incorrecto en vez de tener que dar back en el navegador ( chrome ), que tendria que hacer ?
Hacer una petición por AJAX para validar las credenciales del usuario, luego si las credenciales son correctas, ya sabes... (los conceptos puedes investigarlos)
tengo un error de listener y me dice que mi puerto 80 ya esta ocupado, como puedo resolver ese error a parte de cambiarle el puerto en programa?
Alguien sabe usar browserify?
ya
Hola tengo una pregunta: si quisiera que la mini base de datos admitiera mas de un usuario y password como haría!
Ya lo intente con comas = y cualquier otra cosa!
por que no intentas con un arreglo de usuarios y passwords
Hola Juandc, sabes yo también me hice la misma pregunta y lo solucione de esta manera.
console.log("Starting Node Server ..."); // ****************************************************************** // Creamos una Clase llamada Dbase var Dbase = function (u,p){ this.usuario = u; this.password = p; }; // Creamos dos instancias de la clase Dbase. var usuario1 = new Dbase("raul","java"); var usuario2 = new Dbase("carlos","cafe"); // Creamos un arrays que me va almacenar los objetos creados de la clase Dbase. var listaUsuarios=[]; listaUsuarios[0]=usuario1; listaUsuarios[1]=usuario2; // ****************************************************************** var express = require('express'); var parcero = require('body-parser'); var web = express(); web.use(parcero.urlencoded()); var server = web.listen(8080,function(){ console.log("Servidor Arrancado :D")}); web.get("/",function(req,res){ res.sendFile("formulario.html",{root:__dirname}); }) web.post("/entrar", function (req, res) { // Esta es una variable de control que me sirve para mostrar // el mensaje correcto. Si es un usuario valido le doy la // bienvenida sino le muestro un mensaje de error. var bandera=0; // Recorro mi array de objetos para determinar si los datos recibi // dos por el formulario pertenecen a un usuario registrado. for (var i=0; i<listaUsuarios.length;i++) { if(req.body.usuario == listaUsuarios[i].usuario && req.body.clave == listaUsuarios[i].password) { res.send("<h2>Bienvenido al área secreta de NodeJs</h2>"); i=listaUsuarios.length; bandera=1; } } if (bandera==0) res.send("<h2>Shu, shu, fuera de aquí </h2>"); });
debemos instalar la libreria body-parser en la ruta del archivo backend.js para para interpretar el envio de datos desde metodos post
var basededatos ={ usuario:"julio", password:"mejor" }; console.log("arrancando el server node"); //express y la libreria body parser para poder entender formularios var express = require("express"); var parcer = require("body-parser"); var web = express(); web.use(parcer.urlencoded({extended: true}) ); var servidor; servidor = web.listen(8080,function () { console.log("servidor arrancado"); }); web.get("/",function (req, res) { console.log(req); res.sendfile("formularionode.html"); }); web.post("/entrar",function (req, res) { if(req.body.usuario == basededatos.usuario && req.body.clave == basededatos.password) { res.send("¡bienvenido al sistema!"); } else { res.send("clave incorrecta...vuelva a intentarlo") } }); /*pruebas de urls y pasar varibles por get*/ web.get("/test",function (req, res) { console.log(req); res.send("tu avion es el " + req.query.avion + " y tu edad es " + req.query.edad); }); //prueba de html web.get("/hola/doris-es-linda",function (req, res) { res.send("hola <strong>mami</strong>,como esta"); });
Muy Buena Explicacion