Login de usuarios con php y mysql

Lo basico para comprender un sistema de login seria tener un formulario donde ingresar nuestros datos de acceso, usuario y password, esos datos se envian a un archivo que verifique la existencia y coincidencia de esos datos en nuestra base de datos y en base a eso genere dos opciones.

1)si los datos son correctos genera una session y redirecciona o muestra en pantalla un link hacia la seccion restringuida.

2) si los datos de acceso son incorrectos, redireciona o muestra un link hacia la pagina anterior permitiendo volver a intentar.

3) en la seccion restringuida tenemos un scipt q verifica si existe la session generada en el archivo de verificacion, caso contrario redirecciona hacia el archivo de login.

login php

login php

estructura de la tabla de usuarios en nuestra base de datos:

CREATE TABLE `users` (
`id_user` int(10) NOT NULL auto_increment,
`nickname` varchar(30) NOT NULL,
`email` varchar(100) NOT NULL,
`password` varchar(10) NOT NULL,
PRIMARY KEY  (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

Archivo con formulario para cargar los datos de acceso (index.php):

<form id=”login” name=”login” method=”POST” action=”verificacion.php”>
<h2>Por favor ingrese con su nombre de Ususario y Password</h2>
Username:<br />
<input type=”text” name=”nickname” id=”nickname” /><br />
Password:<br />
<input type=”password” name=”password” id=”password” /><br />
<input type=”submit” name=”button” id=”button” value=”Submit” />
<input type=”reset” value=”Reset” />

Archivo de verificacion:

<?php session_start();
include(‘tu archivo de conexion.php’);

// verificacion de las variables recibidas por post
$nickname=$_POST['nickname'];
$password=$_POST['password'];
$sql=”SELECT nickname,password FROM users WHERE nickname=’”.$nickname.”‘ AND password=’”.$password.”‘”;

$result=mysql_query($sql);

// cuanto la cantidad encontrada

$count=mysql_num_rows($result);
//si existe una coincidencia esta ok

if($count==1){
// si los datos son correctos genero session con el nombre de usuario
session_register(‘nickname’);

//si esta correcta la informacion del usuario redirecciono a la seccion restringuida.
header(“location:area_restringuida.php”);
}

else {
//si los datos son incorrectos muestro un link hacia la pagina inicial con el formulario.

$message=’<h3>Nombre de Usuario o Password Incorrectos</h3><br> <a href=”index.php”>Intente Nuevamente </a>’;
}
?>

archivos de la seccion restringuida:

<?php session_start();

//sino existe la session con el nombre de usuario redirecciono hacia la pagina de login

if(!session_is_registered(‘nickname’)){
header(“location:index.php”);
}
?>

este seria un ejemplo basico de login con php y mysql se puede profundizar mucho mas en el tema pero para aquel que esta comenzando le da una idea general del funcionamiento de un sistema de login.

puede hacerse que la verificacion la haga en el mismo documento donde esta el form y mediante un condicional mostrar el formulario o el acceso, tambien se puede inverstigar mas sobre seguridad con md5 para los password , podemos agregar a nuestra tabla en la BD un campo para niveles de acceso y mediante el nivel de acceso del usuario logueado mostrar mas o menos opciones..etc..   una vez entendido esto puedes googlear en busca de mas opciones.

Saludos y cualquier duda puedes preguntar!

    • JubaZone
    • November 4th, 2009

    racias por la información que publicas aquí todo me ha servido de mucho. Pero tengo una duda parte de “include(’tu archivo de conexion.php’);” re refieres a la conexión a la base de datos… si es así tengo que realizar tal consulta desde otro archivo o puedo implementarla ahi mismo???

  1. Hola JubaZone haces un archivo de conexion de esta forma:

    < ?php
    $host = "localhost";
    $database = "nombre_de_la_base_de_datos";
    $username = "root";
    $password = "root";
    $conexion = mysql_pconnect($host, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_select_db($database);
    ?>

    y lo guardas como “conexion.php” luego desde donde lo necesites, haces un include de esta forma:

    include(‘conexion.php’);

    y listo. cualquier consulta me avisas

    Salu2

  1. No trackbacks yet.