Foros del Web » Programando para Internet » PHP »

Sessiones y datos de formulario

Estas en el tema de Sessiones y datos de formulario en el foro de PHP en Foros del Web. Buenas tardes foreros, mi problema es el siguiente: Tengo un formulario que cuenta con al menos 16 fields (entre text, checkboxes, etc) los cuales el ...
  #1 (permalink)  
Antiguo 18/11/2005, 14:48
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 13 años, 9 meses
Puntos: 11
Sessiones y datos de formulario

Buenas tardes foreros,
mi problema es el siguiente:

Tengo un formulario que cuenta con al menos 16 fields (entre text, checkboxes, etc) los cuales el usuario debe rellenar, en otro archivo tengo el código que verifica los datos enviados , si todos los datos son los esperados continua el proceso y guarda los datos en una BBDD MySQL, pero si no estan bien los datos le presento cuales son los errores y un enlace con un window.history.back() de Javascript para que regrese y haga las correcciones pertinentes. El problema esta que si en el formulario inicio una sesion PHP al momento que hay un error y le presento el boton con window.history.back() todos los datos deben ser introducidos nuevamente desde cero. (algo que no pasa si no hago session_start();),,, que puedo hacer para abrir mi session_start() y aún si es necesario corregir un dato pueda seguir usando la función de Javascript?


De antemano gracias .
__________________
http://dev.wsnetcorp.com
  #2 (permalink)  
Antiguo 21/11/2005, 05:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:30.