Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Diseño web | Promoción web | Ganar dinero
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

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.


19/12/02 - Esta página será encargada de decidir si los datos de configuración son correctos y actuar en consecuencia. Dependiendo del nivel de seguridad que queramos aplicar a nuestra aplicación, esta página será más o menos complicada.

En un principio no deseo liar mucho las cosas, así que explicaré una versión muy reducida de este archivo de control, en la que se comprueba si el usuario y contraseña sean dos valores específicos. Esto tiene la desventaja que sólo podemos crear un usuario/contraseña distinto y no un sistema que permita muchos usuarios distintos. Bueno, en realidad si que permitirá que accedan muchos usuarios a la vez, pero utilizando todos el mismo nombre de usuario y contraseña.

En aplicaciones más avanzadas podríamos tener en una base de datos una lista de usuarios con sus contraseñas. Entonces, en este archivo de control deberíamos hacer una búsqueda para ver si existe una correspondencia en la base de datos de ese usuario con esa contraseña. Esto lo veremos en adelante, ahora nos quedamos con la versión reducida.

Después de la comprobación podrán pasar dos cosas:
Si los datos son correctos, definirá una variables de sesión que servirá para saber que ese visitante ha sido validado correctamente y tiene permiso para acceder a la aplicación. Además redireccionará al visitante a la página de la aplicación restringida.
Si el usuario/contraseña no era correcto, se envía al navegador a la página de inicio pasando la variable errorusuario=si, que indica que ha habido un error en la autentificación.

El código se puede ver a continuación:

<?
//vemos si el usuario y contraseña es váildo
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){
    //usuario y contraseña válidos
    //defino una sesion y guardo datos
    session_start();
    $_SESSION["autentificado"]= "SI";
    header ("Location: aplicacion.php");
}else {
    //si no existe le mando otra vez a la portada
    header("Location: index.php?errorusuario=si");
}
?>


Referencia: Dos enlaces a documentación relacionada en nuestro manual de Programación en PHP:

Aprender el uso de sesiones http://www.desarrolloweb.com/articulos/320.php?manual=12

Aprender el paso de variables por formulario http://www.desarrolloweb.com/articulos/318.php?manual=12

Ver el sistema en funcionamiento

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 9 comentarios (Añadir)
+ 18 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com
URL: http://www.desarrolloweb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Sistema de autentificación PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en PHP


 Comentarios de los visitantes
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
Se muestran 9 comentarios revisados

 Comentario de freddy nunez
11/12/03 
saludos, he puesto en practica este script y funciona pero:
1.la pagina protegida con clave a la q se desea accesar, una vez hecho esto, se ve la direccion en la barra de direcciones. por lo tanto , uno puede puentear , e irse de frente a esa direccion y pasar por alto el password y el usuario.
como solucionan este problema

RESPUESTA

Aunque escribas la dirección de la página directamente en tu navegador, no podrás acceder al contenido de acceso restringido, puesto que el sistema comprueba si se ha realizado la autenticación del usuario a través comprobar si realmente existen las variables de sesión que se deben de crear en la página de acceso.

De modo que, si no accedes pasando por la página de acceso, no se crearán las correspondientes variables de sesión y no podrás acceder a la página restringida. gracias


 Comentario de Marc0s
14/2/04 
Tal vez lo mejor sea incluir todo dentro de un directorio, menos los dos archivos php index.php y el de comprobacion del usuario. Ese directorio lo podemos proteger despues (modificando el archivo de configuracion correspondiente).

 Comentario de Pablo
24/2/04 
Me aparece el siguiente error: Warning: session_start(): open(/tmp\sess_196f11545b1b5bcbe29cb6d206b97bf1, O_RDWR) failed: No such file or directory (2) in D:\www\Test\control.php on line 6 Alguien me puede ayudar????

RESPUESTA

Te has fijado si el directorio ese, en el que intenta escribir información PHP está creado y con permisos de escritura? Es decir, tienes creado el directorio tmp?


 Comentario de fasp
12/3/04 
pues existen muchas formas para evitar "puentear", pero la que yo haria seria la de usar POST en vez de GET en la forma de la 1era pagina en <form method="POST">....</form> de esta forma se esconde los datos a pasar pa otra pagina, pero pues lo mejor seria algun tipo de encriptamiento.

Y ya entrados en el tema y viendo que a ti si te funciono el script, a mi me marca un error en la 1era pagina (index.php), dice ke la variable "errorusuario" no ha sido declarada, como soluciono esto?, no es nada mas declarla debe de haber algo mas.

 Comentario de Andrés
27/5/04 
Muy bueno el artículo! Sólo quiero comentar un detalle: si el usuario no tiene las coockies habilitadas en su navegador, no funciona. Para solucionarlo, en el header que redirecciona a aplicacion.php hay que propagar el identificador de sesion. Sería algo como esto:
header ("Location: aplicacion.php".SID);
}else {
    //si no existe le mando otra vez a la portada
    header("Location: index.php?errorusuario=si");
}
Saludos y gracias por compartir sus conocimientos.

 Comentario de Andres
27/5/04 
Correccion: en el comentario que hice antes, el codigo correcto para propagar el SID es el sigte:
header ("Location: aplicacion.php?".SID);
(Me faltaba el '?').
Un saludo.

 Comentario de Alfonso Flores Honores
13/7/04 
El articulo esta excelentey funciona a las mil maravillas, con la excepción que no trabaja cuando el register_globals esta en OFF ...alguien sabe como corregir esto

 Comentario de Halcon
12/7/05 
Leia por ahi por artes del destino en su foro, si meten ésto en la cabecera antes de aplicacion.php o en cualquier archivo php que deseen que el usuario visualice solo si está autentificado, evitan que si escriben en la url del navegador se visualice el archivo, si el usuario no está autentificado en la session redirecciona a index.php

<?php
session_start();
if ($_SESSION["autentificado"]!="SI") {
header("Location: index.php");
}
?>

 Comentario de Dani Alonso
09/3/06 
De esta forma podreis crear más usuarios:

<?
//Forummed
if ($_POST["usuario"]=="pedro" && $_POST["contrasena"]=="123"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: priv_fm159r3.php");
//Styl Computer
}elseif ($_POST["usuario"]=="dani" && $_POST["contrasena"]=="456"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: priv_st196w1.php");
//Otra tienda
}elseif ($_POST["usuario"]=="laura" && $_POST["contrasena"]=="789"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: priv_yt966z3.php");
}
elseif ($_POST["usuario"]=="pedro" && $_POST["contrasena"]=="159"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: priv_fm159r3.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>

Añadir un comentario al artículo Añadir un comentario del artículo
 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 18 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Sistema de autentificación PHP
Categorías
+Scripts en PHP

Lectura recomendada
+ PHP

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia