Foros del Web » Programando para Internet » PHP »

Formulario permitir envio solo una vez

Estas en el tema de Formulario permitir envio solo una vez en el foro de PHP en Foros del Web. Buenas tardes con todos, estoy probando un codigo qe encontre por la red, para usarla en una aplicacion qe tengo qe hacer para facebook, el ...
  #1 (permalink)  
Antiguo 13/12/2011, 13:44
 
Fecha de Ingreso: diciembre-2011
Ubicación: Lima, los olivos
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 2
Pregunta Formulario permitir envio solo una vez

Buenas tardes con todos, estoy probando un codigo qe encontre por la red, para usarla en una aplicacion qe tengo qe hacer para facebook, el ejemplo es de esta pagina:

http://www.comocreartuweb.com/consultas/showthread.php/52978-Permitir-s%C3%B3lo-una-vez-el-env%C3%ADo-de-un-formulario

Mi consulta es , yo cambie el codigo para ajustarlo a mis necesidades pero no se si estara bien como lo eh cambiado, codigo no domino mucho pero trato de hacerlo funcionar de alguna manera je, bueno les paso el codigo qe modifique para mi uso


Código HTML:
<?

// Declaramos que la hora de envío de comentario se ponga en la hora de España
date_default_timezone_set('Europe/Madrid');

// Declaramos las variables para guardar la fecha y hora de envío del comentario
$fecha=date("Y/n/d");
$hora=date("H:i:s");
    $id = strip_tags($_POST[id]);
    $id = htmlentities($id);
    $nick = strip_tags($_POST[nick]);
    $email = strip_tags($_POST[email]);
    $comentario = strip_tags($_POST[comentario]);

    
$sesion="formulario"; 
$mostraren="98"; 
$ahora=@date("Y-n-j H:i:s"); 
@session_name("$sesion"); 
@session_start(); 
$duracion = (@strtotime($ahora)-@strtotime($_SESSION['llego'])); 
$esperar=$mostraren-$duracion; 
if(!isset($_SESSION['llego'])){ 
@session_name("$sesion"); 
@session_start(); 
$_SESSION['llego']=$ahora;



echo "<center><img src='http://www.salypimienta.pe/prueba2/text-enviado.jpg'/></center>"; 

}else{ 
if($duracion >= $mostraren){ 
@session_destroy();

$nombre = $_POST['nombre'];
$correo = $_POST['correo'];
$billa = $_POST['billa'];


$header = 'From: [email protected]' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Mensaje enviado por " . $nombre . " \r\n";
$mensaje .= "Su e-mail es: " . $correo . " \r\n";
$mensaje .= "Su respuesta es: " . " \r\n";
$mensaje .= "-" . $billa . " \r\n";


$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';

$asunto = 'Billabong Girls Sum`12';

mail($para, $asunto, utf8_decode($mensaje), $header);

@header ("location:http://www.salypimienta.pe/prueba2/ruba2.php");



}else{ 

echo "<center><img src='http://www.salypimienta.pe/prueba2/text-intento.jpg'/></center>";


}
}
?>
a ver si lo chekean y alguien de por aqui lo revisa y me indican los errores o si esta todo bien. ultimamente me dicen qe los mensajes llegan solo unos cuantos y despues ya no llegan.

saludos y gracias
  #2 (permalink)  
Antiguo 13/12/2011, 19:45
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Formulario permitir envio solo una vez

Cobro U$S 35.- la hora....

La proxima vez, el "por favor" no esta de mas, o que te parece "me ayudan"....

Cita:
a ver si lo chekean y alguien de por aqui lo revisa y me indican los errores o si esta todo bien. ultimamente me dicen qe los mensajes llegan solo unos cuantos y despues ya no llegan.
espantoso
__________________
Mono programando!
twitter.com/eguimariano
  #3 (permalink)  
Antiguo 13/12/2011, 19:55
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Formulario permitir envio solo una vez

Cita:
Iniciado por SirDuque Ver Mensaje
Cobro U$S 35.- la hora....

La proxima vez, el "por favor" no esta de mas, o que te parece "me ayudan"....



espantoso

Si cobrás por hora , qué haces en un foro desperdiciando tu "tiempo es dinero".?

Acá estamos para ayudarnos entre todos, no veo que "casato10" haya pedido de mala manera su consulta

PD: no hay que tratar así a los usuarios nuevos... Lo que queremos todos es sumar usuarios , NO espantarlos
__________________
la la la
  #4 (permalink)  
Antiguo 13/12/2011, 23:10
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: Formulario permitir envio solo una vez

Estimado casato10,

Tu pregunta es buena, no desesperes.
Quizá no te llegue la respuesta que requieres, pero sigue preguntando, en ocasiones no te responderemos lo adecuado.

En lo personal no tengo la respuesta, lo lamento.

Ánimo.
  #5 (permalink)  
Antiguo 14/12/2011, 06:27
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Formulario permitir envio solo una vez

casato10 te pido disculpas, por lo de la hora, se filtro en el mensaje.

