|
|
Línea 183: |
Línea 183: |
| http://manuel.infenlaces.com/cookies/ | | http://manuel.infenlaces.com/cookies/ |
| *Para el formulario este sencillo css | | *Para el formulario este sencillo css |
− | <source lang=css> | + | <source lang=php> |
| #login fieldset { | | #login fieldset { |
| width: 230px; | | width: 230px; |
Línea 198: |
Línea 198: |
| } | | } |
| </source> | | </source> |
− | <!--
| |
− | ===Posible solución del ejercicio===
| |
− | <?php
| |
− | // Si el usuario aún no se ha autentificado, pedimos las credenciales
| |
− | //Si me he registrado verifico los datos
| |
− | require_once "baseDatos.php";
| |
− | if (isset($_POST['registrar'])) {
| |
− | $usuario = $_POST['nombre'];
| |
− | $pass = $_POST['pass'];
| |
− | $conexion = conectar();
| |
− | if ($conexion != null) { //Se ha conectado ok a la bd
| |
− | date_default_timezone_set('Europe/Madrid');
| |
− | // Ejecutamos la consulta para comprobar si existe
| |
− | // esa combinación de usuario y contraseña
| |
− | $sql = <<<SQL
| |
− | SELECT usuario FROM usuarios
| |
− | where usuario = ?
| |
− | and
| |
− | contrasena =?
| |
− | SQL;
| |
− |
| |
− | $stmt = $conexion->stmt_init();
| |
− | $stmt->prepare($sql);
| |
− |
| |
− | $stmt->bind_param("ss", $usuario, md5($pass));
| |
− | $stmt->execute();
| |
− | $stmt->store_result();
| |
− | //$stmt->bind_result($u);
| |
− | // Si no existe, se vuelven a pedir las credenciales
| |
− | $indice = 0;
| |
− | if ($stmt->num_rows == 0) {
| |
− | $error = "Usuario no reconocido";
| |
− | } else {
| |
− | if (isset($_COOKIE[$usuario])) {
| |
− | //Leemos la cookie y obtenemos el índice
| |
− | $acceso = $_COOKIE[$usuario];
| |
− | $indice = count($acceso);
| |
− | }
| |
− | //Añadimos el nuevo acceso en la cookie correspondiente
| |
− | setcookie($usuario . "[" . ($indice) . "]", time(), time() + 3600);
| |
− | }
| |
− | $stmt->free_result();
| |
− | $conexion->close();
| |
− | }
| |
− | }
| |
− | ?>
| |
− | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
| |
− | http://www.w3.org/TR/html4/loose.dtd">
| |
− | <!-- Desarrollo Web en Entorno Servidor -->
| |
− | <!-- Tema 4 : Desarrollo de aplicaciones web con PHP -->
| |
− | <!-- Ejemplo: Cookies en autentificación HTTP -->
| |
− | <html>
| |
− | <head>
| |
− | <meta http-equiv="content-type" content="text/html; charset=UTF-8">
| |
− | <title>Ejemplo Cookies en autentificación </title>
| |
− | <link href="cookie.css" rel="stylesheet" type="text/css">
| |
− | </head>
| |
− | <body>
| |
− | <!--
| |
− | En este forumario dejamos al usuario que se registre cuando quiera
| |
− | -->
| |
− | <div id="login">
| |
− | <fieldset >
| |
− | <legend>Login</legend>
| |
− | <form action="." method="POST">
| |
− | <label for='nombre' >Nombre:</label>
| |
− | <input type="text" name ="nombre">
| |
− | <label for='pass'>Password: </label>
| |
− | <input type="text" name ="pass">
| |
− | <input type="submit" value="Cambiar Usuario" name="registrar"/>
| |
− | </form>
| |
− | </fieldset>
| |
− | </div>
| |
− |
| |
− | <?php
| |
− | if ($error == null) {
| |
− | echo"<h2>Lista de accesos del usuario conectado actualmente $usuario</h2><hr/>";
| |
− | if (isset($acceso)) {
| |
− | for ($i = 0; $i < $indice; $i++)
| |
− | echo "-Acceso número $i a las " . date("d/m/y \a \l\a\s H:i", $acceso[$i]) . "<br/>";
| |
− | } else
| |
− | echo "Bienvenido. Esta es su primera visita. $nombre<br/>";
| |
− | //ahora recorro todos los usuarios";
| |
− | foreach ($_COOKIE as $user => $accesos) {
| |
− | if ($user != $usuario) {
| |
− | echo "<h2> Usuario $user </h2><br/><hr/>";
| |
− | foreach ($accesos as $numAcceso => $hora) {
| |
− | echo "Acceso número $numAcceso a las " . date("d/m/y \a \l\a\s H:i", $hora) . "<br/>";
| |
− | }
| |
− | }
| |
− | }
| |
− | } else
| |
− | echo "Se ha producido el error $error.<br />";
| |
− | ?>
| |
− | </body>
| |
− | </html>
| |
− | </source>
| |
− | *Bases de datos donde habrá que actualizar las credenciales
| |
− | <source lang =php>
| |
− | <?php
| |
− |
| |
− | /*
| |
− | * To change this license header, choose License Headers in Project Properties.
| |
− | * To change this template file, choose Tools | Templates
| |
− | * and open the template in the editor.
| |
− | */
| |
− |
| |
− | function conectar(){
| |
− | $usuarioBD ="manuel_manuel";
| |
− | $pass ="xv2e6w";
| |
− | $host = "localhost";
| |
− | $bd = "manuel_dwes";
| |
− | $conexion = new mysqli($host,$usuarioBD,$pass,$bd);
| |
− | //Hacemos una consulta a ver si el usuario existe
| |
− | if ($conexion->connect_errno){
| |
− | echo ("Se ha producido un error conectado a la base de datos ".$conexion->connect_error);
| |
− | return null;
| |
− | }
| |
− | return $conexion;
| |
− | }
| |
− | ?>
| |
− | </source>
| |
− | -->
| |
− |
| |
− |
| |
| }} | | }} |
| | | |