Sistema de autentificación PHP

Cómo realizar un sistema de autentificación en PHP, en el que los usuarios deban introducir nombre y contraseña para que puedan visualizar las páginas de una aplicación con acceso restringido.

Si te parece útil este manual ayúdanos compartiendo!! :)

1.- Funcionamiento del sistema de autentificación en PHP

Descripción de las distintas páginas que forman el sistema de autentificación y su funcionamiento, basado en usuario y contraseña.

2.- Página inicial con el formulario de autentificación en PHP

Página que muestra el formulario donde el visitante debe introducir su nombre de usuario y contraseña, necesarios para acceder a la aplicación segura.

3.- Control de los datos de autentificación en PHP

Aquí veremos si los datos de autentificación son correctos y dependiendo de si lo son o no, se redirigirá al navegador a la aplicación segura o al formulario inicial, respectivamente.

4.- Capa de seguridad en PHP

Este capítulo nos explicará el funcionamiento del módulo de seguridad.

5.- Archivos de la aplicación con acceso restringido en PHP

Mostraremos un ejemplo del código de una de las páginas web que formaría la aplicación segura.

6.- Salir de la aplicación segura en PHP

En este capítulo veremos con un sencillo ejemplo como salir de la aplicación de accesi restringido.

7.- Diferentes formas de cerrar sesión en PHP

Cómo cerrar una sesión autenticada correctamente, por inactividad o por cierre del navegador por parte del usuario.

8.- Cierre de sesión al cerrar el navegador en PHP

Código en PHP para cerrar sesiones cuando se cierra el navegador.

9.- Autentificación PHP para múltiples usuarios usando MySQL

Página PHP que necesitaríamos para realizar un acceso restringido por clave y contraseña para múltiples usuarios, donde cada uno tenga unos datos de acceso propios, que se guardan en la base de datos.

10.- Autenticar usuario y guardar en una cookie con PHP

Sistema de autenticación de usuarios en PHP, donde se ofrece la opción de memorizar su usuario en el ordenador y guardar una cookie para recordar el usuario y no tener que volverse a autenticar.

Descargas

Este manual puedes descargarlo en formato amigable para impresión y lectura en dispositivos a través de la App de DesarrolloWeb.com.

Compartir

Comentarios

usuario_borrado_632585

05/6/2009
como hacer estoy con varias paginas
Hola... esta muy bien el sistema, pero yo tengo una duda como le haces para que la session continue con varias paginas y no solo en una... espero me puedas ayudar...
Salu2

alejandro_pla

16/7/2009
Encryptación
Veo que los diferentes pasos de autentificación no tienen ninguna función a forma de asegurar el usuario y password que envía el usuario, como se aseguran que no sea pinchada la conexion y por tanto recogidos libres los datos de acceso a una aplicación segura.

Saludos

wcastillo1024

03/9/2009
manual de autenticacion de usuarios en php
Simplemente INSUPERABLE (MUY UTIL Y PRACTICO) EXITO!! Y GRACIAS

gonz

26/11/2009
muy bueno el manual
muy bueno el manual los felicito. gracias por hacernos crecer cada día.

danny

18/2/2010
no me sirve!!!!
Hola amigos!
su tutorial me cayo como anillo al dedo para mi proyecto productivo simplemente que aun no me funciona!!!!!!!!!!!!!!!

EL codigo esta bueno, pero por alguna razon no me conecta a la apliaccion protegida cuando le clickeo entrar no entra, y no se si me sirve la base de datos y me salne algunos aviso en mi appserv como estos

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwindex.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at C:AppServwwwindex.php:2) in C:AppServwwwindex.php on line 16

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:AppServwwwindex.php on line 18

y no se ne verdad que sucede................

si mi codigo es este

