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
-
-
//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.
-
-
//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.
-
// 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.
Actualización.
A los amigos que me han sobre las medidas de seguridad que debemos de procurar, algunas son:
La encriptación de la clave mediante MD5 o SHA1
Utilización de htmlentities y html_entity_decode
Cuando el usuario mete algún campo erróneo o deja algo en blanco se llama a la función formRegistro(); y borra todos los campos aunque estén correctos, ¿cómo puedo mantener los campos ya rellenados? para no hacer al usuario que vuelva a meter los datos.
Puedes utilizar algo asi :
value="<?php if(isset($_post['campo']) echo $_post['campo']; ?>"
y recuerda utilizar htmlentities y html_entity_decode para evitar la inyección de código.
Y para los amigos que me han preguntado como podemos bloquear las paginas si no hace login, les comento que yo tengo un sistema basado en niveles y que más adelante la publicaré, mientras tanto podemos hacer una interpretación más ligera y sería algo más o menos asi:
Agregamos una tabla de nombre autorizaciones, y 3 campos:
id - autonumérico
pagina - varchar (en este campo vamos a ingresar las secciones o página donde necesitan hace login para poder verlas)
usuario - texto largo (los nombres de los usuarios con autorización para ver esta pagina separados por comas)
Vamos a crear una pagina con el nombre de funciones.php con el siguiente código:
-
function conectar(){
-
//datos para establecer la conexion con la base de mysql.
-
}
-
-
function puede_ver($pagina=''){
-
$usuarios=$row['usuario']; // obtenemos los nombres de los usuarios
-
return true;
-
}else{ // si no pues un false como respuesta
-
return false;
-
}
-
}
-
}
-
?>
Olvidandonos un poco de la página index.php vamos a crear nuestra primer página restringida con el nombre visita_fotopex.php, con este método no solo puedes restringir el acceso a una pagina, lo puedes hacer por secciones, por ejemplo para restringir a una página completa el código de visita_fotopex.php seria así:
-
// no olvidemos incluir nuestras funciones
-
include("funciones.php");
-
conectar();
-
if (puede_ver('pagina')==false){
-
die('<br /><br />No tiene permiso para esta área, consulte a <a href="http://ayuda.fotopex.com">www.ayuda.fotopex.com</a><br /><br /><br />');
-
}
-
?>
y para restringir una sección simplemente lo inviertes
-
// no olvidemos incluir nuestras funciones
-
include("funciones.php");
-
conectar();
-
if (puede_ver('seccion_a')){
-
echo '<br /><br />Ahora puedes ver esta sección y sigue visitando <a href="http://ayuda.fotopex.com">www.ayuda.fotopex.com</a><br /><br /><br />';
-
}
-
?>
Espero que te ayude y sigas visitando www.ayuda.fotopex.com.


Hola, me parece muy bueno este tutorial pero no me sale la practica, ya que me sale un error que dice Access denied for user: ‘@’ localhost ‘(using password: YES)
Me podrian ayudar
Gracias
hola,lo que me pasa es esto, mira que yo pegue los codigos php en una pagina completa, con el diseño y todo como la principal,me voy a registrar y me abre es el documento php, con el nombre de register.php, pero el login si funciona bien, como hago para poder registrarme bien?
netha carnal esta muy bien el tutorial ni te imaginas lo k nos ayudo a mi y a un amigo con lo de residencias….netha k gracias
De verdad escribo para agradecerte, me has ayudado muchísimo con esto para mi tesis. Créeme que le había pedido ayuda a “amigos”, pero es aquí donde te das cuenta que los de verdad se cuentan con la mano y también que los ratones son los primeros en huir cuando se hunde el barco.
Eso, el código me funcionó excelente, le agregué una ventana de bienvenida con flash y modifiqué lo de la creación de usuarios y en lo otro un par de cosas, pero en esencia es el mismo código.
Sinceramente agradecida, Nathalie
hola excelente tutorial ,,pero tengo un problema a la hora de login …no puedo validar al usuario me sale esto :
La conexión ha sido reiniciada
La conexión al servidor fue reiniciada mientras la página se cargaba.
* El sitio podría estar no disponible temporalmente o
demasiado ocupado. Vuelva a intentarlo en unos momentos.
* Si no puede cargar ninguna página, compruebe la conexión
de red de su ordenador.
* Si su ordenador o red están protegidos por un cortafuegos
o proxy, asegúrese de que Firefox tiene permiso para
acceder a la web.
/// espero me puedan ayudar
muy bueno el tutorial pero me saca error al colocar los datos acá, no me deja logearme sacandome un error de php…
mysql_connect(’216.108.239.71′,’a4848702_ontf’,'password’)or die (‘Ha fallado la conexión: ‘.mysql_error());
haber si me pueden hechar una mano jeje
mysql_select_db(‘a4848702_ontf’)or die (‘Error al seleccionar la Base de Datos: ‘.mysql_error());
Saludos
Buena práctica pero cómo puedo solucionar el problema de que cuándo me deslogueo el botón atrás del navegador no me retorne a la página anterior. Encontré algo como estos:
Pero no resuelve el problema para este tipo de casos.
Agredecería su ayuda
gracias la verdad me funciono de lo mejor
Hola funciona a la perfeccion tu sistema de login, pero como le hago que cuando me autentifique correctamente me mande a una pagina automaticamente, o como uso el codigo para bloquear ciertas areas de mi pagina web, espero y me entiendas!! cual seria el codigo que devo poner para que este bloqueda el area y hasta que me logue se pueda ver sin ningun problema saludos y espero respuesta..
Hola, muy bueno
andaba buscando algo asi
y funciona, salvo en la parte de validar usuarios que no me entraba al if pero cambie como dijeron en los comentarios los HTTP_POST_
por _POST y corrio altiro
muy buen tutorial
se agradece
me muestra este error cuando quiero loguearme !!
Debe especificar un usuario y password
estimado yo tengo el mismo problema
“”"me muestra este error cuando quiero loguearme !!
Debe especificar un usuario y password”"”
alguna solucion????
hola, me puedes ayudar con esto:
cuando hago una pagina privada me sale:
Fatal error: Call to undefined function conectar() in /home/a9397138/public_html/login_php/index.html on line 106
GRACIAS por tu apoyo
es una buena tutorial
si amigo, un detalle muy importante es que debes incluir el archivo de tus funciones
include(“funciones.php”);
(*_*)
La neta gracias ,
te las da un estudiante de chihuahua
por que es de los mejores tutoriales que me an tocado
al respecto de este tema
sigue asi (*_*)
Buenas a ver si alguien me puede echar un cable…
Cuando intento entrar con el login me sale el siguiente error:
Notice: Undefined variable: HTTP_POST_VARS in \www\LOGIN Y USUARIOS\validar_usuario.php on line 11
Debe especificar un usuario y password
La linea en cuestion es:
if(trim($HTTP_POST_VARS["usuario"]) != “” && trim($HTTP_POST_VARS["password"]) != “”)
¿Donde tengo el error?
Gracias.
Amigos, el error mas frecuente es en el copy/paste, pues los caracteres de comillas no se copian bien.
Pero recuerda que puedes bajarte los archivos del ejercicio.
Gracias a todos por sus comentarios, Feliz retorno a FotoPex.com
