Diferencia entre revisiones de «Usuario:ManuelRomero/php/autentificacion»
De WikiEducator
< Usuario:ManuelRomero | php
(→PHP accediendo a información http) |
|||
(6 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
− | |||
− | |||
− | |||
{{:Usuario:ManuelRomero/php/nav}} | {{:Usuario:ManuelRomero/php/nav}} | ||
Línea 100: | Línea 97: | ||
{{Actividad| | {{Actividad| | ||
Crea un sencillo sitio web que me rediriga a 4 páginas: | Crea un sencillo sitio web que me rediriga a 4 páginas: | ||
− | '''''Información General''''' : Tendrá acceso todo el mundo | + | *'''''Información General''''' : Tendrá acceso todo el mundo |
− | '''''Información restirngida''''': Sólo tendŕan acceso maría nieves y sara | + | *'''''Información restirngida''''': Sólo tendŕan acceso maría nieves y sara |
− | '''''Información Sara''''' : Tendrá acceso solo el usuario sara | + | *'''''Información Sara''''' : Tendrá acceso solo el usuario sara |
− | '''''Información de grupo''''' : Tendrá acceso los usuarios maría y nieves | + | *'''''Información de grupo''''' : Tendrá acceso los usuarios maría y nieves |
}} | }} | ||
Línea 112: | Línea 109: | ||
#'''''PHP_AUTH_USER''''' Es el nombre del usuario | #'''''PHP_AUTH_USER''''' Es el nombre del usuario | ||
#'''''PHP_AUTH_PW''''' Es la password del usuario | #'''''PHP_AUTH_PW''''' Es la password del usuario | ||
− | #''''' | + | #'''''AUTH_TYPE''''' Es el tipo de seguridad utilizado |
{{Actividad| | {{Actividad| | ||
− | *Modifica la página restringida para ver el usuario y password así como el método usado de autentifiacion}} | + | *Modifica la página restringida para ver el usuario y password así como el método usado de autentifiacion |
+ | *El código que habría que añadir | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | echo "te has autentificado como:<br/>"; | ||
+ | |||
+ | echo "Usuario: ". $_SERVER['PHP_AUTH_USER']."<br/>"; | ||
+ | echo "Password: ". $_SERVER['PHP_AUTH_PW']."<br/>"; | ||
+ | echo "Tipo de autentificacion: ". $_SERVER['AUTH_TYPE']; | ||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | }} | ||
===Usar función header para la autentifiación=== | ===Usar función header para la autentifiación=== | ||
Línea 191: | Línea 200: | ||
*Para obtener el código md5 y crearlo en la base de datos, podemos usar esta página | *Para obtener el código md5 y crearlo en la base de datos, podemos usar esta página | ||
http://www.md5online.es/cifrar-md5.html | http://www.md5online.es/cifrar-md5.html | ||
+ | ==Solución propuesta== | ||
+ | <source lang=php> | ||
+ | <!DOCTYPE html> | ||
+ | <?php | ||
+ | <!DOCTYPE html> | ||
+ | <?php | ||
+ | // Si el usuario aún no se ha autentificado, pedimos las credenciales | ||
+ | //Observa que escribimos esto antes de escribier ninguna salida | ||
+ | //Esto es importante si se usa la función header | ||
+ | if (!isset($_SERVER['PHP_AUTH_USER'])) { | ||
+ | header('WWW-Authenticate: Basic realm="Contenido restringido"'); | ||
+ | header("HTTP/1.0 401 Unauthorized"); | ||
+ | exit; | ||
+ | } | ||
+ | // Si ya ha enviado las credenciales, las comprobamos con la base de datos | ||
+ | else { | ||
+ | // Conectamos a la base de datos | ||
+ | |||
+ | $conexion = new mysqli("localhost", "root", "root", "dwes"); | ||
+ | $error = $conexion->connect_errno; | ||
+ | // Si se estableció la conexión | ||
+ | if ($error == null) { | ||
+ | //Realizamos una consulta preparada | ||
+ | $consulta = $conexion->stmt_init(); | ||
+ | // Ejecutamos la consulta para comprobar si existe | ||
+ | // esa combinación de usuario y contraseñ | ||
+ | $sql = <<<SQL | ||
+ | SELECT usuario FROM usuarios | ||
+ | WHERE usuario = ? AND | ||
+ | contrasena = ? | ||
+ | SQL; | ||
+ | |||
+ | $usuario = $_SERVER['PHP_AUTH_USER']; | ||
+ | $pass = md5($_SERVER['PHP_AUTH_PW']); | ||
+ | $consulta->prepare($sql); | ||
+ | $consulta->bind_param("ss", $usuario, $pass); | ||
+ | $consulta->execute(); | ||
+ | $consulta->store_result(); | ||
+ | if ($consulta->num_rows === 0) { | ||
+ | |||
+ | header('WWW-Authenticate: Basic realm="Contenido restringido"'); | ||
+ | header("HTTP/1.0 401 Unauthorized"); | ||
+ | //Esto solo se visualizará si damos a cancelar del formulario de autentificación | ||
+ | $consulta->close(); | ||
+ | $conexion->close(); | ||
+ | echo "<h1> Usuario y password no autorizado reintentelo </h1>"; | ||
+ | exit; | ||
+ | } | ||
+ | $consulta->close(); | ||
+ | $conexion->close(); | ||
+ | }//End error =null | ||
+ | }//End else de if !isset ..... | ||
+ | ?> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta http-equiv="content-type" content="text/html; charset=UTF-8"> | ||
+ | <title>Ejemplo Tema 4: Utilización de MySQL para autentificación HTTP</title> | ||
+ | <link href="dwes.css" rel="stylesheet" type="text/css"> | ||
+ | </head> | ||
+ | <body> | ||
+ | <?php | ||
+ | echo "Nombre de usuario: " . $_SERVER['PHP_AUTH_USER'] . "<br />"; | ||
+ | echo "Hash de la contraseña: " . md5($_SERVER['PHP_AUTH_PW']) . "<br />"; | ||
+ | ?> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
}} | }} | ||
Última revisión de 21:16 8 feb 2015
|