<!--Sistema de autentificacion de prueba para el sena-->
<?
$conn = mysql_connect("localhost","root","root");
mysql_select_db("autentificacion",$conn) ;
$ssql= "select*from usuario where usuario='$usuario'and contrasena='$contrasena'";
$rs=mysql_query($ssql,$conn);
if (mysql_num_rows($rs)!=0)
{
session_start();
session_register("autentificado");
$autentificado="si";
header("location:aplicacion.php");
}
else
{
header ("location:index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Control de entrada y salida de elemntos y/o equipos de computo</title>
<style type="text/css">
<!--
body {
background-image: url(COBERTURA SENA 2.JPG);
background-repeat: no-repeat;
background-image: url(COBERTURA%20SENA%202.JPG);
}
#Layer1 {
position:absolute;
width:993px;
height:151px;
z-index:1;
}
#Layer2 {
position:absolute;
width:482px;
height:110px;
z-index:2;
left: 275px;
top: 180px;
}
.style1 {
font-size: medium;
font-weight: bold;
}
#Layer3 {
position:absolute;
width:481px;
height:199px;
z-index:3;
left: 275px;
top: 311px;
}
.style2 {font-weight: bold}
#Layer4 {
position:absolute;
width:235px;
height:56px;
z-index:4;
left: 430px;
top: 546px;
}
#Layer5 {
position:absolute;
width:147px;
height:40px;
z-index:4;
left: 59px;
top: 462px;
}
#Layer6 {
position:absolute;
width:187px;
height:29px;
z-index:5;
left: 58px;
top: 503px;
}
.style3 {font-size: xx-small}
#Layer7 {
position:absolute;
width:549px;
height:70px;
z-index:6;
left: -36px;
top: -89px;
}
-->
</style></head>

<body>
<div id="Layer2">
<div align="center" class="style1">Sistema de control de entrada y salida de elementos y/o equipos de computo </div>
</div>
<div id="Layer3">
<form id="form1" name="form1" method="post" action="">
<div align="center"><span class="style2">
</span></div>
<span class="style2"><label>
<div align="center">
<p>Usuario:
<input type="text" name="usuario" id="usuario"/>
<br />
<br />
<br />
Contrase&ntilde;a:
<input type="password" name="contrasena" id="contrasena" size="18" class="gaia le val" />
</p>
<p>&nbsp; </p>
<p>
<label>
<input type="submit" name="Submit" value="Entrar" />
</label>
</p>
</div>
</label>
</span>
</form>
</div>
<div id="Layer5"><strong><a href="index.php" class="style3">cambiar contrase&ntilde;a. </a></strong></div>
<div id="Layer6"><strong><a href="formulario.php" class="style3">agregar nuevo usuario </a></strong></div>
</body>
</html>


si alguien me lo puede corregir o aconsejarme estaria muy agardesico con todos ustedes gracias. mi correo es alejo.danny@hotmail.com necesito ayuda urgente gracias.

m4rc3l0

02/8/2010
sugerencia,php jejeje
bueno como sugerencia les pido que luego de haber leido el sist de autentificación necesitaria algo mas dificil para entender mejor pues en este sist no habla de la validación por correo , yo pienso q es escencial XD

jose_manuel_torres_alcalde

29/9/2010
ayuda autenticacion y mostrar datos.
Estoy trabajando en una web php+mysql. Tengo hecha la autenticación con usuario + contraseña. Una vez que ha comprobado que el usuario es correcto en la tabla correspondiente, quiero que lea unos datos de ese usuario y me los muestre. ¿Cómo puedo hacer esto? Soy muy novato, gracias a todos.

p&p

23/10/2010
pregunta
como hago que mi contraseña acepte solamente una letra al proncipio y despuesde esta solo numeros

merieno

01/5/2011
Excelente Manual
Excelente manual. Aunque haber si alguien aunque sea por mensaje privado, podría ser tan amable de responderme como hacer para darle función a que cuando un usuario se registra, el link de SALIR desaparezca. Muchísimas gracias y éxitos.

Wesker

05/5/2011
Dudasss
Ola Buenas no puedo descargar algunos manuales de php x q

