Hacer login de usuarios con PHP y MySQL
Un sistema de registro y reconocimiento de usuarios es utilizado para garantizar el acceso a ciertas áreas de nuestro sitio Web.
Debemos de crear una tabla que vamos a utilizar en la base de datos MySQL.
-
CREATE TABLE `usuarios` (
-
`id` INT(11) NOT NULL AUTO_INCREMENT,
-
`usuario` VARCHAR(20) NOT NULL,
-
`password` VARCHAR(10) NOT NULL,
-
`descripcion` TEXT character SET utf8 collate utf8_spanish_ci,
-
`email` VARCHAR(45) character SET utf8 collate utf8_spanish_ci DEFAULT NULL,
-
`fecha` DATE NOT NULL,
-
PRIMARY KEY (`id`)
-
)
Ya tenemos la estructura de nuestra tabla de usuarios.
Ahora una pagina index.php donde colocaremos el siguiente código:
Ahora el formulario para hacer login.php
Seguimos con el archivo validar_usuario.php el cual verificará los datos del archivo login.php
-
<?php
-
-
//datos para establecer la conexion con la base de mysql.
-
mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexión: '.mysql_error());
-
-
function quitar($mensaje)
-
{
-
return $mensaje;
-
}
-
-
{
-
// Puedes utilizar la funcion para eliminar algun caracter en especifico
-
//$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
-
//$password = $HTTP_POST_VARS["password"];
-
-
// o puedes convertir los a su entidad HTML aplicable con htmlentities
-
$password = $HTTP_POST_VARS["password"];
-
-
-
if($row["password"] == $password){
-
-
$_SESSION["k_username"] = $row['usuario'];
-
-
echo '<a href="index.php">Index</a></p>';
-
-
//Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
-
-
/*Ingreso exitoso, ahora sera dirigido a la pagina principal.
-
<SCRIPT LANGUAGE="javascript">
-
location.href = "index.php";
-
</SCRIPT>*/
-
-
}else{
-
echo 'Password incorrecto';
-
}
-
}else{
-
echo 'Usuario no existente en la base de datos';
-
}
-
}else{
-
echo 'Debe especificar un usuario y password';
-
}
-
?>
El archivo registrar.php, ahí crearemos un usuario nuevo.
-
<?php
-
-
//datos para establecer la conexion con la base de mysql.
-
mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexión: '.mysql_error());
-
-
function formRegistro(){
-
?>
-
<form action="registrar.php" method="post">
-
<input type="text" name="username" size="20" maxlength="20" /><br />
-
<input type="password" name="password" size="10" maxlength="10" />
-
Confirma: <input type="password" name="password2" size="10" maxlength="10" /><br />
-
<input type="text" name="email" size="20" maxlength="40" /><br />
-
<input type="submit" value="Registrar" />
-
</form>
-
<?php
-
}
-
-
// verificamos si se han enviado ya las variables necesarias.
-
$username = $_POST["username"];
-
$password = $_POST["password"];
-
$password2 = $_POST["password2"];
-
$email = $_POST["email"];
-
// Hay campos en blanco
-
if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) {
-
echo "un campo está vacio.";
-
formRegistro();
-
}else{
-
// ¿Coinciden las contraseñas?
-
if($password!=$password2) {
-
echo "Las contraseñas no coinciden";
-
formRegistro();
-
}else{
-
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
-
-
-
if ($email_exist>0|$username_exist>0) {
-
echo "El nombre de usuario o la cuenta de correo estan ya en uso";
-
formRegistro();
-
}else{
-
$query = 'INSERT INTO usuarios (usuario, password, email, fecha)
-
-
echo 'Ahora puede entrar ingresando su usuario y su password <br />';
-
?>
-
<FORM ACTION="validar_usuario.php" METHOD="post">
-
Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
-
Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=20><br />
-
<INPUT TYPE="submit" VALUE="Ingresar">
-
</FORM>
-
<?php
-
-
}
-
}
-
}
-
}else{
-
formRegistro();
-
}
-
?>
Finalmente el archivo logout.php, ahí cerraremos la sesión.
-
<?php
-
// Borramos toda la sesion
-
echo 'Ha terminado la session <p><a href="index.php">index</a></p>';
-
?>
-
<SCRIPT LANGUAGE="javascript">
-
location.href = "index.php";
-
</SCRIPT>
El sistema creado es sencillo para que sea fácil de entender, Y no olvides dejar tus comentarios.
Actualización: debido a los problemas que hay al momento de hacer copy/paste se anexan los archivos del ejemplo. Recuerda que es solo el principio, falta:
Encriptar las claves antes de enviarlas, hacer la conexión como función y todo lo que se te ocurra o puedas aportar.

