BLOQUE 2 PHP: PROGRAMACIÓN ORIENTADO A OBJETOS
¡Construyendo componentes!
PHP Como lenguaje orientado a objetos
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
|
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
|
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).
|
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>
|
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:
- Noticia política.
- Noticia económica.
- 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.
pendiente de solción funcionando |
---|
<?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>
|
|