Diferencia entre revisiones de «Usuario:ManuelRomero/php/cookies»
De WikiEducator
< Usuario:ManuelRomero | php
Línea 152: | Línea 152: | ||
}} | }} | ||
|} | |} | ||
+ | <!-- | ||
+ | <!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; | ||
+ | } else { //Situación en la que el usuario se ha conectado ok | ||
+ | if (isset($_COOKIE["usuario"])){ | ||
+ | $acceso=$_COOKIE["usuario"]; | ||
+ | } | ||
+ | $acceso[]=time(); | ||
+ | $indice =count($acceso)-1; | ||
+ | //$indice = count($acceso)-1; | ||
+ | |||
+ | setcookie("usuario[$indice]",time(),time()+12*30*24*3600); | ||
+ | print_r($_COOKIE); | ||
+ | |||
+ | } | ||
+ | $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/>"; | ||
+ | |||
+ | if (count($acceso)!=0){ | ||
+ | echo "<h2>Accesos realizados</h2>"; | ||
+ | |||
+ | for ($i=0;$i<=$indice;$i++){ | ||
+ | echo "Acceso número $i ".(date ("d/m/y \a \l\a\s H:i",$acceso[$i]))."<br/>"; | ||
+ | } | ||
+ | |||
+ | }else | ||
+ | echo "Wellcome to your first access"; | ||
+ | |||
+ | ?> | ||
+ | </body> | ||
+ | </html> | ||
+ | --> |
Revisión de 23:40 19 nov 2014
Qué es una Cookie
Crear una coockie
http://es.php.net/manual/es/function.setcookie.php
setcookie("usuario", $_SERVER['PHP_AUTH_USER'], time()+3600);
Recuperar la cookie
$usuario = $_COOKIE['usuario']; Borrar una cookie
<?php // Ponemos un tiempo de expiración negativo setcookie("user", "", time()-3600); ?>
}}
|