SlideShare una empresa de Scribd logo
1 de 4
Validación o autenticación de usuarios en PHP (segunda parte)
05mar07
En esta segunda y última parte, les mostraré en que consisten los archivos login.php,
autenticacion.php, aplicacion.php y un cuarto archivo salir.php
El primer archivo, login.php, es bastante simple. Sólo se trata de un simple condicional que
verifica la existencia o no de una variable al principio del script que, dependiendo del
resultado, muestra un texto de advertencia en un color o en otro. La última parte del script
es un formulario que al introducir los datos redirigirá la página a autenticacion.php.
login.php
<html>
<head>
<title>Autenticación PHP</title>
</head>
<body>
<h1>Formulario de autenticación</h1>
<?if ($_GET["errorusuario"]=="si"){?>
<font color="red"><b>Datos incorrectos</b></font>
<?}else{?>
Introduce tu nombre de usuario y contraseña
<?}?>
<form action="autenticacion.php" method="POST">
<table border="0">
<tr><td>Nombre de usuario:</td><td><input name="usuario" size="25"
value=""/></td></tr>
<tr><td>Contraseña:</td><td><input name="contrasena" size="25"
type="password"/></td></tr>
<tr><td/><td><input type="submit" value="Inicio de sesión"/></td></tr>
</table>
</form>
Para ingresar, debés ingresar <b>usuario</b> en el 1er campo y <b>123</b>
en el 2do.
</body>
</html>
El otro archivo es el autenticacion.php. Es también bastante simple.
autenticacion.php
<?
//vemos si el usuario y contraseña son válidos
if ($_POST["usuario"]=="usuario" && $_POST["contrasena"]=="123"){
//usuario y contraseña válidos
//se define una sesion y se guarda el dato session_start();
$_SESSION["autenticado"]= "SI";
header ("Location: aplicacion.php");
}else {
//si no existe se va a login.php
header("Location: login.php?errorusuario=si");
}
?>
Como habrán visto, se hace uso de sesiones para manejar una variable que se utilizará para
indicar si el usuario se logeó en forma exitosa o no.
En estos scripts no trabajo con una base de datos para no alargar demasiado este post, pero
lo que aquí sí interesa es la recuperación de las variables de usuario y la clave correctas
para compararlas con las que se ingresan desde el formulario. Aquí directamente
comparamos los campos ingresados del formulario con dos variables ya definidas.
En caso de ingresar los datos correctos, se crea una variable de sesion (autenticado -que
será leída más tarde desde los scripts de la aplicación segura-) y se redirigirá la página a
aplicacion.php. En caso de ingresar datos incorrectos, no se crea esa variable de sesion y
se pasa una variable de error a login.php que sirve para mostrar en pantalla que ingresamos
mal los datos.
Antes de mostrar aplicacion.php, voy a mostrarles en que consiste el bloque de seguridad
que estará dentro de aplicacion.php en forma de un include.
bloqueDeSeguridad.php
<?
//Inicio la sesión
session_start();
//COMPRUEBA QUE EL USUARIO ESTA AUTENTICADO
if ($_SESSION["autenticado"] != "SI") {
//si no existe, va a la página de autenticacion
header("Location: login.php");
//salimos de este script
exit();
}
?>
En ésta parte sólo se verifica que exista la variable de sesion (autenticado). Si existe no
hace nada y continúa, y si no existe, redirige la página a login.php
Ahora pasamos a ver el script aplicacion.php. Este contiene el bloque de seguridad al
principio, de tal manera de que sea lo primero que se ejecute en el script… El contenido de
la aplicación segura es trivial.
aplicacion.php
<?include ("bloqueDeSeguridad.php");?>
<html>
<head>
<title>Aplicación segura</title>
</head>
<body>
<h1>Ahora estás en una aplicación segura</h1>
<br>
<br>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.
<br>
<br>
<br>
<a href="salir.php">Hacé click aquí para salir</a>
</body>
</html>
Es interesante comprobar que pasa si se tipea en el browser directamente aplicacion.php.
Podremos comprobar que no accede a la misma. Esto es porque en este script, al princio
está el bloque de seguridad que, al no ver la variable de sesion porque no existe o porque si
existe su valor es incorrecto, en vez de continuar con el script de aplicacion.php, corta todo
ahí mismo y redirige a login.php
Por último para salir de la sesion, es decir para destruir la variable de sesion, se puede hacer
clik en salir.php. La razón por la que podríamos desear destruir esa variable es que no
quisiéramos que algún intruso aproveche el descuido de un usuario válido, que al retirarse
momentáneamente de su computadora, aquél utilice ésa misma computadora para acceder a
contenidos seguros.
salir.php
<?
session_start();
session_destroy();
?>
<html>
<head>
<title>Contenido no seguro</title>
</head>
<body>
Ahora estás fuera de la aplicación segura.
<br>
<br>
<a href="login.php">Autenticar usuario</a>
</body>
</html>
Eso es todo.
Se debe saber que la forma en se implementó este sistema de seguridad es bastante
discutible. Por ejemplo, la variable de sesion (autenticado) es bastante simple de “adivinar”
y por lo tanto, tendríamos que crear una variable de sesion con un nombre un poco mas
complejo, como ser “HjkrTS3986Yg444aASds”.

