Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/ProgramacionWeb/INAEM2021/Cookies/ejercicios»

De WikiEducator
Saltar a: navegación, buscar
 
(3 revisiones intermedias por el mismo usuario no mostrado)
Línea 45: Línea 45:
 
*Además visualizará todos los accesos de ese usuario  indicando las horas a las que lo hizo y un listado con el resto de usuarios que se conectando indicando el total de accesos de cada usuario (no la hora).
 
*Además visualizará todos los accesos de ese usuario  indicando las horas a las que lo hizo y un listado con el resto de usuarios que se conectando indicando el total de accesos de cada usuario (no la hora).
 
}}
 
}}
 +
<!--
 +
{{plegable|hide|Posible solución|
 +
<source lang=php>
 +
<?php
 +
$usuarios = unserialize($_COOKIE['usuarios']) ?? [];
 +
$opcion = $_POST['submit']??null;
 +
 +
switch ($opcion) {
 +
    case "Acceder":
 +
        $nombre = $_POST['nombre'];
 +
        $tiempo = time();
 +
        $usuarios[$nombre][] = $tiempo;
 +
        $tiempo_cookie = time() + 3600;
 +
        break;
 +
    case "Borrar":
 +
        $tiempo_cookie = time() - 100;
 +
        $usuarios=[];
 +
}
 +
 +
 +
setcookie('usuarios', serialize($usuarios), $tiempo_cookie);
 +
 +
?>
 +
<!doctype html>
 +
<html lang="en">
 +
<head>
 +
    <meta charset="UTF-8">
 +
    <meta name="viewport"
 +
          content="width=device-width">
 +
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 +
    <title>Document</title>
 +
</head>
 +
<body>
 +
<form action="index.php" method="post">
 +
    Nombre <input type="text" name="nombre" id=""><br/>
 +
    <input type="submit" value="Acceder" name="submit">
 +
    <input type="submit" value="Borrar" name="submit">
 +
</form>
 +
 +
<fieldset>
 +
    <legend>Listado de accesos</legend>
 +
    <?php
 +
    foreach ($usuarios as $usuario => $accesos) {
 +
        echo "<h1>Accesos de $usuario</h1>";
 +
        foreach ($accesos as $acceso => $tiempo)
 +
            echo "<h3>\t\t\tAcceso $acceso " . date("D-m-Y H:i:s", $tiempo) . "</h3>";
 +
        echo "<hr />";
 +
 +
    }
 +
 +
    ?>
 +
</fieldset>
 +
 +
</body>
 +
</html>
 +
 +
</source>
 +
 +
}}
 +
-->
 
<br />
 
<br />
  
Línea 57: Línea 117:
 
*Almacenar en una cookie el tipo de titutar que desea ver el cliente.
 
*Almacenar en una cookie el tipo de titutar que desea ver el cliente.
 
*La primera vez que visita el sitio deben aparecer los tres titulares.
 
*La primera vez que visita el sitio deben aparecer los tres titulares.
 +
