Título: Como saber si un formulario se ha enviado Publicado por: Shell Root en 17 Marzo 2011, 05:46 am Tengo 2 archivos, index.php y registrarse.php. Cuando paso de index a registrarse, el formulario de registrarse aun no ha interactuado. Como hago para saberlo, es como una validad que quiero hacer.
Título: Re: Como saber si un formulario se ha enviado Publicado por: RedZer en 17 Marzo 2011, 06:08 am no te entiendo mucho pero Puedes utilizar una variable oculta "hidden" por ejemplo:
Código y en la página que espera el form miras si dicha variable va cargada, Código
o bien lo puedes hacer con jquery de la siguiente forma la idea es tener dos campos en mi caso ok uno que se llame sessiones y otro que se llame nombre como se ve aki index.php Código
bueno antes que nada necesitas la libreria de jquery okas , de ahi generarmos nuestro script llamado funciones que contendra lo siguiente funciones.js Código
y nuestro ultimo codigo seria la pagina que recibe los datos en este caso pagina1.php Código
ok bueno la idea es que por ejempolo si se pocisiona el cursor dentro de la caja sessiones y se rellena al momento de estar escribiendo mandara un mensaje en tiempo real indicando que aun no se reciben datos por parte de la caja llamada nombre de lo contrario si primero posicionas el cursor en la caja nombre y llenas el campo de texto y luego te pasas ala caja llamada sesiones nunca aparecera un mensaje ya que la caja de texto llamada nombre ya tiene un valor y ya por ultimo pulsas el boton de enviar y tan tan. Título: Re: Como saber si un formulario se ha enviado Publicado por: Nakp en 17 Marzo 2011, 07:39 am mas simple... inicia una sesion (php) cuando envia carga registrarse.php por primera vez :P si no existe es porque todavia no ha ingresado a ese archivo :) deberias exponer mejor tu caso :P creo que puede optimizarse (intentos de registro talvez?)
Título: Re: Como saber si un formulario se ha enviado Publicado por: Castg! en 17 Marzo 2011, 13:47 pm Yo no te entiendo. Tenes un formulario en index.php con "action=registrarse.php" ? Qué es bien lo que querés que aparezca?
Tal vez usando ajax desde el index, envias el formulario a registrarse.php y si se ejecuta todo correcto imprimís algo especial en registrarse.php y lo comprobas con el response del ajax si no me equivoco... Título: Re: Como saber si un formulario se ha enviado Publicado por: Shell Root en 17 Marzo 2011, 21:22 pm No no no, a lo que me refiero es como saber que un formulario fue enviado, es decir, que ha clickeado en el boton submit del formulario. Se que es posible saberlo, pero coño no recuerdo y no se como buscarlo.
Título: Re: Como saber si un formulario se ha enviado Publicado por: Castg! en 17 Marzo 2011, 23:29 pm Código ? :huh: Título: Re: Como saber si un formulario se ha enviado Publicado por: Shell Root en 18 Marzo 2011, 02:14 am Nop!, debe de ser con alguna variable submit yo que sé. *****, no recuerdo cual era el código.
Título: Re: Como saber si un formulario se ha enviado Publicado por: Castg! en 18 Marzo 2011, 02:34 am Cómo alguna variable submit?
Querrás decir desde javascript? Código Creo que es así. No te entiendo nada! Vos lo que querés es saber si el formulario se envió? O sea, yo estoy en registrar, y cuando envie el formulario de registrar pase algo? o que ese algo pase en index? Título: Re: Como saber si un formulario se ha enviado Publicado por: Shell Root en 18 Marzo 2011, 02:47 am Lo que quiero es que se ejecute mi codigo despues de que sea enviado el formulario, no cuando se cargue el formulario.
Título: Re: Como saber si un formulario se ha enviado Publicado por: Spider-Net en 18 Marzo 2011, 03:17 am Pues simplemente comprueba que algunos campos del formulario estén llenos, por ejemplo:
Si tu formulario tiene algo así: Código Si quieres que tu archivo registrar.php sólo haga X cosa si el formulario ha sido enviado compruébalo así: Código
Título: Re: Como saber si un formulario se ha enviado Publicado por: Nakp en 18 Marzo 2011, 03:20 am o simplemente si el array $_POST esta empty() no necesariamente un campo :) que pasaria si llena 1 campo y los demas los deja vacios? :P
Título: Re: Como saber si un formulario se ha enviado Publicado por: Castg! en 18 Marzo 2011, 03:23 am Si queres ejecutar PHP, esta correcto lo que te dijo Spider-net y creo que también a eso se refirió RedZer. Si lo que querés es código javascript, hacé lo que ya te dije yo del Ajax y el response.
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. Qué decis Nakp? Título: Re: Como saber si un formulario se ha enviado Publicado por: Spider-Net en 18 Marzo 2011, 03:25 am Si, es verdad Nakp, pero bueno, yo lo que suelo hacer es poner en la condición !empty a cualquiera de los campos que considero obligatorios, si cualquiera de los obligatorios está vacío devuelvo un error y muestro de nuevo el formulario.
EDIT--- Obviamente esto sería para hacer la comprobación mediante PHP, si se quiere hacer mediante javascript la solución sería la de Castg! Título: Re: Como saber si un formulario se ha enviado Publicado por: Castg! en 18 Marzo 2011, 04:17 am Obviamente esto sería para hacer la comprobación mediante PHP, si se quiere hacer mediante javascript la solución sería la de Castg! Que igualmente hay que utilizar tú método para responder con PHP... Título: Re: Como saber si un formulario se ha enviado Publicado por: RedZer en 18 Marzo 2011, 04:57 am ok mira en index obiamente ya tienes un boton en el formulario supongamos que se llama button
Código el value es muy importante okas y en la pagina resgitrarse.php lo recibes asi Código de esta forma sabras que el boton ya fue pulsado Título: Re: Como saber si un formulario se ha enviado Publicado por: Spider-Net en 18 Marzo 2011, 06:13 am Que igualmente hay que utilizar tú método para responder con PHP... Si, es verdad, lo ideal es usar ambos, para validar los datos del lado del cliente y del servidor :D Título: Re: Como saber si un formulario se ha enviado Publicado por: Shell Root en 18 Marzo 2011, 13:20 pm :D creo que esa es la solución, aunque si mal no recuerdo era con submit, pero como no recuerdo lo haré con ese. XD
Título: Re: Como saber si un formulario se ha enviado Publicado por: rob1104 en 18 Marzo 2011, 18:16 pm La solucion mas simple y correcta a tu problema es isset() (http://php.net/manual/en/function.isset.php)
Saludos Título: Re: Como saber si un formulario se ha enviado Publicado por: Spider-Net en 18 Marzo 2011, 18:19 pm isset() falla a veces por diferentes razones, yo recomiendo encarecidamente usar empty, que es mucho más fiable, por experiencia...
---EDIT--- Para evitar confusión aclaro que isset falla para este propósito en concreto, o mejor dicho, no es que la función falle, pero para este objetivo no funciona correctamente. Título: Re: Como saber si un formulario se ha enviado Publicado por: ~ Yoya ~ en 18 Marzo 2011, 22:45 pm isset() no tiene que fallar y no es una alias de empty ni nada similar. Los dos tienes propósitos diferentes, si dices que ah fallado es porque en realidad el fallo es lógico.
Título: Re: Como saber si un formulario se ha enviado Publicado por: Castg! en 18 Marzo 2011, 23:02 pm Según yoya, isset comprueba que se encuentre alojada x variable en la memoria, no es asi?
Y empty comprueba si está vacía. Ahora que pasa si le paso a empty la variable x y esta no fue declarada (no existe). Título: Re: Como saber si un formulario se ha enviado Publicado por: Spider-Net en 19 Marzo 2011, 02:50 am isset() no tiene que fallar y no es una alias de empty ni nada similar. Los dos tienes propósitos diferentes, si dices que ah fallado es porque en realidad el fallo es lógico. Yo no he dicho que isset() sea un alias de empty. Pero para este propósito a mí empty me funciona mejor que isset(). isset lo que comprueba efectivamente es que la variable exista, que no sea un valor NULL, sin embargo por mi experiencia empty me ha sido mucho más eficaz para este caso concreto. --EDIT------ Para demostrar que no es un fallo lógico sino del funcionamiento de la función para este caso concreto. Que quede claro, que yo he dicho que prefiero usar empty para este caso concreto ya que isset "falla", y aquí tenéis una prueba (http://www.yoursigs.com/test.php). Este es el código fuente de ese fichero: Código
Os pido que hagáis una prueba: - Entrad en la web, y veréis que ambas funciones dicen que el campo nombre no contiene nada, luego NO RELLENÉIS ningún campo y pulsad en "Enviar". La función isset dirá que el campo SÍ contiene algo mientras que empty dirá que NO. No es que la función no funcione correctamente, ya que al pulsar a enviar el formulario efectivamente la variable $_POST['nombre'] ya no es NULL pero sin embargo está vacía por lo tanto no cumple nuestro propósito. Es por esta razón por la que aconsejo usar !empty, para este caso concreto, que como podéis ver sigue diciendo que el campo nombre está vacío. - Si se escribe algo en el campo nombre obviamente ambas funciones dirán que el campo nombre contiene algo. Si alguien no cree que este es el código escrito en el fichero test.php puede copiar y pegar y hacer la prueba por sí mismo. Espero que así quede aclarado el por qué digo que para este propósito recomiendo encarecidamente usar empty() en lugar de isset(). Según yoya, isset comprueba que se encuentre alojada x variable en la memoria, no es asi? Y empty comprueba si está vacía. Ahora que pasa si le paso a empty la variable x y esta no fue declarada (no existe). Respondiendo a tu pregunta Castg!, como puedes ver en el ejemplo, no pasa nada. Si le pasas a empty una variable no declarada pues la dará como vacía, y si le pasas una declarada pues simplemente comprobará si efectivamente está vacía o no, creo que con el ejemplo queda claro. Saludos. Título: Re: Como saber si un formulario se ha enviado Publicado por: ~ Yoya ~ en 19 Marzo 2011, 12:54 pm Citar Entrad en la web, y veréis que ambas funciones dicen que el campo nombre no contiene nada, luego NO RELLENÉIS ningún campo y pulsad en "Enviar". La función isset dirá que el campo SÍ contiene algo mientras que empty dirá que NO Cita de: Yoya isset() no tiene que fallar y no es una alias de empty ni nada similar. Los dos tienes propósitos diferentes, si dices que ah fallado es porque en realidad el fallo es lógico. El error aquí esta, en que estas intentando comprobar con isset si $_POST['nombre'] contiene algún valor pero isset el propósito de isset es diferente. El isset comprueba que $_POST['nombre'] esta definida, no comprueba que tenga algun valor. (http://img51.imageshack.us/img51/5227/38726185.png) Deberia ser asi: Citar EN ESTE MOMENTO SE USA LA FUNCIÓN ISSET La variable nombre esta definida EN ESTE MOMENTO SE USA LA FUNCIÓN EMPTY La variable nombre NO contiene nada Ej: Código
Salida: Código: Esta definida la variable Pd: Si encuentras algún bug en alguna función puedes reportarla a php.net. Saludos. Título: Re: Como saber si un formulario se ha enviado Publicado por: Spider-Net en 19 Marzo 2011, 14:26 pm Tienes toda la razón compañero Yoya, la función isset tiene otro propósito por eso cuando el compañero rob1104 ha dicho que "La solucion mas simple y correcta a tu problema es isset()" yo he dicho que no. Porque para este caso concreto no sirve la función isset, no cumple el propósito solicitado.
Hay que tener en cuenta que yo no he dicho que la función falle o no cumpla su propósito en general, sino que no es efectiva para hacer lo que se ha planteado en este post. Al menos eso es lo que he intentado expresar. Título: Re: Como saber si un formulario se ha enviado Publicado por: rob1104 en 19 Marzo 2011, 16:41 pm Pero segun lo que yo entendi, el quiere saber si se ha enviado un formulario para poder entrar a registrar.php y que no puedan entrar directo. Algo asi deberia bastar
Código
Claro, el boton del submit debe tener por name aceptar y el method del formulario post Saludos Título: Re: Como saber si un formulario se ha enviado Publicado por: Spider-Net en 19 Marzo 2011, 19:32 pm Tengo 2 archivos, index.php y registrarse.php. Cuando paso de index a registrarse, el formulario de registrarse aun no ha interactuado. Como hago para saberlo, es como una validad que quiero hacer. Yo creo que lo que quiere decir es que tiene un index con un enlace a registrarse.php y registrarse.php contiene tanto el formulario como los procesos que deben ejecutarse una vez el formulario es rellenado (igual que en el ejemplo que yo he puesto), por lo tanto para que los datos no se procesen antes de que se rellene el formulario se usa la comprobación if(!empty($_POST['var'])) para verificar que no está vacío y así proceder a procesar los datos. Si usa isset y un usuario pulsa en enviar sin rellenar ningún campo entraría a procesar sin información, por lo tanto podría generar errores. De cualquier manera, sea cual sea la situación, ya el usuario tiene respuestas para todas la situaciones, así que espero que se de por satisfecho XDDD |