|
|
Línea 11: |
Línea 11: |
| *Con lo que hemos visto hasta ahora (sin usar cookies, ni sesiones, ni ficheros) | | *Con lo que hemos visto hasta ahora (sin usar cookies, ni sesiones, ni ficheros) |
| Haz un programa que cuente cuantos accesos hacemos a una página en una misma conexión}} | | Haz un programa que cuente cuantos accesos hacemos a una página en una misma conexión}} |
− | | + | <font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/formularios/Ejercicios/Ejercicio1 | Solución]]</font> |
− | *Usa campos ocultos para pasar información
| + | <hr /> |
− | ====Planteando una posible solución ==== | + | |
− | 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
| + | |
− | [[Archivo:EjerccioAcceso1.png]]
| + | |
− | *El siguiente código no tiene sentido
| + | |
− | <source lang=php>
| + | |
− | ....
| + | |
− | $acceso ++
| + | |
− | ...
| + | |
− | echo "Actualmente llevamos $acceso accesos";
| + | |
− | </source>
| + | |
− | *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)
| + | |
− | [[Archivo:EjerccioAcceso2.png]] | + | |
− | ====Un posible código====
| + | |
− | ;Código
| + | |
− | <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> | + | |