Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con la validación e datos y el envío de mail

Estas en el tema de Problema con la validación e datos y el envío de mail en el foro de PHP en Foros del Web. Buenas... En una pagina, con mas cosas, tengo un formulario de la que tomo unas variables, estas las valido y envío por correo... Código PHP: ...
  #1 (permalink)  
Antiguo 01/08/2013, 17:10
 
Fecha de Ingreso: mayo-2013
Mensajes: 55
Antigüedad: 11 años, 5 meses
Puntos: 1
Problema con la validación e datos y el envío de mail

Buenas...

En una pagina, con mas cosas, tengo un formulario de la que tomo unas variables, estas las valido y envío por correo...

Código PHP:
<?php
session_start
(); 
session_id();

$nombre $_POST['name'];
$mailo $_POST['mail'];

require 
"includes/class.phpmailer.php";
$mail = new phpmailer();
$mail->PluginDir "includes/";
$mail->Mailer "smtp";
$mail->Host "smtp.***.com";
$mail->SMTPAuth true;
$mail->Username "**@****.com"
$mail->Password "***";
$mail->From "**@****.com";
$mail->FromName "**";
$mail->Timeout=30;
$mail->AddAddress("**@***.com");
$mail->Subject "**";
$mail->Body "$nombre, $mailo";
$mail->AltBody "para ver el mensaje necesita html";
$intentos=1
$exito $mail->Send();


if(!isset(
$_POST['submit']))

{
if (empty(
$nombre))
{
echo 
"<script>
alert('Por favor Ingrese un nombre')
</script>"
;
echo 
"<html><head></head>".
"<body onload=\"history.go(-2)\">".
"</body></html>";
exit;
}
elseif (empty(
$mailo))
{
echo 
"<script>
alert('Por favor Ingrese un e-mail')
</script>"
;
echo 
"<html><head></head>".
"<body onload=\"history.go(-2)\">".
"</body></html>";
exit;
}


}
else ((!empty(
$mailo)) && (!empty($nombre)))
    
{

while ((!
$exito) && ($intentos 5)) {
sleep(5);

$exito $mail->Send();
$intentos=$intentos+1;    

if(!
$exito)
{
echo 
"Problemas enviando correo electrónico a ".$valor;
echo 
"<br/>".$mail->ErrorInfo;    
}
else
{
echo 
"<script>
alert('Enviado. Gracias! :) ')
window.location.href = 'index.html';
</script>"
;
exit;
}
}
}

session_destroy()
?>
Bueno por partes:

El phpmailer funciona me envía el correo.

Las validaciones Funcionan me arroja las alertas.


PERO al añadir los intentos con while() ya no jala... se que estoy mal en algún punto pero no veo en cual ya cambie las posiciones del while (no se como se le llama, le puse y quite { } )

La idea es que:

Verifique que dos campos tengan contenido

Si NO tienen contenido que mande alerta y regresa a una pagina

Si SI tiene contenido que haga 5 intentos para el envío del correo

Si logra hacer un envío que mande alerta

Si no hace el envío que mande alerta


Ya casi lo huelo... pero no me queda auxilio por favor...
  #2 (permalink)  
Antiguo 02/08/2013, 16:59
 
Fecha de Ingreso: mayo-2013
Mensajes: 55
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Problema con la validación e datos y el envío de mail

Me autorespondo:

En lugar de empty() usar isset() (cambiar de saber si esta vacio a saber si contiene algun valor)

La variable $exito que hace el envio del mail de phpmailer debe de asignar luego del IF

y la variable $intentos asignarla desde antes de todo el script junto con el resto de las variables.

Todos las sentencias se deben agrupar debajo de if(!isset($_POST['submit'])) y ya... parece.


No se si en verdad sea así, pero a mi me funciona y con eso me parece que es suficiente.

Gracias

Código PHP:
<?php 
session_start
();  
session_id(); 

$nombre $_POST['name']; 
$mailo $_POST['mail']; 

require 
"includes/class.phpmailer.php"
$mail = new phpmailer(); 
$mail->PluginDir "includes/"
$mail->Mailer "smtp"
$mail->Host "smtp.***.com"
$mail->SMTPAuth true
$mail->Username "**@****.com";  
$mail->Password "***"
$mail->From "**@****.com"
$mail->FromName "**"
$mail->Timeout=30
$mail->AddAddress("**@***.com"); 
$mail->Subject "**"
$mail->Body "$nombre, $mailo"
$mail->AltBody "para ver el mensaje necesita html"
$intentos=1;  


if(!isset(
$_POST['submit'])) 


if (empty(
$nombre)) 

echo 
"<script> 
alert('Por favor Ingrese un nombre') 
</script>"

echo 
"<html><head></head>"
"<body onload=\"history.go(-2)\">"
"</body></html>"
exit; 

elseif (empty(
$mailo)) 

echo 
"<script> 
alert('Por favor Ingrese un e-mail') 
</script>"

echo 
"<html><head></head>"
"<body onload=\"history.go(-2)\">"
"</body></html>"
exit; 




if ((isset(
$mailo)) && (isset($nombre))) 
     
$exito $mail->Send(); 
while ((!
$exito) && ($intentos 5)) { 
sleep(5); 

$exito $mail->Send(); 
$intentos=$intentos+1

if(!
$exito

echo 
"Problemas enviando correo electrónico a ".$valor
echo 
"<br/>".$mail->ErrorInfo;     

else 

echo 
"<script> 
alert('Enviado. Gracias! :) ') 
window.location.href = 'index.html'; 
</script>"

exit; 




session_destroy() 
?>

Etiquetas: formulario, html, mail, variable
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 21:33.