Más contenido relacionado

Destacado

Folleto principio de curso para pais
Folleto principio de curso para paisFolleto principio de curso para pais
Folleto principio de curso para paisSilvia López
 
稅務員被依貪污罪嫌起訴 個案-五千輪胎賄污-詹翔霖教授
稅務員被依貪污罪嫌起訴 個案-五千輪胎賄污-詹翔霖教授稅務員被依貪污罪嫌起訴 個案-五千輪胎賄污-詹翔霖教授
稅務員被依貪污罪嫌起訴 個案-五千輪胎賄污-詹翔霖教授文化大學
 
原民美食 詹翔霖教授
原民美食 詹翔霖教授原民美食 詹翔霖教授
原民美食 詹翔霖教授文化大學
 
Bingo familiar
Bingo familiarBingo familiar
Bingo familiaruedrjghaft
 
A horta do sr lobo
A horta do sr loboA horta do sr lobo
A horta do sr loboquintadocano
 
OWD2011 - 1 - Serious gaming: Why not have fun while learning! - Jeroen Aless...
OWD2011 - 1 - Serious gaming: Why not have fun while learning! - Jeroen Aless...OWD2011 - 1 - Serious gaming: Why not have fun while learning! - Jeroen Aless...
OWD2011 - 1 - Serious gaming: Why not have fun while learning! - Jeroen Aless...SURF Events
 
被迫3年無薪假 詹翔霖
被迫3年無薪假 詹翔霖被迫3年無薪假 詹翔霖
被迫3年無薪假 詹翔霖文化大學
 
Universidad fermin toro
Universidad fermin toroUniversidad fermin toro
Universidad fermin toroErika Peña
 
Noam chomsky chomsky on miseducation - e book
Noam chomsky   chomsky on miseducation - e bookNoam chomsky   chomsky on miseducation - e book
Noam chomsky chomsky on miseducation - e bookLight Upon Light
 

Destacado (20)

Folleto principio de curso para pais
Folleto principio de curso para paisFolleto principio de curso para pais
Folleto principio de curso para pais
 
Public Lecture Slide Presentation (4.11.2013)
Public Lecture Slide Presentation (4.11.2013)Public Lecture Slide Presentation (4.11.2013)
Public Lecture Slide Presentation (4.11.2013)
 
Dont Be Sad
Dont Be SadDont Be Sad
Dont Be Sad
 
稅務員被依貪污罪嫌起訴 個案-五千輪胎賄污-詹翔霖教授
稅務員被依貪污罪嫌起訴 個案-五千輪胎賄污-詹翔霖教授稅務員被依貪污罪嫌起訴 個案-五千輪胎賄污-詹翔霖教授
稅務員被依貪污罪嫌起訴 個案-五千輪胎賄污-詹翔霖教授
 
Resolução cofen nº 259
Resolução cofen nº 259Resolução cofen nº 259
Resolução cofen nº 259
 
