Foros del Web » Programando para Internet » PHP »

Envios duplicados en un formulario

Estas en el tema de Envios duplicados en un formulario en el foro de PHP en Foros del Web. Hola a todos. Hice un script de formulario, basado en el que viene en el faq, y lo he modificado un poco. He insertado el ...
  #1 (permalink)  
Antiguo 10/04/2007, 17:32
Avatar de hey_alan  
Fecha de Ingreso: diciembre-2006
Ubicación: México
Mensajes: 348
Antigüedad: 13 años
Puntos: 8
Exclamación Envios duplicados en un formulario

Hola a todos.

Hice un script de formulario, basado en el que viene en el faq, y lo he modificado un poco.

He insertado el codigo php de action.php (el nombre del archivo con la accion del envio), y le he agregado un javascript para que redireccione después de unos segundos.

El problema es, que de alguna forma, aunque solo haga click una vez en "enviar" envia correos duplicados, es decir, cuando alguien me manda un mail atravéz del formulario, me llegan 2 ó 3 mensajes iguales. ¿Como lo puedo arreglar?

Este es el código:

Código:
<?php 
$sfrom=$_GET["email"]; //cuenta que envia el mail
$sdestino="[email protected]"; //cuenta que recibira el mail
$ssubject=$_GET["asunto"]; //el asunto del mensaje
if ($ssubject==""){$ssubject="Formulario de Envio";} //Asiga un asunto en caso de no haber alguno
$scomentario=$_GET["comentario"]; //Asigna el comentario a la variable scomentario
$shtml="Nick: ".$_GET["nombre"]."\n\nComentario:\n\n".$scomentario."\n\n"; //el nick y el comentario
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";

if (strstr($sfrom, "@")) { //comprueba que el string insertado en email contenga el simbolo '@'
if ($scomentario==""){echo "<center><strong>Debes insertar un comentario</strong></center>";}else{
mail($sdestino,$ssubject,$shtml,$sheader); //Finalmente, manda el correo
echo "<center><strong>Su mensaje ha sido enviado.</strong><br />En unos momentos ser&aacute; redireccionado</center>";
}
}else{ echo "<center><strong>Debes insertar una direcci&oacute;n email valida</strong></center>";}

?> 
<script LANGUAGE="JavaScript">
var pagina="contacto.php"
function redireccionar() 
{
location.href=pagina
} 
setTimeout ("redireccionar()", 10000);
</script>
Otra cosa: Habia intentado verificar que la variable de comentario contenga algo en el string, con el simbolo de not (!), de esta forma:
if !($scomentario==""){
pero no funciono... no se que estaria haciendo mal al poner el simbolo. Quite el simbolo y acomode las cosas de otro modo y funciono. Solo quiero saber porque esta mal que ponga 'not' de esta manera.

De ante mano, muchisimas gracias...
  #2 (permalink)  
Antiguo 10/04/2007, 19:36
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 13 años
Puntos: 11
Re: Envios duplicados en un formulario

Hola:

deberías poner el código del formulario también.
A simple vista lo que pusiste no tiene nada por lo que enviara el formulario dos veces.

Envíame el´html del formulario y veo como puedo optimizarte los códigos y de esa manerra probar.

Con respecto al
Código PHP:
if !($scomentario==""){ 
está mal.

Si quieres verificar que la variable "scomentario" contenta algo debes hacerlo de la siguiente manera:

Código PHP:
// evalua si la variable no es igual al vacio, o sea, tiene algo
if ($scomentario != "") { 
Otra forma de hacerlo es:

Código PHP:
// Si la variable tiene algo da 1 y la condición se cumple
if ($scomentario) { 
Otra forma es:
Código PHP:
//Verifica que la variable esté definida
if (isset($scomentario)){ 
Bueno, hay otras formas todavía pero creo que con algunas de estas puedes andar bien.

Hasta la próxima!
  #3 (permalink)  
Antiguo 10/04/2007, 23:05
Avatar de hey_alan  
Fecha de Ingreso: diciembre-2006
Ubicación: México
Mensajes: 348
Antigüedad: 13 años
Puntos: 8
Mensaje Re: Envios duplicados en un formulario

Muchisimas gracias por responder!. Gracias, ahora veo porque no funcionaba (pense que se hacia igual que en C).

El código HTML del formulario es este:

Código:
	<form action="form.php" method="get">
	<table cellpadding="0" cellspacing="5">
	<tr>
	<td align="right" valign="middle">Inserta tu nombre/nick:</td>
	<td align="left" valign="middle"><input type="text" name="nombre"/></td>
	</tr>
	<tr>
	<td align="right" valign="middle">Tu email:</td>
	<td align="left" valign="middle"><input type="text" name="email"/></td>
	</tr>
    <tr>
	<td align="right" valign="middle">Asunto:</td>
	<td align="left" valign="middle"><input type="text" name="asunto"/></td>
	</tr>
	<tr>
	<td align="right" valign="middle">Tus comentarios:</td>
	<td align="left" valign="middle"><label><textarea name="comentario" cols="40" rows="6"></textarea>
	</label></td>
	</tr>
    <tr>
	<td></td>
	<td align="left" valign="middle"><label><input type="submit" name="Submit" value="Enviar" /></label></td>
	</tr>
	</table>
	
	</form>
Por si les sirve, una muestra de como lo he insertado es aqui (no puedo insertar bien la url por el antispam):

cybershaman.ueuo.com

Nos vemos! y muchas gracias...

Última edición por hey_alan; 10/04/2007 a las 23:12
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 17:51.