Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/ProgramacionWeb/INAEM2021/Cookies/ejercicios»
De WikiEducator
Línea 117: | 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 /> |
Revisión de 02:31 15 mar 2022
Ejercicio 0 : Establecer idioma
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
|
Ejercicio 2 : Monitorizar accesos por usuario
|
Posible solución |
---|
<?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> |
Ejercicio 3 : Secciones de un periódico
|