ola esta padre esto pero tengo un problema en validar usuario ya registra y todo pero cuando
inicio sesion me dice debe especificar usuario y contraseña
y no se que pueda ser si me pueden ayudar este es mi email manueldejesus_663@hotmail.com
lo agradeceria va
Hola Jesus, puedes bajarte el ejemplo en formato ZIP y compararlo con tu código para detectar donde esta el error.
Un saludo
Saludos amigos, por favor si pueden decir especificamente que tengo que hacer para corregir el error que me presenta al intentar loguiarme, ya que me dice que: Debe especificar un usuario y password.
Yo puedo registrarme y ya observe la base de datos y todo esta correcto,
Muchas gracias de antemano.
Hola Dario, puedes bajarte el ejemplo en formato ZIP y compararlo con tu código para detectar donde esta el error.
Compañeros para que funcione el ejemplo aportado deben cambiar $HTTP_POST_VARS por solo $_POST
Un cordial saludo
Hola, me parece muy bueno el tutorial, y muy facil de seguir..
tengo una consulta…
me gustaria que cuando los usuarios se registren se envie un email con un link de activacion de cuenta. es eso posible?
como seria?
si no se puede, saben de algun tutorial o algun otro login que sea de esa manera??
muchas gracias a todos!!! espero que vean este mensaje!
saludos!
Jorge
hola, buenisimo el aporte.
pregunta, para que cuando el usuario se registre se le mande un email con un link de activacion.
que tengo que hacer?
de que tengo que agregar un valor en la bd en 0 etc, hasta ahi bien… lo que no se es como modifico el php que ya tenemos para que mande el link.
alguna idea?? realmente busque mucho sobre esto y no encuentro nada ni a nadie… si me pueden dar una mano seria genial. recien comienzo como programador por lo cual me cuestan mucho estas cosas. Saludos!!!!
y gracias nuevamente!
Hola Jorge, que bueno que te sirvió la entrada.
Lo que pides es sencillo:
Puedes utilizar un campo de estatus y otro de activación en tu tabla, envías el email con el código de activación a la cuenta de email del registrado y cuando el de clic lo referencias a una pagina que leerá ese código y cambiará el estatus.
Para hacerlo puedes apoyarte en estas entradas.
http://ayuda.fotopex.com/programacion/php/%C2%BFcomo-enviar-un-e-mail-con-formulario-en-php/
y
y http://ayuda.fotopex.com/programacion/php/%C2%BFcomo-enviar-un-e-mail-con-php/
estos procesos los tienes que hacer cuando registras al visitante y le dejas un estatus de inactivo puedes apoyarte en lo básico.
0= inactivo
1=activo
y el campo para el código de validación puedes enviarlo en md5 de esa forma puedes verificar si es correcto cuando lo leas en tu sitio.
Espero que te ayude mi sugerencia y si deseas aportar tu trabajo será bien recibido y podrás ayudar a otras personas como tu.
Hola a todos, el error que dice Dario quiero creer que se refiere a la base de datos, ya que a mi tambien me aparecia y lo corregi cambiando en la linea 5 en los archivos validar_usuario y registrar lo siguiente:
mysql_connect(’localhost’,'root’,”)or die (’Ha fallado la conexión: ‘.mysql_error());
y ya te queda, espero.
Bye
QUE ONDA SALUDOS MUCHAS GRACIAS POR TU CODIGO ERES UN MASTER EN ESTO FUE DE MUCHA AYUDA GRACIAS
Muchisimas gracias, me sirvio de mucho, seria mejor que les saquen los numeros de lineas de los costados, porque hay que sacarselos manualmente y es una perdida de tiempo para el proximo que encuentre el sistema. Muchas gracias nuevamente.. Saludos!
Hola Ratita, que bueno que te ayudo. Respecto a los numero de linea:
Puedes dar clic donde dice PLAIN TEXT y te dejará el código en limpio.
Un saludo y gracias por tu comentario.
Gracias funciono perfecto