原民美食 詹翔霖教授
原民美食 詹翔霖教授原民美食 詹翔霖教授
原民美食 詹翔霖教授
 
Bingo familiar
Bingo familiarBingo familiar
Bingo familiar
 
Plano anual
Plano anualPlano anual
Plano anual
 
Enviando linux
Enviando linuxEnviando linux
Enviando linux
 
Taller objetivos
Taller objetivosTaller objetivos
Taller objetivos
 
A horta do sr lobo
A horta do sr loboA horta do sr lobo
A horta do sr lobo
 
OWD2011 - 1 - Serious gaming: Why not have fun while learning! - Jeroen Aless...
OWD2011 - 1 - Serious gaming: Why not have fun while learning! - Jeroen Aless...OWD2011 - 1 - Serious gaming: Why not have fun while learning! - Jeroen Aless...
OWD2011 - 1 - Serious gaming: Why not have fun while learning! - Jeroen Aless...
 
被迫3年無薪假 詹翔霖
被迫3年無薪假 詹翔霖被迫3年無薪假 詹翔霖
被迫3年無薪假 詹翔霖
 
Universidad fermin toro
Universidad fermin toroUniversidad fermin toro
Universidad fermin toro
 
Ecg
EcgEcg
Ecg
 
Ti cs slide
Ti cs  slideTi cs  slide
Ti cs slide
 
Assistência pnas suas giani
Assistência pnas suas gianiAssistência pnas suas giani
Assistência pnas suas giani
 
Colores nuevos para tuvida
Colores nuevos para tuvidaColores nuevos para tuvida
Colores nuevos para tuvida
 
Galiza editado
Galiza editadoGaliza editado
Galiza editado
 
Noam chomsky chomsky on miseducation - e book
Noam chomsky   chomsky on miseducation - e bookNoam chomsky   chomsky on miseducation - e book
Noam chomsky chomsky on miseducation - e book
 

Similar a Validación o autenticación de usuarios en php

Implementar la seguridad en el acceso a datos
Implementar la seguridad en el acceso a datosImplementar la seguridad en el acceso a datos
Implementar la seguridad en el acceso a datosHelmilpa
 
Sesiones en-php1536
Sesiones en-php1536Sesiones en-php1536
Sesiones en-php1536xib32
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Esteban Saavedra
 
Programación orientada a objetos II
Programación orientada a objetos IIProgramación orientada a objetos II
Programación orientada a objetos IIyanburbano
 
Proyecto, PHP y MySQL
Proyecto, PHP y MySQLProyecto, PHP y MySQL
Proyecto, PHP y MySQLyanburbano
 
Hackin9 - Ataques de tipo HTML injection
Hackin9 - Ataques de tipo HTML injectionHackin9 - Ataques de tipo HTML injection
Hackin9 - Ataques de tipo HTML injectiondegarden
 
Controles aspnet validacion
Controles aspnet validacionControles aspnet validacion
Controles aspnet validacionAround a Bit
 
Práctica web de la sesión 14.pptx
Práctica web de la sesión 14.pptxPráctica web de la sesión 14.pptx
Práctica web de la sesión 14.pptxLuis Orozco
 
vAplicación parte 1
vAplicación parte 1vAplicación parte 1
vAplicación parte 1yanburbano
 
Trabajando con sesiones en PHP
Trabajando con sesiones en PHPTrabajando con sesiones en PHP
Trabajando con sesiones en PHPEliot Ramos
 
Manual php completo by_ desarrolloweb
Manual php completo by_ desarrollowebManual php completo by_ desarrolloweb
Manual php completo by_ desarrollowebJomar Burgos Palacios
 
Implementación del Ejemplo de Stored Procedures y Triggers en PHP
Implementación del Ejemplo de Stored Procedures y Triggers en PHPImplementación del Ejemplo de Stored Procedures y Triggers en PHP
Implementación del Ejemplo de Stored Procedures y Triggers en PHPvictorsalas
 
Documentación de pruebas del software
Documentación de pruebas del softwareDocumentación de pruebas del software
Documentación de pruebas del softwareLina Vega
 

Similar a Validación o autenticación de usuarios en php (20)