<!--
 +
{{plegable|hide|pendiente de solción funcionando|
 +
<source lang=php>
 +
<?php
 +
 +
$preferencia = $_COOKIE['preferencia']??"todas";
 +
 +
$opcion = $_POST['submit']??null;
 +
switch ($opcion){
 +
    case "Establecer":
 +
        $opcion = $_POST['preferencia'];
 +
        setcookie('preferencia', $preferencia, time()+60);
 +
 +
        break;
 +
    case "Eliminar preferencias":
 +
        setcookie('preferencia', $preferencia, time()-60);
 +
        brea;
 +
}
 +
 +
?>
 +
<!doctype html>
 +
<html lang="en">
 +
<head>
 +
    <meta charset="UTF-8">
 +
    <meta name="viewport"
 +
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 +
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 +
    <title>Document</title>
 +
</head>
 +
<body>
 +
 +
<fieldset>
 +
    <legend>Seleccion sección preferente</legend>
 +
    <form action="index.php" method="POST">
 +
        <input type="radio" name="seccion" value="deportes" id="">Deportes<br />
 +
        <input type="radio" name="seccion" value="economia" id="">Economía<br />
 +
        <input type="radio" name="seccion" value="ciencia" id="">Ciencia<br />
 +
        <input type="submit" value="Establecer" name="submit">
 +
        <input type="submit" value="Eliminar preferencias" name="submit">
 +
 +
 +
    </form>
 +
 +
</fieldset>
 +
 +
<h1>Noticias de un periódico</h1>
 +
 +
<?php if ($preferencia=="deportes" OR $preferencia=="todas"):?>
 +
 +
<div>
 +
    <h2>Noticias de Deportes</h2>
 +
    <pre>
 +
    'Pelo Pincho' es un monstruo con cara de niño.
 +
 +
    Alienígena insaciable. Tadej Pogacar, prodigio paranormal
 +
    , asombra por su versatilidad. El esloveno es capaz de
 +
    imponerse en la nieve de la Tirreno-Adriático, en el
 +
    'sterrato' de la Strade Bianche o en la arena del
 +
    desierto del Tour de Emiratos. Escenarios diversos y
 +
    estrategias plurales, con ataques a falta de 40
 +
    kilómetros de la meta, con acelerones en rampa a
 +
    200 metros de la llegada o aplastantes ejercicios
 +
    cronometrados. Nadie es más completo.
 +
    cronometrados. Nadie es más completo.
 +
        </pre>
 +
</div>
 +
<?php endif;
 +
if ($preferencia=="economia" OR $preferencia=="todas"):?>
 +
 +
<div>
 +
    <h2>Noticias de Econonía</h2>
 +
    <pre>
 +
        Un BCE peleando contra las subidas de
 +
        precios aboca a España a acordar un pacto
 +
        de rentas y un equilibrio entre la prudencia
 +
        fiscal y el apoyo a
 +
        los vulnerables en medio de la guerra de Ucrania
 +
    </pre>
 +
</div>
 +
<?php endif;
 +
if ($preferencia=="ciencia" OR $preferencia=="todas"):?>
 +
<div>
 +
 +
    <h2>Noticias de Científicas</h2>
 +
 +
 +
<pre>
 +
    Los seres humanos envejecen constantemente,
 +
    pero cada órgano lo hace a su propio ritmo, según u
 +
    n estudio de un equipo científico liderado por expertos
 +
    chinos publicado en la revista Cell Reports del que se
 +
    hace eco hoy la agencia oficial de noticias Xinhua.
 +
</pre>
 +
</div>
 +
<?php endif;?>
 +
</body>
 +
</html>
 +
 +
</source>
 +
}}
 
}}
 
}}
 +
-->
 
<br />
 
<br />

Última revisión de 17:50 17 feb 2023



Ejercicio 0 : Establecer idioma



Icon activity.jpg
Establecer idioma
  • Establecemos un idioma y se adapta un saludo' a ese idioma
  • El idioma se quedará guardado en una cooki, por lo que futuras conexiones de ese servidor se realizarán en el último idioma seleccionado
  • Los idiomas serán frances, inglés y español
  • Solo se adaptará el saludo, tomando los siguientes valores:
switch ($idioma){
    case "es":
        $saludo="Hola. bienvenido a este sitio web";
        break;
    case "fr":
        $saludo="Bonjour. bienvenue sur ce site";
        break;
    case "en":
        $saludo="Hello. welcome to this website";
        break;
}
 Podré borrar la cookie, eliminándose la misma en el cliente y  estableciendo la página en el idioma por defecto




Ejercicio 1 : Control de accesos



Icon activity.jpg
Controlando accesos
  • Tenemos una página con formulario para acceder.
  • El usuario puede intentar acceder hasta tres veces seguidas a un sitio web de forma incorrecta
  • Para acceder ha de insertar igual password que usuario (mismo valor)
  • Para controlar los acceso anotaremos en cookies los intentos que lleva (Claramente es un ejercicio forzado, no podría ser en un caso real)
  • Si lleva 3 accesos incorrectos, mostraremos un mensaje de que el acceso ha sido bloqueado y dejaremos un botón para reiniciar los intentos.
  • Una vez que acceda de forma correcta, volverá a tener hasta 3 intentos para la próxima vez que acceda
  • Se mantiene el bloqueo durante 1 minuto.
  • Durante el tiempo de bloqueo si intento acceder me dice que estoy bloqueado y el tiempo que me quda de bloque en segundos




Ejercicio 2 : Monitorizar accesos por usuario



Icon activity.jpg
Horas de acceso por usuario
  • Realiza una aplicación con un formulario con un único input que sea nombre
  • Cada vez que introduzca un nombre la aplicación almacenará con una cookie la hora a la que ese usuario accedió a la aplicacioń y su nombre
  • Además visualizará todos los accesos de ese usuario indicando las horas a las que lo hizo y un listado con el resto de usuarios que se conectando indicando el total de accesos de cada usuario (no la hora).




Ejercicio 3 : Secciones de un periódico


{{MRM_Actividad|Title = Secciones de un periódico|

  • Crea una pagina que simule ser la de un periódico. La misma debe permitir configurar que tipo de titular deseamos que aparezca al visitarla, pudiendo ser:
  1. Noticia política.
  2. Noticia económica.
  3. Noticia deportiva.
  • Mediante tres objetos de tipo radio, permitir seleccionar que titular debe mostrar el periódico.
  • Almacenar en una cookie el tipo de titutar que desea ver el cliente.
  • La primera vez que visita el sitio deben aparecer los tres titulares.