Diferencia entre revisiones de «Usuario:ManuelRomero/php/ejercicios/Soluciones»
De WikiEducator
< Usuario:ManuelRomero | php | ejercicios
| Línea 1: | Línea 1: | ||
{{:Usuario:ManuelRomero/PHP/Ejercicios/nav}} | {{:Usuario:ManuelRomero/PHP/Ejercicios/nav}} | ||
| − | + | ===Solución ejercicio 1=== | |
La idea es la siguiente | La idea es la siguiente | ||
*Cada vez que yo cargo una página php, el servido la ejecuta como si fuera la primera vez que la solicito. | *Cada vez que yo cargo una página php, el servido la ejecuta como si fuera la primera vez que la solicito. | ||
| Línea 26: | Línea 26: | ||
;Código | ;Código | ||
<source lang=php> | <source lang=php> | ||
| + | <!DOCTYPE html> | ||
| + | <html> | ||
| + | <head> | ||
| + | <meta charset="ISO-8859-1"> | ||
| + | <title></title> | ||
| + | </head> | ||
| + | <body> | ||
| + | <?php | ||
| + | //Esta parte del código solo quiero que se ejecute | ||
| + | //Si se ha cargado el formulario | ||
| + | if ( isset($_POST['enviar'] ) ) { | ||
| + | $accesos = $_POST[ 'accesos' ]; | ||
| + | }else | ||
| + | $accesos=0; | ||
| + | //Visualizo los accesos si los hay | ||
| + | echo "Accesos : $accesos"; | ||
| + | $accesos ++; | ||
| + | |||
| + | ?> | ||
| + | <form action="." method=POST> | ||
| + | <input type="submit" value="Acceder al sitio web" name="enviar" /> | ||
| + | <input type="hidden" value="<?php echo $accesos ?>" name="accesos" /> | ||
| + | </form> | ||
| + | </body> | ||
| + | </html> | ||
</source> | </source> | ||
| + | |||
| + | ===Solución ejercicio 2=== | ||
| + | *Este ejercicio es un parecido al anterior, pero un poco más complicado | ||
| + | |||
| + | ===Solución ejercicio 3=== | ||
Revisión de 21:18 3 nov 2015
Solución ejercicio 1
La idea es la siguiente
- Cada vez que yo cargo una página php, el servido la ejecuta como si fuera la primera vez que la solicito.
- No hay memoria entre una llamada y otra.
- Las solicitudes al servidor son solicitudes usando el protocolo http.
- Este hecho deja patente y clara la idea de que http es un protocolo sin estado.
- En el ejemplo vemos como cada acceso es como si fuera el primero. Cada vez que se ejecuta el script en el servidor es como se se ejecuta la primera vez
- El siguiente código no tiene sentido
.... $acceso ++ ... echo "Actualmente llevamos $acceso accesos";
- Cada vez que se ejecute $accesos valdrá 0.
SOLUCION
- Debemos mantener un histórico de cada acceso
- El servidor lee la información que le envía el cliente de los input de su formulario
- Debemos ir poniendo en un campo oculto esa información y que el servidor
- Lea ese valor (los accesos que lleva, al principo valdrá 0)
- La incremente en una unidad
- La vuelva a enviar al cliente, y así el cliente la próxima vez se la envía al servidor (Un efecto de pelota contra la pared)
- Código
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title></title>
</head>
<body>
<?php
//Esta parte del código solo quiero que se ejecute
//Si se ha cargado el formulario
if ( isset($_POST['enviar'] ) ) {
$accesos = $_POST[ 'accesos' ];
}else
$accesos=0;
//Visualizo los accesos si los hay
echo "Accesos : $accesos";
$accesos ++;
?>
<form action="." method=POST>
<input type="submit" value="Acceder al sitio web" name="enviar" />
<input type="hidden" value="<?php echo $accesos ?>" name="accesos" />
</form>
</body>
</html>Solución ejercicio 2
- Este ejercicio es un parecido al anterior, pero un poco más complicado


