Foros del Web » Programando para Internet » PHP »

Recargar página al hacer click en el boton atras del navegador

Estas en el tema de Recargar página al hacer click en el boton atras del navegador en el foro de PHP en Foros del Web. Resulta que estoy haciendo una página web con php, tengo autores.php que tiene un formulario, el cual obtiene los datos de autores de libros. Al ...
  #1 (permalink)  
Antiguo 03/11/2010, 08:15
 
Fecha de Ingreso: octubre-2009
Mensajes: 20
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Recargar página al hacer click en el boton atras del navegador

Resulta que estoy haciendo una página web con php, tengo autores.php que tiene un formulario, el cual obtiene los datos de autores de libros. Al hacer click en el botón guardar, este ejecuta una acción a través de otro guarda_autores.php utilizando el método post. Pero resulta que al hacer click en el botón de atrás del navegador, regreso a autores.php y los datos que ingresé al formulario siguen alli, quisiera que se borraran recargando la página o algo asi, he investigado todo el dia en internet, y no encuentro a nadie que diga de manera clara como lo hizo. Solo he visto muchas posibles soluciones utilizando sesiones y variables de sesión, redireccionamiento de header, body unload, configurar la sección meta para que no guarde caché, hacer unload a las variables post, en fin, todo un enredijo. Si les sirve, les muestro el código fuente que estoy utilizando.



Código:
<html>
    <head>
        <title> Autores </title>
        <script type="text/javascript" src="../JavaScript/botones_autor.js"></script>
    </head>
    <body>

<form id="form_autores" name="form_autores" method="post" action="">
  <p>
    <label for="ID_autor">Codigo de autor</label>
    <input type="text" name="ID_autor" id="ID_autor" />
  </p>
  <p>
    <label for="Nombre">Nombre y Apellido</label>
    <input type="text" name="Nombre_y_apellido" id="Nombre_y_apellido" />
  </p>
  <p>
    <label for="Pais_de_origen">Pais de origen</label>
    <input type="text" name="Pais_de_origen" id="Pais_de_origen" />
  </p>
  <p>&nbsp;</p>
  <p>
    <label for="Guardar"></label>
  </p>
</form>
<input type="submit" name="Guardar" id="Guardar" value="Guardar" />
<input type="submit" name="ver_autor" id="ver_autor" value="Ver Autores" />
</body>
</html>





Ahora el código del php

<?php
session_start();
if (empty($_POST['Nombre_y_apellido']) || empty($_POST['Pais_de_origen']) 
        || empty($_POST['ID_autor']))
{

echo "<script>alert('Todos los campos son obligatorios')</script>";
}
else
{
$codigo_autor = $_POST[ID_autor];
$Nombre_y_apellido = $_POST[Nombre_y_apellido];
$Pais_de_origen = $_POST[Pais_de_origen];
$_SESSION["codigo_autor"];
$_SESSION["Nombre_y_apellido"];
$_SESSION["Pais_de_origen"];

$db = mysql_connect('localhost','root','contraseña');
if (mysqli_connect_errno())

    {
echo "<h3>Error, no se pudo conectar con la base de datos intente más tarde</h3>";
exit;
}

mysql_select_db("libreria",$db);
$consulta = "INSERT INTO autor VALUES('$codigo_autor','$Nombre_y_apellido','$Pais_de_origen')";
mysql_query($consulta,$db);
$my_error = mysql_error($db);

if(!empty($my_error))
        {
        echo "Ha habido un error al insertar los valores. $my_error";
    }
    else
    {
        echo "Se ha a&ntilde;adido el autor correctamente";
        mysql_close();
        UNSET($_SESSION["codigo_autor"]);
        UNSET($_SESSION["Nombre_y_apellido"]);
        UNSET($_SESSION["Pais_de_origen"]);
        session_destroy();
        header('location: ../HTML/autoreshtml.php');
}
}

?>
P.D. Como tengo el formulario con 2 botones, le asigno a cada uno su action con el evento onclick con un javascript, por eso es que el formulario en si, no tiene un action definido, sino acion = "". Ah y tambien, no se tengo algun error en el uso de sesiones.

De antemano, les agradezco mucho
  #2 (permalink)  
Antiguo 03/11/2010, 08:28
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Recargar página al hacer click en el boton atras del navegador

