Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/11/2005, 05:36
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El efecto se produce por qué el uso "por defecto" de sesiones .. al iniciarlas (session_start()) se le envia al navegador (cliente) unas cabeceras HTTP que indican normalmente que esa página no sea "cacheada".

Esos parámetros de "cachable" o no .. se puede ajustar vía:
session_cache_limiter()
http://tr.php.net/manual/en/function...he-limiter.php

Esto es así y deberías dejar a PHP que funcione así por seguridad. El traspaso de variables que debes hacer ante un error de validación debería ser no por moverte en el historial de ese navegador (con javascript) sino retornando todas las variables que llegaron a tu script PHP de proceso al formulario.

Para eso, puedes aprovechar que ya usas sesiones propagando esos datos en la sesión activa.

Ejemplo

proceso.php
Código PHP:
<?
session_start
();
// tomas tus variables del formulario (supongo que las enviastes aquí por POST?)
$_SESSION['formulario']=$_POST;

// Si tus validaciones no pasan .. redirecciona a tu formulario:
header ("Location: formulario.php");
exit;
?>
Sería altamente recomendable que en tu script de proceso (donde validas) no proboques niguna "salida" (nada de echo "hay un error en tal .. pulsta aquí para ir al formulario ..") .. procesa y redirecciona automáticamente y en -tu- formulario muestra tus mensajes de error/exito bajo alguna variable de control que pases en la misma variable de sesión o en otra para indicar el problema que se originó.

En formulario.php .. tomas tus variables de sesión para dar los valores por defecto a tus items de formulario ..
Código PHP:
<?
session_start
();
if (isset(
$_SESSION['formulario'])){
$formulario=$_SESSION['formulario'];
}
?>
<input type="text" name="variable" value="<? echo $formulario['variable'?>">
Un saludo,

Última edición por Cluster; 21/11/2005 a las 05:51