Foros del Web » Programando para Internet » PHP »

Formulario ejecuta antes de dar a submit

Estas en el tema de Formulario ejecuta antes de dar a submit en el foro de PHP en Foros del Web. Buenas noches, quería haber puesto este hilo en otro que ya tenía abierto reciente pero dado a que don temas muy diferentes he preferido abrir ...
  #1 (permalink)  
Antiguo 13/02/2014, 21:23
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Formulario ejecuta antes de dar a submit

Buenas noches, quería haber puesto este hilo en otro que ya tenía abierto reciente pero dado a que don temas muy diferentes he preferido abrir otro hilo nuevo.

Al grano, tengo un simple formulario:
Código HTML:
Ver original
  1. <form action="formulario2.php" method="get">
  2.   archivo.
  3.   <input type="text" name="extension"  size="5" value="" />
  4.   <input type="submit" value="Enviar" />
  5. </form>

Y el código código en otro archivo:

Código PHP:
Ver original
  1. <?php
  2.   if ($_GET["extension"]) {
  3. $extension = $_GET["extension"];
  4. echo "Ha buscado .$extension";
  5. } else { echo " No ha buscado nada, escriba la extension"; }
  6. ?>

Esto funciona bien, pero me gustaría realizarlo en todo en una página.
Lo he intentado y funciona bien pero... Nada mas entrar al formulario aparece el mensaje como si hubiera enviado el formulario sin datos.

Obviamente lo ideal seria aparezca el mensaje cuando le de a submit y no antes, pero no encuentro ningún ejemplo con el que guiarme,
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #2 (permalink)  
Antiguo 13/02/2014, 21:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Formulario ejecuta antes de dar a submit

El asunto es que una petición normal siempre seŕa de tipo GET, por lo tanto es natural que siempre se ejecute algo del código que tienes.

La clave está en los atributos name de los elementos del formulario, si lo piensas un poco sólo se muestran en la URL cuando el formulario se ha enviado.

Eso es todo, verifica con un sólo bloque dicho campo:
Código PHP:
Ver original
  1. if (!empty($_GET['name_del_submit'])) {
  2.   // acá el resto del código
  3. }

Pero repito, al emplear el método GET significa que con tan sólo colocar en la URL dicho parámetro también se evaluara positivamente el mismo código.

Así que no existe una forma exacta de saber si se ha enviado o no a través de un formulario.

No es que el formulario se ejecute, pues el HTML no es algo ejecutable.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/02/2014, 22:23
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Formulario ejecuta antes de dar a submit

Lo que me sirvió fue lo siguiente:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST["enviar"])) {
  3.     if(!empty($_POST["encriptar"])) {
  4.         echo "su password es: " . md5($_POST["encriptar"]);
  5.     } else { ?>
  6.             No ha introducido la contraseña.
  7.             <?php
  8.             }
  9.  
  10. }
  11. ?>

Antes nada mas entrar al formulario me decía que no había introducido ninguna contraseña, osea el mismo error como si mandara el formulario en blanco, ahora ya no!! :)
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #4 (permalink)  
Antiguo 18/02/2014, 23:37
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Formulario ejecuta antes de dar a submit

por que ahora pregunta si tiene valor o si esta vacio completamente...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB

Etiquetas: ejecuta, formulario, submit
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 07:40.