Para que no sigan... o no ejecute dos veces.... tendrias dos opciones a la vista....
1.... es que al acabar de guardar redirecciones con header a otra web y listo.
2.... es que al acabar de guardar crees una variable en la session como un estado... y si hacen refresh o atras... podras validar si existe la variable en la session...

Nota. Esos input de tipo submit....mmmm.... no deberian estar dentro del formulario ^^

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 03/11/2010, 08:51
 
Fecha de Ingreso: octubre-2009
Mensajes: 20
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Recargar página al hacer click en el boton atras del navegador

Cita:
Iniciado por masterojitos Ver Mensaje
Para que no sigan... o no ejecute dos veces.... tendrias dos opciones a la vista....
1.... es que al acabar de guardar redirecciones con header a otra web y listo.
2.... es que al acabar de guardar crees una variable en la session como un estado... y si hacen refresh o atras... podras validar si existe la variable en la session...

Nota. Esos input de tipo submit....mmmm.... no deberian estar dentro del formulario ^^

Suerte
Tienes razon, si deberian de estar dentro del formulario, lo que sucede que cuando los tenia dentro del formulario, hacia click en el botón de guardar, con los campos vacios, y me daba el error de que los campos no deberian de estar vacios (eso lo hice con javascript), luego al hacer click en "ver autores" me mostraba la página con mis autores, hasta ahi todo bien, si yo regresaba con el boton del navegador, y hacia de nuevo click en "guardar" siempre con los campos vacios, me volvia a dar el error de que los campos estaban vacios, pero el gran problema era que luego de eso, automaticamente "se hacia click" en el botón de "ver autores" y me mostraba la página de los autores.

Entonces lo solucioné sacando los botones del formulario, posiblemente el navegador guardaba en su cache o algo asi, que ya hacia hecho un click o una accion en el formulario, y por eso automaticamente me abria la pagina donde podia ver los autores sin necesidad de que yo le hiciera click.

Sera que hay ahi un problema, porque recuerdo que asi, si se borraba el contenido de mi formulario, pero se daba ese error de redirección involuntario. Hay alguna solución sencilla a esto?
  #4 (permalink)  
Antiguo 03/11/2010, 09:00
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Recargar página al hacer click en el boton atras del navegador

Bueno insisto....

Prueba con una de estas dos opciones rapidas que te doy:
1.... es que al acabar de guardar redirecciones con header a otra web y listo.
2.... es que al acabar de guardar crees una variable en la session como un estado... y si hacen refresh o atras... podras validar si existe la variable en la session...

Y para terminar..... como envia el formulario si los input estan fuera de el ¿?¿?
En teoria, los submit deberian estar dentro del formulario ^^

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #5 (permalink)  
Antiguo 03/11/2010, 09:02
 
Fecha de Ingreso: octubre-2009
Mensajes: 20
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Recargar página al hacer click en el boton atras del navegador

Cita:
Iniciado por masterojitos Ver Mensaje
Bueno insisto....

Prueba con una de estas dos opciones rapidas que te doy:
1.... es que al acabar de guardar redirecciones con header a otra web y listo.
2.... es que al acabar de guardar crees una variable en la session como un estado... y si hacen refresh o atras... podras validar si existe la variable en la session...

Y para terminar..... como envia el formulario si los input estan fuera de el ¿?¿?
En teoria, los submit deberian estar dentro del formulario ^^

Suerte
Ok, probaré esas 2 ideas que me dist. Y los input envian con un script con el evento onclick, cada uno tiene su diferente accion, cada una de ellas es un archivo.php que guarda en la base de datos.

Probare y te dire como me fue
  #6 (permalink)  
Antiguo 03/11/2010, 09:14
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Recargar página al hacer click en el boton atras del navegador

En todo caso ponlos dentro del formulario como a un inicio pero cambialos de tipo submit a tipo button.

Espero haber como te va ^^
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #7 (permalink)  
Antiguo 03/11/2010, 09:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 20
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Recargar página al hacer click en el boton atras del navegador

Cita:
Iniciado por masterojitos Ver Mensaje
En todo caso ponlos dentro del formulario como a un inicio pero cambialos de tipo submit a tipo button.

Espero haber como te va ^^
Con lo de poner los botones a tipo button, funcionó de 10. Ahora con lo de redireccionar me sale el siguiente error