Implementar la seguridad en el acceso a datos
Implementar la seguridad en el acceso a datosImplementar la seguridad en el acceso a datos
Implementar la seguridad en el acceso a datos
 
Sesiones en-php1536
Sesiones en-php1536Sesiones en-php1536
Sesiones en-php1536
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5
 
Programación orientada a objetos II
Programación orientada a objetos IIProgramación orientada a objetos II
Programación orientada a objetos II
 
Proyecto, PHP y MySQL
Proyecto, PHP y MySQLProyecto, PHP y MySQL
Proyecto, PHP y MySQL
 
Hackin9 - Ataques de tipo HTML injection
Hackin9 - Ataques de tipo HTML injectionHackin9 - Ataques de tipo HTML injection
Hackin9 - Ataques de tipo HTML injection
 
Funciones
FuncionesFunciones
Funciones
 
Controles aspnet validacion
Controles aspnet validacionControles aspnet validacion
Controles aspnet validacion
 
Práctica web de la sesión 14.pptx
Práctica web de la sesión 14.pptxPráctica web de la sesión 14.pptx
Práctica web de la sesión 14.pptx
 
284
284284
284
 
Tarea_sesion14.pptx
Tarea_sesion14.pptxTarea_sesion14.pptx
Tarea_sesion14.pptx
 
Html investigacion
Html investigacionHtml investigacion
Html investigacion
 
Html investigacion
Html investigacionHtml investigacion
Html investigacion
 
vAplicación parte 1
vAplicación parte 1vAplicación parte 1
vAplicación parte 1
 
3. consultar datos
3.  consultar datos3.  consultar datos
3. consultar datos
 
Trabajando con sesiones en PHP
Trabajando con sesiones en PHPTrabajando con sesiones en PHP
Trabajando con sesiones en PHP
 
Manual php completo by_ desarrolloweb
Manual php completo by_ desarrollowebManual php completo by_ desarrolloweb
Manual php completo by_ desarrolloweb
 
Eventos
EventosEventos
Eventos
 
Implementación del Ejemplo de Stored Procedures y Triggers en PHP
Implementación del Ejemplo de Stored Procedures y Triggers en PHPImplementación del Ejemplo de Stored Procedures y Triggers en PHP
Implementación del Ejemplo de Stored Procedures y Triggers en PHP
 
Documentación de pruebas del software
Documentación de pruebas del softwareDocumentación de pruebas del software
Documentación de pruebas del software
 

Último

PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYOPDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYOManuelBustamante49
 
Presentación Proyecto Vintage Scrapbook Marrón (1).pdf
Presentación Proyecto Vintage Scrapbook Marrón (1).pdfPresentación Proyecto Vintage Scrapbook Marrón (1).pdf
Presentación Proyecto Vintage Scrapbook Marrón (1).pdfAdrianaCarolinaMoral2
 
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfINICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfBrbara57940
 
Topografía cuadro de construcción ing.civil
Topografía cuadro de construcción ing.civilTopografía cuadro de construcción ing.civil
Topografía cuadro de construcción ing.civilmeloamerica93
 
plantilla-de-messi-1.pdf es muy especial
plantilla-de-messi-1.pdf es muy especialplantilla-de-messi-1.pdf es muy especial
plantilla-de-messi-1.pdf es muy especialAndreaMlaga1
 
Proceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoProceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoJorge Fernandez
 
Brochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfBrochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfhellotunahaus
 
Arquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfArquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfLeonardoDantasRivas
 
guia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfguia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfcucciolosfabrica
 
Torre 222 sobre instalaciones de este mismo edificio
Torre 222 sobre instalaciones de este mismo edificioTorre 222 sobre instalaciones de este mismo edificio
Torre 222 sobre instalaciones de este mismo edificio2021ArqROLDANBERNALD
 
diseño de plantas agroindustriales unidad
diseño de plantas agroindustriales unidaddiseño de plantas agroindustriales unidad
diseño de plantas agroindustriales unidaddabuitragoi
 
Presentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxPresentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxbarbaracantuflr
 
