Foros del Web » Programando para Internet » PHP »

no perder el contenidos de variables

Estas en el tema de no perder el contenidos de variables en el foro de PHP en Foros del Web. el problema es el siguiente: tengo formulario con varios campos de datos, cuando se presiona el boton enviar los datos pasan por el metodo post ...
  #1 (permalink)  
Antiguo 27/02/2004, 05:58
 
Fecha de Ingreso: febrero-2004
Mensajes: 15
Antigüedad: 20 años, 2 meses
Puntos: 0
no perder el contenidos de variables

el problema es el siguiente: tengo formulario con varios campos de datos, cuando se presiona el boton enviar los datos pasan por el metodo post hacia otro scripts, que valida los datos y si encuentra algun error, muestra un mensaje y le pide retroceder para corregir ese error, cuando retrocede se muestra el formulario con los datos previamente ingresados, hasta aqui todo bien, el problema surge cuando le agrego al scripts del formulario un session-start(), porque cuando vuelve al formulario de un error, me blaquea los campos.
la pregunta es , porque session_start() me afecta los campos del formulario?
  #2 (permalink)  
Antiguo 27/02/2004, 06:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
"te blanquea" tus campos cuando usas session_start() por qué por defecto se suelen usar cabeceras de "no caché" .. Estas cabeceras las manda PHP al usar sesiones y las define la directiva: session.cache_limiter (php.ini) ..

El hecho que "por defecto" se usen así las páginas/scripts que usan sesiones se "supone" que es para que no quede rastro de esas variables que envias entre tus formularios ni de la página en sí a ser posible en caché's de navegadores y eviten ese efecto que si bien para ti es útil .. si usases sesiones por qué estás restringiendo el uso de cierta página que contiene un formulario .. si yo abandono tu página y vuelvo hacia atras con el navegador (por su historial) es probable que entrase a tu zona restringida o enviase otra vez esos datos (y tal vez adulterados).

La forma de solventar ese problema .. podría ser (a la rápida) el quitar las direcitvas de no_caché a PHP .. Pero esto no es seguro. Así que se suele resolver guardandote las variables de tu formularios (todas) y las propagas en la misma sesión hacia tu formulario si hay que volver al mismo ..

Algo así:

En tu script/sección de proceso . capturas todo el array $_POST que contiene tus varibles del formulario y lo guardas en una variable de sesión:

Código PHP:
<?
session_start
();
$_SESSION['misvars']=$_POST;

//validas y procesas el formulario como ya lo haces ...
En tu formulario .. verificas la existencia de esa variable de sesión para asignarla a tu variable que usaras para rellenar los campos value= de tus tag <input ...>

Ejemplo

Código PHP:
<?
session_start
();
$vars=$_SESSION['misvars'];
y donde lo requieras .. pre-defines un valor para el campo en concreto .. ejemplo

Código PHP:
<input type="text" name="nose" value="<? echo $vars['nose'?>">
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 30/12/2005 a las 13:51
  #3 (permalink)  
Antiguo 27/02/2004, 08:47
 
Fecha de Ingreso: febrero-2004
Mensajes: 15
Antigüedad: 20 años, 2 meses
Puntos: 0
muchas gracias cluster, me queda todo claro con tu explicación, y con respecto a tu propuesta de solucion, te cuento que es lo que estaba intentando realizar, pero, ahora estoiy intetando otra, que colocar en la pagina del mensaje un boton donde el usuario haga click para volver y de esa manera puedo devolver un valor para chequear en la pagina anterior. Veremos que pasa. Gracias
  #4 (permalink)  
Antiguo 23/03/2005, 12:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 12
Antigüedad: 19 años, 1 mes
Puntos: 0
buenos dias, bueno este post era lo que exactamente andaba buscando, pero tengo un problema o duda resulta que tengo mi pagina A.php el cual es un formulario en donde meto los datos, luego se hace un auto-post a la misma pagina donde se verifican que los datos esten correctamente llenos si se equivocaron en alguno pueden hacer Back en el navegador y corregirlos y si estan bien pasa al formulario de grabacion y de donde pueden mandar a un formulario de impresion, bueno ahora enumero mis problemas,
1.-primero en la Pagina A.php despues de ingresar los datos y mandar nuevamente a la misma pagina a.php cuando se hace un back en el navegador se borra todo el contenido de las cajas de texto esto como podria solucionar ya que como hago post en la misma pagina no utilizo la variable $_POST para recuperar y recupero directamente con "echo $nombrevariable"
2,. cuando pasa a la pagina grabar.php recien recupero con $_post las variables, hice lo que Cluster indico y funciona perfectamente en los casos de que solo necesite modificar algunas pequeñas cosas y grabar el formulario como registro nuevo, pero como puedo hacer cuando quiero ingresar un nuevo formulario con nuevos datos? es deicr que me aparezca un formulario vacio...no se si me explique bien epro tengo esos dos problemillas y agradeceria mucho vuestra ayuda
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 15:45.