Puse este código en el php que me guarda los datos
header('location: ../HTML/index.php');


Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\Proyecto_Final\PHP\autores.php:37) in C:\xampp\htdocs\Proyecto_Final\PHP\autores.php on line 43

Sera q tengo q agregar algo en la seccion <header> </header> del php que guarda los datos?
  #8 (permalink)  
Antiguo 03/11/2010, 09:44
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Recargar página al hacer click en el boton atras del navegador

Por casualidad..... imprimes algun html en ese archivo ???

Si usas esto:
header('location: ../HTML/index.php');
No puede haber antes nada que se muestre en la web....

Cita:
al acabar de guardar redirecciones con header a otra web y listo
Por eso te dije que si llamas a ese archivo solo para guardar los datos, podrias hacer uso del header para redireccionar.... "pero solo grabar y redireccionar sin mostrar nada".

Espero tu comentario ^^
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #9 (permalink)  
Antiguo 03/11/2010, 09:58
 
Fecha de Ingreso: octubre-2009
Mensajes: 20
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Recargar página al hacer click en el boton atras del navegador

Cita:
Iniciado por masterojitos Ver Mensaje
Por casualidad..... imprimes algun html en ese archivo ???

Si usas esto:
header('location: ../HTML/index.php');
No puede haber antes nada que se muestre en la web....


Por eso te dije que si llamas a ese archivo solo para guardar los datos, podrias hacer uso del header para redireccionar.... "pero solo grabar y redireccionar sin mostrar nada".

Espero tu comentario ^^
Tenias razon, era porque yo estaba mostrando esto

mysql_close();
echo "Se ha a&ntilde;adido el autor correctamente";
session_start();
UNSET($_SESSION["codigo_autor"]);
UNSET($_SESSION["Nombre_y_apellido"]);
UNSET($_SESSION["Pais_de_origen"]);
session_destroy();
header('location: ../HTML/index.php');

estaba mostrando ese echo, y ahora que lo quité, anduvo de 10. Mil mil gracias

Otra pregunta, y si yo necesitara enviarle un mensaje al usuario de que se ha agregado correctamente, tendria que hacerlo desde la misma página a la que redirecciono verdad? o se puede desde la misma?
  #10 (permalink)  
Antiguo 03/11/2010, 11:09
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Recargar página al hacer click en el boton atras del navegador

Podrias hacer asi:
header('location: ../HTML/index.php?save');
Y en el index.php validas si existe el parametro "save", muestras el mensaje.
Algo asi:
Código PHP:
.....
if(isset(
$_GET['save'])) echo "Se ha a&ntilde;adido el autor correctamente";
..... 
Nota. hay varias formas de hacer ello... quizas en vez de echo podrias mostrar una alerta con css..... ya queda en tu criterio.

Un gusto ayudarte.....
El conocimiento no sirve si no se transfiere ^^

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #11 (permalink)  
Antiguo 04/11/2010, 01:01
 
Fecha de Ingreso: octubre-2009
Mensajes: 20
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Recargar página al hacer click en el boton atras del navegador

Cita:
Iniciado por masterojitos Ver Mensaje
Podrias hacer asi:
header('location: ../HTML/index.php?save');
Y en el index.php validas si existe el parametro "save", muestras el mensaje.
Algo asi:
Código PHP:
.....
if(isset(
$_GET['save'])) echo "Se ha a&ntilde;adido el autor correctamente";
..... 
Nota. hay varias formas de hacer ello... quizas en vez de echo podrias mostrar una alerta con css..... ya queda en tu criterio.

Un gusto ayudarte.....
El conocimiento no sirve si no se transfiere ^^

Suerte
Excelente, mil mil gracias, ojalá hubieran muchas personas como tu, fácil, sencillo y la solución a lo que es. Te debo una. Si que eres un master. Saludos desde Guatemala. Dios te bendiga.
  #12 (permalink)  
Antiguo 04/11/2010, 08:23
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Recargar página al hacer click en el boton atras del navegador

Muchas gracias a ti varon.... me da alegria ayudar..... pero mas aun cuando agradecen tambien como tu ^^

Espero verte en mas ocasiones en el foro.... quien sabe.... ahora tu ayudando a otros ^^

Los conocimientos solo sirven cuando son transferidos

Dios Bendiga a Todos
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog

Etiquetas: atras, recargar, botones, navegadores
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 03:28.