Me sale este mensaje al recargar la página:

Saludos.
| |||
Impedir que se reenvíen los datos al regargar la página Hola, estoy haciendo una pequeña aplicación web en PHP que realiza inserciones en tablas de un servidor MySQL y no quiero que al pulsar F5 o al recargar la página se me vuelvan a insertar registros, quiero impedir esto, ¿cómo puedo llevarlo a cabo? Me sale este mensaje al recargar la página: ![]() Saludos. |
| ||||
Respuesta: Impedir que se reenvíen los datos al regargar la página Si, eso es un problema, si quieres evitar que se muestre ese mensaje lo que tienes que hacer es cargar de nuevo la página después que se guarde el registro, eso lo podrías hacer el mismo PHP pero tendrías que poner el código que guarda en las primeras líneas del script antes de imprimir cualquier cosa. Se haría de este modo: $sql = "..."; //Sentencia SQL con la que haces la inserción de datos. if (mysql_query($sql)) { header("location: pagina.php"); } Obviamente "pagina.php" debe ser el mismo archivo que se está ejecutando. Acuérdate que no puedes usar la función header después de alguna impresión, así que se supone que más arriba no debe haber ninguna impresión, solamente el código que coge los datos y los guarda. Bien, eso hará una recarga al guardarse, demorará un poco más en cargar la página porque primeramente se ejecutará el código hasta que se haga la inserción del registro y después volverá a cargarse la página, pero ahora cuando se recargue la página no se volverán a enviar los datos. Espero que te sirva. |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página Me sale este error de Firefox:
Código:
La página no está redirigiendo adecuadamente Firefox ha detectado que el servidor está redirigiendo la solicitud a esta dirección de una manera en la que nunca terminará. |
| ||||
Respuesta: Impedir que se reenvíen los datos al regargar la página Cita: bueno, debes ponerlo... donde de la instrucción que verifica el POST.... si no, nunca saldrás de ahí!!!(de modo de que solo ocurra si hay POST, solo una ves) Código PHP:
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| |||
![]() Me sigue sin funcionar, tengo este código php: archivo.php: Código PHP: Saludos. |
| ||||
Respuesta: Impedir que se reenvíen los datos al regargar la página ponlo al final.. del script??
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página Ahora tengo esto: archivo.php Código PHP: |
| ||||
Respuesta: Impedir que se reenvíen los datos al regargar la página quita los "echo" o cualquier salida antes del header... ¿para que imprimir, si vas a re direccionar???
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página Los "echo" los tengo después del header y me lo sigue insertando de nuevo. |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página $_POST es un array, por lo tanto empty() no funciona! Debes usar is_array() o isset(). Por otro lado, las inserciones deben ir dentro del if, pues sólo deben ocurrir si se viene del formulario (POST) no? ![]() |
| ||||
Respuesta: Impedir que se reenvíen los datos al regargar la página de hecho, si funciona !!! mira, hice esta prueba (para desmentirme) Código PHP:
Código:
osea... que si esta vacío el array, debe estar "empty" jeje... ¿eso significa no??? 1 -2 -3
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página ¿Entonces mi código debería de quedar así? Código PHP: |
| ||||
Respuesta: Impedir que se reenvíen los datos al regargar la página pues... si, así esta bien... pero debería quedar así... Código PHP:
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página Cita: Como ambos decimos cual Padre Nuestro: "Funciona, pero no es lo correcto". empty() sirve para verificar el contenido de una variable tipo string. Si le pasas como argumento un array, por ejemplo, entonces el intérprete de PHP trata de convertir esta variable en un string. Ahora, trata de imprimir un array ($arr) haciendo simplemente echo $arr;. Obtienes la palabra "Array", y eso no significa que $arr sea un string que tiene como contenido esa palabra, sino que el intérprete en un intento por ejecutar lo que el código le pide le asigna ese valor. Dado que $_POST es un array que se "crea" sólo cuando el request fue de tipo POST, empty($_POST); será verdadero cuando el array $_POST no existe, y eso sucederá cuando el request no fue POST. Es como querer hacer un empty($foo) cuando $foo no está seteada. Si el request es de tipo POST, entonces $_POST existe y es un array. empty($_POST) devolverá entonces falso, pues es el equivalente de empty("Array");. Si me entendiste, te darás cuentas que nada tiene que ver con número de elementos o cosas así. Te pongo otro similar. $query = mysql_query('...');. Si la query fue exitosa entonces empty($query) devolverá falso, pues es equivalente a empty("Resource #N");. Por el contrario, si la query es incorrecta, $query tomará el valor de false, y empty(false) es verdadero. Igual funciona si queremos verificar la ejecución de X consulta no? Hombre, qué simple que es PHP, si empty() nos hace todo ![]() ![]() |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página @okram, ¿entonces la forma correcta sería así? Código PHP: |
| ||||
Respuesta: Impedir que se reenvíen los datos al regargar la página ![]() @okram, del manual de PHP ..... y eso, que nunca lo leo... jeje Cita: y haciendo énfasis....empty (PHP 4, PHP 5) empty — Determinar si una variable está vacía Descripción bool empty ( mixed $var ) Determinar si una variable es considerada vacía. Lista de parámetros var Variable a verificar Note: empty() sólo chequea variables ya que cualquier otra cosa producirá un error de intérprete. En otras palabras, lo siguiente no funcionará: empty(trim($name)). empty() es el opuesto de (boolean) var, con la excepción de que no se genera una advertencia cuando la variable no está definida. Valores retornados Devuelve FALSE si var tiene un valor no vacío y diferente de cero. Las siguientes expresiones son consideradas como vacías: * "" (una cadena vacía) * 0 (0 como un entero) * "0" (0 como una cadena) * NULL * FALSE * array() (una matriz vacía) * var $var; (una variable declarada, pero sin un valor en una clase) Cita: por eso, PHP es un lenguaje de scripting.... ¿es fácil no??* array() (una matriz vacía) ![]()
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página Lei el manual unos momentos despues de publicar el mensaje, pero ya estaba de salida y me corregí. Gracias por la aclaración. Por otro lado, el que $_POST esté vacío significa que el request definitivamente no fue tipo POST? Digo, no puede haber $_POST con 0 elementos? Ahora sólo voy de paso y no puedo probar. Pero tengo mis dudas acerca de que empty($_POST) sirva para determinar el tipo de request de X script ![]() ![]() |
| |||
Respuesta: Impedir que se reenvíen los datos al regargar la página empty() funciona muy bien... Sin embargo si mi $var = 0; empty() pensará que esta vacía, sólo por que su valor es 0 (igual lo hace con "0" -entre comillas-) asi que... ... |