Diseño de sifones y alcantarillas para obras hidraulicas
Diseño de sifones y alcantarillas para obras hidraulicasDiseño de sifones y alcantarillas para obras hidraulicas
Diseño de sifones y alcantarillas para obras hidraulicasRiegosVeracruz
 
Espacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesEspacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesespejosflorida
 
Jesus Diaz afiche Manierismo .pdf arquitectura
Jesus Diaz afiche Manierismo .pdf arquitecturaJesus Diaz afiche Manierismo .pdf arquitectura
Jesus Diaz afiche Manierismo .pdf arquitecturajesusgrosales12
 
Afiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezAfiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezPaola575380
 
Geometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroGeometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroJuan Carlos Fonseca Mata
 
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfSlaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfslaimenbarakat
 

Último (20)

PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYOPDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
 
Presentación Proyecto Vintage Scrapbook Marrón (1).pdf
Presentación Proyecto Vintage Scrapbook Marrón (1).pdfPresentación Proyecto Vintage Scrapbook Marrón (1).pdf
Presentación Proyecto Vintage Scrapbook Marrón (1).pdf
 
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfINICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
 
Topografía cuadro de construcción ing.civil
Topografía cuadro de construcción ing.civilTopografía cuadro de construcción ing.civil
Topografía cuadro de construcción ing.civil
 
plantilla-de-messi-1.pdf es muy especial
plantilla-de-messi-1.pdf es muy especialplantilla-de-messi-1.pdf es muy especial
plantilla-de-messi-1.pdf es muy especial
 
Proceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoProceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimiento
 
Brochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfBrochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdf
 
Arquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfArquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdf
 
1.La locomoción de los seres vivos diseño
1.La locomoción de los seres vivos diseño1.La locomoción de los seres vivos diseño
1.La locomoción de los seres vivos diseño
 
guia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfguia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdf
 
Torre 222 sobre instalaciones de este mismo edificio
Torre 222 sobre instalaciones de este mismo edificioTorre 222 sobre instalaciones de este mismo edificio
Torre 222 sobre instalaciones de este mismo edificio
 
diseño de plantas agroindustriales unidad
diseño de plantas agroindustriales unidaddiseño de plantas agroindustriales unidad
diseño de plantas agroindustriales unidad
 
Presentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxPresentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptx
 
Diseño de sifones y alcantarillas para obras hidraulicas
Diseño de sifones y alcantarillas para obras hidraulicasDiseño de sifones y alcantarillas para obras hidraulicas
Diseño de sifones y alcantarillas para obras hidraulicas
 
Espacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesEspacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientes
 
Arte textil: Tejidos artesanos en la frontera hispano-lusa
Arte textil: Tejidos artesanos en la frontera hispano-lusaArte textil: Tejidos artesanos en la frontera hispano-lusa
Arte textil: Tejidos artesanos en la frontera hispano-lusa
 
Jesus Diaz afiche Manierismo .pdf arquitectura
Jesus Diaz afiche Manierismo .pdf arquitecturaJesus Diaz afiche Manierismo .pdf arquitectura
Jesus Diaz afiche Manierismo .pdf arquitectura
 
Afiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezAfiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola Perez
 
Geometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroGeometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de Querétaro
 
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfSlaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
 