JESUS

09/5/2011
PHP
HOLA ESTOY DISEÑANDO UN SISTEMA PERO ME PIDIERON QUE AL MOMENTO DE QUE EL USUARIO INICIARA SESSION SE IMPRIMIERA EL NOMBRE EN UN TEXTBOX AYUDEME POR FAVOR

gustavo

03/6/2011
solicitud de ayuda
muy bueno es post. soy nuevo en php y empiezo con apertura y lo ralacionado de cesiones, mi problema radica en hacer que al intentar abrir el archivo que queremos proteger introduciendo directamente la url del archivo me redirecciones al formulario de seguridad,puesto q me deja libremente osea la seguridad se ve burlada totalmente... espero ayudas, porfavor mi correo es ganaranjoo@unal.edu.co

rocker8811

29/10/2011
Gracias
Estoy empezando con PHP y me fue de gran utilidad

Luis Barrios

18/11/2011
Ayuda
Buenas.. Necesito ayuda,. Soy nuevo en esto y necesito con extrema urgencia de su ayuda. Mi jefe me pidio que le cree una página donde se necesite de un usuario y contraseña para poder acceder, de tanto manuales que ya me los lei no me sale nada. luisedu612@gmail.com si me pueden ayudar en eso a mi correo.. Le estare eternamente agradecido si lo hacen.. gracias

jmba

27/12/2011
Al cerrar sesión y presionar atrás vuelve a entrar
Se supone que al pulsar "salir" se destruye la sesión, pero al dar atrás en el navegador, vuelve a entrar a la aplicación, lo cual no debería hacer, debería enviar a la página de "login", pero no lo hace. Por favor pueden ayudar a corregir esto. He estado buscando como resolver esto en la web, pero nada ha resultado. En espera de su amable solución. Gracias

Lofthem

29/2/2012
Como bloquear la pagina, despues de 3 intentos fallidos de inicio de session, sin base de datos conectada.
Pues quisiera saber como implementar que con ingresar 3 veces mal los datos del usuario, ya no deje intentar iniciar la sesión, y pues en este link esta la carpeta con los archivos que uso, todo funciona bien, pero solo quisiera agregar ese detalle.
No pongo aqui los codigos, porque creo que sera menos entendible, o almenos eso creo yo.
PD: Para todos los que vean esta pregunta en un futuro, descarguen el archivo y chequenlo, y asi sabran como implementar la respuesta que espero me puedan dar!!! Saque los codigos de este mismo manual, oviamente, pero a mi modo, o bueno un poquito...

De antemano Gracias.

http://www.mediafire.com/?5qwudy3303o6btm

Markb02

22/3/2012
Tengo un Error que no Detecto
Amigos no entiendo porque no corre esta busqueda al parecer todo esta bien:

$ssql="select * from fotos where nombrefoto ='" . $_GET["imagen"] ."' and id_usuario =" . $_SESSION['id_fotousuario']";

$_GET["imagen"] es enviado desde una pagina diferente, les agradeceria mucho ayudarme a verificar el error.

Hugui Dugui

22/3/2012
No se cuál sea el problema :-/
No tengo problemas de permisos sobre los archivos y carpetas...

Cuando pulso sobre el botón de ENTRAR con los datos correctos o incorrectos, me envia a una página en blanco con la dirección "localhost/ejemploLogin/control.php".
Tengo todos los scripts bajo la misma carpeta y los tengo tan cual están expuestos aqui.

Por cierto, esta muy entendible este post, me parece excelente para quienes empezamos en PHP.

Saludos

julio_lopez-506609

24/8/2012
Ayuda
tengo mi archivo llamado registro.php en el ya mencionado tengo codigo que deberia de insertar datos a la base de datos, pero lo que no quiero hacer es terner 2 archivos uno en html el cual tiene el formulario y validarlo en php y que lo envie a la base de datos.
loq deseo hacer es en uno solo hacerlo digams q redireccionar.
alguien m pued ayudarrrr please help mi

