> Manuales > Sistema de envío de postales en PHP

Comentamos la primera parte del script donde se gestiona la sesión y las cookies

Ya hemos visto que en el script formulario.php introducíamos en el atributo value de las etiquetas input del formulario unas pequeñas incrustaciones de código PHP que nos permitían rellenar el formulario automáticamente. Lo que no vimos es cómo esas variables eran definidas.

El proceso de creación de esas variables tiene lugar en el script enviopostal.php que es donde recibimos los datos del formulario.

Para hacer partícipe al script de las variables registradas en la sesión es necesario antes de nada iniciar la sesión:

session_start();

Seguidamente, puesto que este script puede llamarse a sí mismo y no necesariamente ejecutarse desde la página del formulario, debemos crear la condición de que la creación de las variables_formulario y de las cookies tenga lugar en el caso de que provengamos del script formulario.php o, lo que es lo mismo, que el script no se esté ejecutando desde él mismo (un enlace que apunta a la misma página). Esta condición ha sido expresada en términos de variables del sistema tan sólo para presentar una vez más su utilidad a la vez que mostramos una función muy útil para la gestión de cadenas:

if (!ereg($PHP_SELF,$HTTP_REFERER))

Esta condición lo que expresa es: "Si en la variable $HTTP_REFERER (URL de procedencia) NO está incluida la variable $PHP_SELF (camino virtual de ejecución del script) llevamos a cabo lo siguiente..."

La función ereg sirve para detectar si un determinado texto ha sido encontrado en el interior de otro. Aquí los textos serían las dos variables de sistema.

El paso siguiente, si la condición resulta verdadera, es crear las variables de sesión y las cookies algo relativamente trivial salvo para el caso del campo checkbox avisar donde, si queremos que el checkbox sea validado al volver al formulario, hemos de darle el valor "checked".

Os recomendamos reflexionar un poco sobre la función que desempeña la opción else en este condicional. Para ello hay que tener en cuenta que la variable $avisar no será inicializada si la caja no es validada y que el visitante puede validarla en una primera visita al formulario y anular la validación en la segunda. Si este es al caso, la variable $avisar no habrá sido inicializada y variables_formulario[4] continua almacenando el valor checked por lo que al volver por tercera vez al formulario encontraríamos la caja validada a no ser que incluyamos dicha instrucción else en la que vaciamos la variable de sesión.

if (isset($avisar))
   $variables_formulario[4]="checked";
else
   $variables_formulario[4]="";

El objeto de esta reflexión no es más que familiarizaros un poco más sobre el concepto de sesión con un ejercicio mental de este tipo.



Ir a la aplicación

Rubén Alvarez

Rubén es doctor en química y programador aficionado con experiencia en PHP.

Manual