Validación o autenticación de usuarios en php

  • 1. Validación o autenticación de usuarios en PHP (segunda parte) 05mar07 En esta segunda y última parte, les mostraré en que consisten los archivos login.php, autenticacion.php, aplicacion.php y un cuarto archivo salir.php El primer archivo, login.php, es bastante simple. Sólo se trata de un simple condicional que verifica la existencia o no de una variable al principio del script que, dependiendo del resultado, muestra un texto de advertencia en un color o en otro. La última parte del script es un formulario que al introducir los datos redirigirá la página a autenticacion.php. login.php <html> <head> <title>Autenticación PHP</title> </head> <body> <h1>Formulario de autenticación</h1> <?if ($_GET["errorusuario"]=="si"){?> <font color="red"><b>Datos incorrectos</b></font> <?}else{?> Introduce tu nombre de usuario y contraseña <?}?> <form action="autenticacion.php" method="POST"> <table border="0"> <tr><td>Nombre de usuario:</td><td><input name="usuario" size="25" value=""/></td></tr> <tr><td>Contraseña:</td><td><input name="contrasena" size="25" type="password"/></td></tr> <tr><td/><td><input type="submit" value="Inicio de sesión"/></td></tr> </table> </form> Para ingresar, debés ingresar <b>usuario</b> en el 1er campo y <b>123</b> en el 2do. </body> </html>
  • 2. El otro archivo es el autenticacion.php. Es también bastante simple. autenticacion.php <? //vemos si el usuario y contraseña son válidos if ($_POST["usuario"]=="usuario" && $_POST["contrasena"]=="123"){ //usuario y contraseña válidos //se define una sesion y se guarda el dato session_start(); $_SESSION["autenticado"]= "SI"; header ("Location: aplicacion.php"); }else { //si no existe se va a login.php header("Location: login.php?errorusuario=si"); } ?> Como habrán visto, se hace uso de sesiones para manejar una variable que se utilizará para indicar si el usuario se logeó en forma exitosa o no. En estos scripts no trabajo con una base de datos para no alargar demasiado este post, pero lo que aquí sí interesa es la recuperación de las variables de usuario y la clave correctas para compararlas con las que se ingresan desde el formulario. Aquí directamente comparamos los campos ingresados del formulario con dos variables ya definidas. En caso de ingresar los datos correctos, se crea una variable de sesion (autenticado -que será leída más tarde desde los scripts de la aplicación segura-) y se redirigirá la página a aplicacion.php. En caso de ingresar datos incorrectos, no se crea esa variable de sesion y se pasa una variable de error a login.php que sirve para mostrar en pantalla que ingresamos mal los datos. Antes de mostrar aplicacion.php, voy a mostrarles en que consiste el bloque de seguridad que estará dentro de aplicacion.php en forma de un include. bloqueDeSeguridad.php <? //Inicio la sesión session_start(); //COMPRUEBA QUE EL USUARIO ESTA AUTENTICADO if ($_SESSION["autenticado"] != "SI") { //si no existe, va a la página de autenticacion header("Location: login.php"); //salimos de este script exit(); } ?> En ésta parte sólo se verifica que exista la variable de sesion (autenticado). Si existe no hace nada y continúa, y si no existe, redirige la página a login.php
  • 3. Ahora pasamos a ver el script aplicacion.php. Este contiene el bloque de seguridad al principio, de tal manera de que sea lo primero que se ejecute en el script… El contenido de la aplicación segura es trivial. aplicacion.php <?include ("bloqueDeSeguridad.php");?> <html> <head> <title>Aplicación segura</title> </head> <body> <h1>Ahora estás en una aplicación segura</h1> <br> <br> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br> <br> <br> <a href="salir.php">Hacé click aquí para salir</a> </body> </html> Es interesante comprobar que pasa si se tipea en el browser directamente aplicacion.php. Podremos comprobar que no accede a la misma. Esto es porque en este script, al princio está el bloque de seguridad que, al no ver la variable de sesion porque no existe o porque si existe su valor es incorrecto, en vez de continuar con el script de aplicacion.php, corta todo ahí mismo y redirige a login.php Por último para salir de la sesion, es decir para destruir la variable de sesion, se puede hacer clik en salir.php. La razón por la que podríamos desear destruir esa variable es que no quisiéramos que algún intruso aproveche el descuido de un usuario válido, que al retirarse momentáneamente de su computadora, aquél utilice ésa misma computadora para acceder a contenidos seguros. salir.php <? session_start(); session_destroy(); ?> <html> <head> <title>Contenido no seguro</title> </head> <body> Ahora estás fuera de la aplicación segura.
  • 4. <br> <br> <a href="login.php">Autenticar usuario</a> </body> </html> Eso es todo. Se debe saber que la forma en se implementó este sistema de seguridad es bastante discutible. Por ejemplo, la variable de sesion (autenticado) es bastante simple de “adivinar” y por lo tanto, tendríamos que crear una variable de sesion con un nombre un poco mas complejo, como ser “HjkrTS3986Yg444aASds”.