truman_truman No te importa el tiempo que desperdicie, grandes usuarios me ayudaron y hoy lo devuelvo de esta manera.

NOTA: Bier si vas a comentar y cargar karma, por lo menos tomate la molestia de leer el codigo en cuestion. Lo mismo para truman_truman.

Basta de desvirtuar el tema.


casato10 En las funciones tenes "@" eso omite la impresion de errores, retiralos, recorre lo errores, y mostrale a los chicos el error.


Suerte
__________________
Mono programando!
twitter.com/eguimariano
  #6 (permalink)  
Antiguo 14/12/2011, 10:31
 
Fecha de Ingreso: diciembre-2011
Ubicación: Lima, los olivos
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Formulario permitir envio solo una vez

gracias a todos los qe se tomaron la molestia de leer mi pregunta, Sirduque gracias entonces lo qe me causa conflicto es los @ qe hay en estas lineeas de codigo?

Código HTML:
Ver original
  1. $ahora=@date("Y-n-j H:i:s");
  2. @session_name("$sesion");
  3. @session_start();
  4. $duracion = (@strtotime($ahora)-@strtotime($_SESSION['llego']));
  5. $esperar=$mostraren-$duracion;
  6. if(!isset($_SESSION['llego'])){
  7. @session_name("$sesion");
  8. @session_start();
  9. $_SESSION['llego']=$ahora;
  10.  
  11.  
  12.  
  13. echo "<center><img src='http://www.salypimienta.pe/prueba2/text-enviado.jpg'/></center>";
  14.  
  15. }else{
  16. if($duracion >= $mostraren){
  17. @session_destroy();
  18.  
  19. $nombre = $_POST['nombre'];
  20. $correo = $_POST['correo'];
  21. $billa = $_POST['billa'];
  22.  
  23.  
  24. $header = 'From: [email protected]' . $mail . " \r\n";
  25. $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  26. $header .= "Mime-Version: 1.0 \r\n";
  27. $header .= "Content-Type: text/plain";
  28.  
  29. $mensaje = "Mensaje enviado por " . $nombre . " \r\n";
  30. $mensaje .= "Su e-mail es: " . $correo . " \r\n";
  31. $mensaje .= "Su respuesta es: " . " \r\n";
  32. $mensaje .= "-" . $billa . " \r\n";
  33.  
  34.  
  35. $mensaje .= "Enviado el " . date('d/m/Y', time());
  36.  
  37.  
  38. $asunto = 'Billabong Girls Sum`12';
  39.  
  40. mail($para, $asunto, utf8_decode($mensaje), $header);
  41.  
  42. @header ("location:http://www.salypimienta.pe/prueba2/ruba2.php");

y quitando eso ya estaria todo bien?, tendras algun correo para agregarte quiero consultarte algo mas xfavor.
  #7 (permalink)  
Antiguo 14/12/2011, 11:26
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Formulario permitir envio solo una vez

Cita:
Iniciado por casato10 Ver Mensaje
gracias a todos los qe se tomaron la molestia de leer mi pregunta, Sirduque gracias entonces lo qe me causa conflicto es los @ qe hay en estas lineeas de codigo?

Código HTML:
Ver original
  1. $ahora=@date("Y-n-j H:i:s");
  2. @session_name("$sesion");
  3. @session_start();
  4. $duracion = (@strtotime($ahora)-@strtotime($_SESSION['llego']));
  5. $esperar=$mostraren-$duracion;
  6. if(!isset($_SESSION['llego'])){
  7. @session_name("$sesion");
  8. @session_start();
  9. $_SESSION['llego']=$ahora;
  10.  
  11.  
  12.  
  13. echo "<center><img src='http://www.salypimienta.pe/prueba2/text-enviado.jpg'/></center>";
  14.  
  15. }else{
  16. if($duracion >= $mostraren){
  17. @session_destroy();
  18.  
  19. $nombre = $_POST['nombre'];
  20. $correo = $_POST['correo'];
  21. $billa = $_POST['billa'];
  22.  
  23.  
  24. $header = 'From: [email protected]' . $mail . " \r\n";
  25. $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  26. $header .= "Mime-Version: 1.0 \r\n";
  27. $header .= "Content-Type: text/plain";
  28.  
  29. $mensaje = "Mensaje enviado por " . $nombre . " \r\n";
  30. $mensaje .= "Su e-mail es: " . $correo . " \r\n";
  31. $mensaje .= "Su respuesta es: " . " \r\n";
  32. $mensaje .= "-" . $billa . " \r\n";
  33.  
  34.  
  35. $mensaje .= "Enviado el " . date('d/m/Y', time());
  36.  
  37.  
  38. $asunto = 'Billabong Girls Sum`12';
  39.  
  40. mail($para, $asunto, utf8_decode($mensaje), $header);
  41.  
  42. @header ("location:http://www.salypimienta.pe/prueba2/ruba2.php");

y quitando eso ya estaria todo bien?, tendras algun correo para agregarte quiero consultarte algo mas xfavor.
NO! la idea, es que saques los @ y lo pruebes, veas que errores tira, para que te podamos ayudar, podes crear nuevos Topic´s, o enviarme MP. Saludos.
__________________
Mono programando!
twitter.com/eguimariano
  #8 (permalink)  
Antiguo 14/12/2011, 12:14
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Formulario permitir envio solo una vez

@casato10

la forma más efectiva de evitar eso es usando un captcha, aqui te dejo la forma de hacer uno bastante simple

http://foros.emprear.com/php/captcha/

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 16/12/2011, 16:04
 
Fecha de Ingreso: diciembre-2011
Ubicación: Lima, los olivos
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Formulario permitir envio solo una vez

emprear gracias por tu respuesta, qe esto del captcha me va funcionar para lo qe necesito?, osea lo qe necesito es qe cuando alguien entre en el formulario ingrese sus datos y mande su respuesta y despues quiera volver a mandar nuevamente ya no premita mandar, yasea qe el correo no se mande o qe ya no salga el formulario, no se si me dejo entender. qedo en espera de tu respuesta gracias.

saludos.
  #10 (permalink)  
Antiguo 16/12/2011, 17:03
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Formulario permitir envio solo una vez

@casato10

lo del Captcha es una parte del conjunto, hay que ver como estás procesando el formulario, lo ideal es combinar Ajax+Captcha para procesar tu formulario. haciendolo así es muy seguro, y evitás que si recargan la página el form se vuelva a enviar, o si retroceden con el navegador y le dan a enviar otra vez, se repita el envío.
incluso con algo de Jquery podés darle algunas mejoras. Por supuesto todo depende de como esté hecho tu form. Hay otras maneras, pero esa es la que yo uso

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 16/12/2011, 18:10
 
Fecha de Ingreso: diciembre-2011
Ubicación: Lima, los olivos
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Formulario permitir envio solo una vez

emprear, ok entonces seria una combinacion de ajax con jquery mmmm no domino ajax la verdad hasta el momento no lo he tocado jeje, bueno entonces te pido aver si puedes mandarme un ejemplo qe hayas realizado para poder estudiarlo, si es que puedes. osea un formulario con esas caracteristicas.

Bueno tambien te comento qe el codigo que pegue aqui para qe me ayuden, si funcionaba para no dejar enviar nuevamente el mensaje, el problema era qe solo llegaban lso primeros mensajes de la gente qe escribia y despues ya no llegaban quizas por conflicto de codigo me imagino. Incluso cuando refrescaban la pagina igual si ya habias mandado antes, ya no te dejaba mandar el mensaje, osea qe si funciona pero hay errores seguro.

si pudieras chekear el codigo pues tal vez puedes arreglarlo o enterderlo por qe yo no entiendo mucho el codigo. he visto antes en aplicaciones de facebook estas funciones de qe no te deja votar o escoger mas de una vez pero paseando por google no encontre otro ejemplo mas que ese codigo qe publique aqui.

Bueno saludos y gracias por atender mi llamado de auxilio.
  #12 (permalink)  
Antiguo 16/12/2011, 22:00
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Formulario permitir envio solo una vez

te dejo una demo
http://foros.emprear.com/php/demo-form-ajax-captcha/

te aclaro que pueden hacerse varias variantes a eso, incluso alguna optimización, pero la deje asi para que sea más fácil de entender, ahi vas a ver como se combinan ajax, php y jquery

Analizala bien y seguro vas a sacar alún elemento que te sirva

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 16/12/2011, 22:05
Avatar de Chico3001  
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: Formulario permitir envio solo una vez

Tambien puedes almacenar la visita de la persona en la superglobal $_SESSION

Código PHP:
// Si es la Primer Visita, se guardan datos
if (!isset($_SESSION['visita'])) {

    
$_SESSION['visita'] = 1;

    
//(ejecutar formulario)

} else {

    
// (formulario ya ejecutado previamente)


  #14 (permalink)  
Antiguo 20/12/2011, 12:03
 
Fecha de Ingreso: diciembre-2011
Ubicación: Lima, los olivos
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 2
Busqueda Respuesta: Formulario permitir envio solo una vez

emprear ya vi tu ejemplo esta bueno, aun no lo examino, mas tarde lo chekeeo por qe estoy en mi chamba, pero una consulta con esto del capcha yo podria evitar qe cualquier persona qe entre a la pagina mande un mensaje solo una vez y despues ya no pueda mandar el mensaje nuevamente?, por qe cuando este terminado esto, va ir para una pestaña de concurso de una pagina de facebook y por eso ando buscando qe me permita solo una vez je.

chico3001 compa esto qe me mencionas del almacenar la visita con superglobal $_SESSION, me lo podrias explicar mas detalladamente o quizas tengas algun ejemlo porahi para poder captarla mejor, por qe en codigo php ando a nivel basico nomas jeje, gracias.

saludos y gracias por las respuestas masters.

Etiquetas: contacto, formulario, mensaje, permitir, vez
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 14:12.