el_fitox

09/9/2012
gracias
buen manual para comenzar desde cero
gracias

Juantasi

05/12/2013
Gracias
Muy bueno me ayudo mucho, estoy empezandos a programar. super facil

freddy0xal

13/1/2014
php
importante evitar la inyección sql y otros bugs que son potencialmente peligrosos, xss, html inyection etc..

luvo

20/5/2014
ayuda
disculpen como podria crear una session y que esos datos de registro sirva para las demas paginas porfa

Anonimo

21/8/2014
Pregunta
Esto se podría poner para proteger una pagina web entera?

Wolfito

02/10/2014
Duda
Hola estoy muy interesado en desarrollar este capitulo de PHP, he estado haciendo pruebas, antes de realizar este comentario, y no consigo que funcione.
Soy bastante novato con PHP, pero ganas de aprender no me faltan y creo que he comprendido bastante la sintaxis del lenguaje.
Llegados a este punto me surge la duda si podríais ayudarme a conseguir lo que quiero.
Muchas Gracias
Luis Lopez

Nivel0Bcn

02/1/2015
Sistema de autentificación PHP
Buenas noches,
He seguido todo vuestro ejemplo, para ponerlo en practica en mi pagina web.
Hasta el final todo bien, he conseguido hacer lo que marcabais. En localhost me funciona perfectamente, pero cuando lo subo al servido me sale pagina en blanco y me dice:
no puede abrir la pagina porque se han producido demasiados redireccionamientos.
No se que quiere decir y cual es el problema que hay.
Agradeceria si podeis ayudarme.
Saludos.

cristian lozada

15/11/2015
excelente manual
Muchas gracias por tomarte el tiempo y crear este manual, actualmente estoy trabajando fuertemente en crear una pagina web para mi proyecto de materia.
este manual me ha sido demasiado útil ya que es efectivo y fácil de entender

josegar83

23/11/2015
Para autenticar a varios y redireccionarlos a diferentes paginas
Hola muy buenas noches es muy banal lo que pregunto pero vemos lo que quiero
mira tengo archivos.
uno es index.php que va lo que muestra el principio ahí va poco código ya que todo lo incluyo con includes de php ok, buen ahí mando a un login.php en el esta el formulario de usuario y contraseña ya ahí esta por el método post y se vaa ascriptdeusuario.php ahí es donde conecto a la base de datos y hago la consulta si existe $matricula==$matricula y $pasword==$pasword bueno ya obteniendo los resultados que si exista y en mi base de datos tengo ejemplo:
id ! nombre ! ap_pat ! ap_mat ! status ! matricula ! paswword !
1 pedro olvid edi usuario 2652898 12345
2 juan arca edf moderador 365482 987654
3 oscar oli casr admin 956482 4444
lo que quiero es que redireccionarlos a diferentes paginas ya que cada uno tiene funciones especificas,
si es usuario enviarlo a usuario.php, modereador a modera,php y a admin a adm.php
como construyo el if o while en su caso solo eso muchas gracias....o como le hago helppp

Javerr

29/10/2016
cambio de php 5.3 a php 5.4
Una consulta desesperada.
He cambiado en mi hosting de php 5.3 a php 5.4 para cargar la última versión de moodle que asi lo exige y todo va bien salvo un pequeño modulo que reupera datos de inscripciones de interesados mediante un formulario.
Este modulo está en php pero tiene un modulo jscript al parecer editado con tinymce que de algún impide que se inicie la sesión tras autenticarse mediante usuario y contraseña, que está encriptada con md5.
Parece reconocer el usuario y contraseña pero cuando deberia traer el panel de administración y los datos de la BD, para ver los usuarios registrados la pantalla queda en blanco.
¿alguien puede ayudarme con esto, que ha cambiado en php 5.4 para que no funcione?
Llevo dando vueltas por todo el codigo php y no veo nada extraño, dado que no soy un experto en programación.
Gracias