Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con session_start al refrescar y retroceder la página.

Estas en el tema de Problema con session_start al refrescar y retroceder la página. en el foro de PHP en Foros del Web. Que tal, he estado trabajando en la creación de un blog propio, actualmente me encuentro elaborando el sistema para subir mis entradas, todo iba bien ...
  #1 (permalink)  
Antiguo 31/05/2015, 12:13
 
Fecha de Ingreso: abril-2015
Ubicación: MEXICO
Mensajes: 15
Antigüedad: 9 años
Puntos: 0
Pregunta Problema con session_start al refrescar y retroceder la página.

Que tal, he estado trabajando en la creación de un blog propio, actualmente me encuentro elaborando el sistema para subir mis entradas, todo iba bien hasta que metí la variable de sesión para comprobar si se estaba logeado en la página e identificar al autor, según yo todo iba perfecto hasta que descubrí, que al refrescar la página o retrocederla la información que tenían los campo de mi formulario se perdían. Por haber iniciado la session_start();

Este problema me afecta en lo siguiente:
  • Dentro de mi página newpost.php esta mi formulario donde coloco los campo para generar la entrada, esta página a su vez comprueba que los campos no este vacíos, si se cumple la condiciones manda los datos a la página loadpost.php. En esta página se comprueba una imagen previamente cargada en mi formulario anterior, donde se verifica su formato y peso, además ejecuta y comprueba que la consulta para insertar mis datos se haiga ejecutado correctamente, si no pasa esta condiciones se retrocede a la página de newpost.php por medio de un history.go(-1) de javascript y al retroceder la página se pierden los datos. Cosa que no pasaba antes de usar la session_start();
  • De igual forma al recargar la página se pierden todos los datos de mi formulario, por usar la session_start();

Ya que me falta mucho por aprender, me pregunto ¿si hay alguna forma de evitar la pérdida de datos con el uso de la session_start()?, les agradezco de antemano cualquier comentario o consejo que me puedan proporcionar para solucionar este problema. Saludos
  #2 (permalink)  
Antiguo 31/05/2015, 12:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con session_start al refrescar y retroceder la página.

Lo que dices aquí es una falacia:

Cita:
refrescar la página o retrocederla la información que tenían los campo de mi formulario se perdían. Por haber iniciado la session_start();
Los valores no se pierden sin razón alguna, si no se mantienen en los campos de tu formulario es porque jamás programaste para que sea así.

Es un comportamiento normal en los formularios, así que sin saber exactamente lo que haces no se puede decir nada.

Muestra cómo lo has hecho y veremos que hacer.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 01/06/2015, 11:09
 
Fecha de Ingreso: abril-2015
Ubicación: MEXICO
Mensajes: 15
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema con session_start al refrescar y retroceder la página.

Cita:
Iniciado por pateketrueke Ver Mensaje
Lo que dices aquí es una falacia:



Los valores no se pierden sin razón alguna, si no se mantienen en los campos de tu formulario es porque jamás programaste para que sea así.

Es un comportamiento normal en los formularios, así que sin saber exactamente lo que haces no se puede decir nada.

Muestra cómo lo has hecho y veremos que hacer.
Evidentemente no tenía programado nada para guardar datos y desconocía que fuera un comportamiento normal en los formularios, ya que solo usaba firefox para verificar los cambios, al probar en chrome e internet Explorer, me di cuenta de mi vergonzosa falacia ( nueva palabra aprendida), ya que independientemente si usaba o no la session_start() los datos se perdían por igual.

Ya programe la acción de recargar la página con una alerta, solamente me falta que al enviar mis datos de mi formulario a otra página, donde se ejecutan las consultas, en el dado caso de que ocurra un error me envié de vuelta a la página donde está el formulario con los datos que había introducido. Para esto ¿qué me recodarías hacer? ¿Sería eficiente pasarlos por una URL?
  #4 (permalink)  
Antiguo 01/06/2015, 11:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con session_start al refrescar y retroceder la página.

La sesión existe precisamente para eso, al momento de recibir el $_POST del formulario puedes guardar una copia de los datos.

Código PHP:
Ver original
  1. $_SESSION['tmp_post'] = $_POST;

A partir de ahí, cuando recargues la página del formulario debes tomar los datos de la sesión.

Código PHP:
Ver original
  1. <input name="foo" value="<?php echo isset($_SESSION['tmp_post']['foo']) ? $_SESSION['tmp_post']['foo'] : '' ?>">

Y desde luego que al finalizar dicho proceso debes limpiar la sesión, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 01/06/2015, 15:56
 
Fecha de Ingreso: abril-2015
Ubicación: MEXICO
Mensajes: 15
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema con session_start al refrescar y retroceder la página.

Cita:
Iniciado por pateketrueke Ver Mensaje
La sesión existe precisamente para eso, al momento de recibir el $_POST del formulario puedes guardar una copia de los datos.

Código PHP:
Ver original
  1. $_SESSION['tmp_post'] = $_POST;

A partir de ahí, cuando recargues la página del formulario debes tomar los datos de la sesión.

Código PHP:
Ver original
  1. <input name="foo" value="<?php echo isset($_SESSION['tmp_post']['foo']) ? $_SESSION['tmp_post']['foo'] : '' ?>">

Y desde luego que al finalizar dicho proceso debes limpiar la sesión, etc.
Gracias por las respuestas, con tu ayuda y invertirle un poco de tiempo, ha quedado todo como quería, incluso ya puedo generar borradores de las entradas. Saludos

Etiquetas: refrescar, retroceder, session_start
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 06:43.