Diferencia entre revisiones de «Usuario:ManuelRomero/NewPHP/B2T8/BasesDatos/ejercicios»
De WikiEducator
(Página creada con «{{:Usuario:ManuelRomero/dwes/B2T8/BasesDatos/nav}}») |
|||
Línea 1: | Línea 1: | ||
{{:Usuario:ManuelRomero/dwes/B2T8/BasesDatos/nav}} | {{:Usuario:ManuelRomero/dwes/B2T8/BasesDatos/nav}} | ||
+ | |||
+ | |||
+ | |||
+ | {{Actividad| | ||
+ | *Añade en la base de datos usuarios varios usuarios diferentes | ||
+ | *Crea un formulario para que el usuario sepuede registrar | ||
+ | <source lang=html5> | ||
+ | <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> | ||
+ | </source> | ||
+ | *Visualiza los accesos del usuario acutual así como los accesos del resto de usuarios | ||
+ | *Aquí podemos ver el ejemplo | ||
+ | http://www.manuel.infenlaces.com/cookies/ | ||
+ | *Para el formulario este sencillo css | ||
+ | <source lang=css> | ||
+ | #login fieldset { | ||
+ | width: 230px; | ||
+ | padding:10px; | ||
+ | border:1px solid #ccc; | ||
+ | background-color: #eee; | ||
+ | } | ||
+ | |||
+ | #login legend { | ||
+ | font-family : Arial, sans-serif; | ||
+ | font-size: 1.3em; | ||
+ | font-weight:bold; | ||
+ | color:#333; | ||
+ | } | ||
+ | </source> | ||
+ | <!-- | ||
+ | ===Posible solución del ejercicio=== | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | // Si el usuario aún no se ha autentificado, pedimos las credenciales | ||
+ | //Si me he registrado verifico los datos | ||
+ | require_once "baseDatos.php"; | ||
+ | $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> | ||
+ | <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> | ||
+ | <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> | ||
+ | --> | ||
+ | }} |
Revisión de 02:23 23 dic 2016
<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>
http://www.manuel.infenlaces.com/cookies/
#login fieldset { width: 230px; padding:10px; border:1px solid #ccc; background-color: #eee; } #login legend { font-family : Arial, sans-serif; font-size: 1.3em; font-weight:bold; color:#333; }
|