Foros del Web » Programando para Internet » PHP »

phpmailer: página de gracias

Estas en el tema de phpmailer: página de gracias en el foro de PHP en Foros del Web. Hola, no encuentro la manera de que aparezca una página de gracias (gracias.php, por ejemplo) tras el envío de un formulario web hecho con la ...
  #1 (permalink)  
Antiguo 23/09/2012, 17:01
 
Fecha de Ingreso: diciembre-2006
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
phpmailer: página de gracias

Hola, no encuentro la manera de que aparezca una página de gracias (gracias.php, por ejemplo) tras el envío de un formulario web hecho con la clase phpmailer.

Si aparece la página gracias.php, no se envía el email.
Y si se envía el email, no aparece la página de gracias.php.

Algunos hablan de:
- usar un javascript
- usar algo del tipo $thank="gracias.php";
- o también un header("Location: gracias.php");

Alguien lo ha conseguido? Debe ser muy fácil, porque la clase phpmailer es muy completa, pero yo no he sido capaz.

El formulario está en http://www.ago-construcciones.com/contactenos-v3.php

Gracias
  #2 (permalink)  
Antiguo 23/09/2012, 17:55
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 5 meses
Puntos: 18
Respuesta: phpmailer: página de gracias

Hola

Puedes hacerlo con header("Location: gracias.php");

Por que lo rediriges a otra pagina?

solo pon al final un agradecimiendo, Saludos
  #3 (permalink)  
Antiguo 23/09/2012, 18:02
Avatar de flashmax  
Fecha de Ingreso: julio-2012
Ubicación: Bs.As. Argentina
Mensajes: 507
Antigüedad: 11 años, 9 meses
Puntos: 86
Respuesta: phpmailer: página de gracias

también puedes usar
echo "<script> alert (\"mensaje enviado\"); </script>";

o tambien
echo "<script language=Javascript> location.href=\"gracias.php\"; </script>";
__________________
Saludos!
----------------------------------------------------------
  #4 (permalink)  
Antiguo 24/09/2012, 13:30
 
Fecha de Ingreso: diciembre-2006
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: phpmailer: página de gracias

Gracias, NESTORNOE y FLASHMAX.
Ya probé ambos sitemas: el header y el script.
Pero ambos dan dos problemas:
- se enseña la página de gracias, pero el mensaje no se envía
- cuando se escribe la URL en el navegador (http://www.ago-construcciones.com/contactenos-v3.php) y le doy al ENTER, en lugar de verse el formulario, se ejecuta el header o el script, y voy directo a la página de gracias.php
Lo he probado y he vuelto a quitar el código que me aconsejáis. Tal vez no lo pongo en el sitio correcto.

saludos
  #5 (permalink)  
Antiguo 24/09/2012, 13:35
 
Fecha de Ingreso: diciembre-2006
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: phpmailer: página de gracias

Me olvidaba... NESTORNOE preguntaba
"Por que lo rediriges a otra pagina?
solo pon al final un agradecimiendo, Saludos"

Ya lo tengo así, con un saludo en rojo.
Pero tengo que pasarlo a una página externa tipo gracias.php, para que Google Analytics pueda contar cada vez que se envia un formulario, que es uno de los Objetivos que hemos configurado en Analytics. Luego se podrán establecer ratios de retorno de inversión, por ejemplo: entran 100 personas en el web, 10 envían el formlario, 1 se convierte en cliente.
  #6 (permalink)  
Antiguo 24/09/2012, 13:46
Avatar de flashmax  
Fecha de Ingreso: julio-2012
Ubicación: Bs.As. Argentina
Mensajes: 507
Antigüedad: 11 años, 9 meses
Puntos: 86
Respuesta: phpmailer: página de gracias

Si no debe estar en el sitio correcto si quieres comparte los códigos para poder ayudarte.
__________________
Saludos!
----------------------------------------------------------
  #7 (permalink)  
Antiguo 24/09/2012, 14:36
 
Fecha de Ingreso: diciembre-2006
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: phpmailer: página de gracias

Pongo el codigo, aunque es un poco largo. No sé si hay otro modo de poner el codigo. Hay un problema con los charsets, pero no me preocupa, porque en la página original se ven bien:

<?php


//CONFIGURACION
$direccion_envio= '[email protected]'; //la direccion a la que se enviara el email.
$url= 'http://www.ago-construcciones.com/prueba.php'; //la URL donde esta publicado el formulario. SIN la barra al final

//HAY QUE LLAMAR A GRACIAS.PHP, PERO NO SÉ CÓMO
//$thank="gracias.php";
//header("Location: gracias.php");
//echo "<script language=Javascript> location.href=\"gracias.php\"; </script>";

//FIN CONFIGURACION
?>


<?PHP
//proceso del formulario
// si existe "enviar"...
if (isset ($_POST['enviar'])) {

// vamos a hacer uso de la clase phpmailer,
require("class.phpmailer.php");

$mail = new PHPMailer();

//autenticamos el SMTP
$mail->IsSMTP();
$mail->Mailer = "smtp";
$mail->SMTPAuth = true;
$mail->Mailer = "smtp";
$mail->Host = "mail.dxmedia.net"; //Localhost
$mail->Username = "[email protected]";
$mail->Password = "cobain";



//recogemos las variables y configuramos PHPMailer
$mail->From = $_POST['email'];
$mail->FromName = $_POST['nombre'];
$mail->AddAddress($direccion_envio);
$mail->Subject = "Formulario de Contacto de Ago-Construcciones - Castellano";
$mail->AddReplyTo($_POST['email'],$_POST['nombre']);
$mail->IsHTML(true);
$mail->CharSet="UTF-8";
$empresa=$_POST['empresa'];
$poblacion=$_POST['poblacion'];
$telefono=$_POST['telefono'];
$comentario=$_POST['comentario'];
$reforma_de_oficina=$_POST['reforma_de_oficina'];
$reforma_de_optica=$_POST['reforma_de_optica'];
$reforma_de_farmacia=$_POST['reforma_de_farmacia'];
$reforma_local_comercial=$_POST['reforma_local_comercial'];
$reforma_nave_industrial=$_POST['reforma_nave_industrial'];
$construccion_general=$_POST['construccion_general'];


//comprobamos si todos los campos fueron completados
if ($_POST['email']!='' && $_POST['nombre']!='' && $_POST['telefono']!='' && $_POST['comentario']!='') {


//armamos el html
$contenido = '<html><body>';
$contenido .= '<h2>Formulario de Contacto de Ago-Construcciones - Castellano</h2>';
$contenido .= '<p>Enviado el '. date("d M Y").'</p>';
$contenido .= '<hr />';
$contenido .= '<p>Nombre: <strong>'.$_POST['nombre'].'</strong>';
$contenido .= '<p>Email: <strong>'.$_POST['email'].'</strong>';
$contenido .= '<p>Empresa: <strong>'.$empresa.'</strong>';
$contenido .= '<p>Telefono: <strong>'.$telefono.'</strong>';
$contenido .= '<p>Poblacion: <strong>'.$poblacion.'</strong>';
$contenido .= '<p>Comentario: <strong>'.$comentario.'</strong>';
$contenido .= '<hr />';
$contenido .= '<p><strong>ESTOY INTERESADO EN LOS SIGUIENTES SECTORES:</strong></p>';
$contenido .= '<p>Reforma de oficina: <strong>'.$reforma_de_oficina.'</strong>';
$contenido .= '<p>Reforma de optica: <strong>'.$reforma_de_optica.'</strong>';
$contenido .= '<p>Reforma de farmacia: <strong>'.$reforma_de_farmacia.'</strong>';
$contenido .= '<p>Reforma de local comercial: <strong>'.$reforma_local_comercial.'</strong>';
$contenido .= '<p>Reforma de nave industrial: <strong>'.$reforma_nave_industrial.'</strong>';
$contenido .= '<p>Construccion general: <strong>'.$construccion_general.'</strong>';
$contenido .= '<hr />';
$contenido .= '</body></html>';


$mail->Body = $contenido;
//$mail->AddAttachment('archivos/'.$nuevonombre.'', $nuevonombre); // optional name
// si todos los campos fueron completados enviamos el mail

$mail->Send();

$flag='ok';
$mensaje='<div id="ok" style="position:relative; left:60px; color:#ff0000; font-face:arial,helvetica,sans-serif">Gracias por contactar con nosotros. En breve nos pondremos en contacto con usted.</div>';
} else {

//si no todos los campos fueron completados se frena el envio y avisamos al usuario
$flag='err';
$mensaje='<div id="error" style="position:relative; left:60px; color:#ff0000; font-face:arial,helvetica,sans-serif">Los campos marcados (*) se han de rellenar correctamente.<br>'.$error_archivo.'</div>';

}
}


?>






<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>A.G.O. Acondicionamiento de Oficinas. Contacto.</title>
<link href="ago.css" rel="stylesheet" type="text/css"/>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>


</head>
<body>
<div id="cos">
<div id="fondo">

<div id="menu" style="height:780px"><img src="img/logo_AGO.jpg" alt="Logo de A.G.O. Gestión y ejecucion integral de obras y proyectos." title="A.G.O. Construcción, Reforma e Interiorismo de oficinas, locales comerciales, ópticas y naves industriales." border="0" usemap="#Map" />
<map name="Map" id="Map">
<area shape="rect" coords="10,5,183,96" title="A.G.O. Construcción, Reforma e Interiorismo de oficinas, locales comerciales, ópticas y naves industriales." href="index.html" />
</map></li>

</div>

<div id="cabecera_empresa">
<div id="idiomas" ><span id="idiomas-nolink">Castellano</span> | <a href="contactanos_ca.php">Català</a> | <a href="contactanos_en.php">English</a></div>
<div id="titulo_cabecera">GESTIÓN INTEGRAL DE OBRAS</div>
</div>

<div id="contenido" style="height:90px";>
<table cellpadding="0" cellspacing="0" width="800px" align="right" border="0">
<tr>
<td colspan=4 class="txt_contenido2">
<p>&nbsp;</p>
<h1>Contacto. Ayúdanos a informarte.</h1> </td>
</tr>
</table>
</div>

<div id="cuadro_clientes3" style="padding-left:210px;">
<? echo $mensaje; /*mostramos el estado de envio del form */ ?>
<? if ($flag!='ok') { ?>
<form action="<?php echo $PHP_SELF;?>" method="post" name="formulario" class="form">

<table cellpadding="0" cellspacing="0" width="590px" align="left" border="0">

<tr>
<td class="checkbox"><input type="checkbox" name="reforma_de_oficina" value="Interesado" /> <strong>Reforma de oficina</strong></td>
<td class="checkbox2"><input type="checkbox" name="reforma_de_optica" value="Interesado" /> <strong>Reforma de óptica</strong></td>
<td class="checkbox2"><input type="checkbox" name="reforma_de_farmacia" value="Interesado" /> <strong>Reforma de farmacia</strong></td>
<td>&nbsp; </td>
</tr>

<tr>
<td class="checkbox"><input type="checkbox" name="reforma_local_comercial" value="Interesado" /> <strong>Reforma local comercial</strong><br><br></td>
<td class="checkbox2"><input type="checkbox" name="reforma_nave_industrial" value="Interesado" /> <strong>Reforma nave industrial</strong><br><br></td>
<td class="checkbox2"><input type="checkbox" name="construccion_general" value="Interesado" /> <strong>Construcción general</strong><br><br></td>
<td>&nbsp; </td>
</tr>
</table>


<table cellpadding="0" cellspacing="0" width="575px" height="" align="left" border="0">
<tr>
<td class="checkbox" width="">*Nombre:</td>
<td class="checkbox2"> <input <? if (isset ($flag) && $_POST['nombre']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="nombre" value="<? echo $_POST['nombre'];?>" /></td>

<td class="checkbox3" width="" align="right">Empresa: &nbsp; &nbsp;</td>
<td class="checkbox2"><input name="empresa" type="text"></td>
</tr>

<tr>
<td class="checkbox">*Teléfono:</td>
<td class="checkbox2"> <input <? if (isset ($flag) && $_POST['telefono']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="telefono" value="<? echo $_POST['telefono'];?>" /></td>

<td class="checkbox3" align="right"> Población: &nbsp; </td>
<td class="checkbox2"><input name="poblacion" type="text" ></td>
</tr>

<tr>
<td class="checkbox">*Email:</td>
<td class="checkbox2"> <input <? if (isset ($flag) && $_POST['email']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="email" value="<? echo $_POST['email'];?>" /></td>

<td class="checkbox2"></td>
<td class="checkbox2"></td>
</tr>

<tr>
<td class="checkbox" valign="top">*Comentario:</td>
<td class="checkbox2" colspan="3"><textarea <? if (isset ($flag) && $_POST['comentario']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> name="comentario" type="text" rows="3" wrap="physical" style="width:420px;">
</textarea></td>
</tr>

<tr>
<td class="checkbox" valign="top">*obligatorio</td>
<td class="checkbox2" colspan="3" valign="top" style="text-align:right;"><input class="boto" type="submit" name="enviar" value=" &nbsp; Enviar &nbsp; "> &nbsp; &nbsp; &nbsp;

</form>

<? } ?>

</td>
</tr>
</table>


<!-- end form-->


</div>


</div>
</div>

</body>
</html>

Última edición por jorgejorge; 24/09/2012 a las 14:41
  #8 (permalink)  
Antiguo 24/09/2012, 14:44
 
Fecha de Ingreso: diciembre-2006
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: phpmailer: página de gracias

Por cierto, le he cambiado el nombre a la página, ahora es www.ago-construcciones.com/prueba.php
  #9 (permalink)  
Antiguo 24/09/2012, 15:15
Avatar de anewryzm  
Fecha de Ingreso: septiembre-2011
Mensajes: 47
Antigüedad: 12 años, 7 meses
Puntos: 7
Respuesta: phpmailer: página de gracias

Si tienes todo el código en una página no te va a funcionar. Envialo a otra página.
Ejemplo:

formulario.php
// al enviar el formulario se dirige a:
correo.php
// en correo.php está el script del php-mailer
// Al final del código de php-mailer colocas o bien el "header" o el "alert" con el
// window.location. redireccionando a:

gracias.php
__________________
@Anewryzm
  #10 (permalink)  
Antiguo 24/09/2012, 17:42
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 5 meses
Puntos: 18
Respuesta: phpmailer: página de gracias

Hola

Adonde estas colocando el header?

Trata con esta solucion

Cita:
$flag='ok';
?>
<SCRIPT LANGUAGE="javascript">
location.href = "gracias.php";
</SCRIPT>
<?php
Si de plano no quiere hacerlo trata dividiendolo en varias paginas
  #11 (permalink)  
Antiguo 24/09/2012, 18:05
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 12 años
Puntos: 9
Respuesta: phpmailer: página de gracias

Hola que tal, mira pasate por este post que hice:

aqui

y ahi esta la respuesta, mas especifico en el paso 3 al final del codigo viene algo asi

echo "<script language=Javascript> location.href=\"sugerencias_enviadas.html\"; </script>";

que en vez de sugerencias enviadas.html iria tu pagina de gracias

Espero que sea lo que buscas
  #12 (permalink)  
Antiguo 25/09/2012, 03:41
 
Fecha de Ingreso: diciembre-2006
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: phpmailer: página de gracias

Gracias, anewryzm, echaré un vistazo a tu pista.
Nestornoe: con el javascript, no puedo entrar en la página del formulario, se va automáticamente a la de gracias.php. Para evitarlo, he puesto un header("Location: gracias.php"); tras un "if", de manera que sólo vaya después de un "send" correcto. Así consigo que se envíe el mensaje, pero no me va a gracias. Me dice: Warning: Cannot modify header information" Seguiré investigando, veo que ésto es más difícil de lo que pensaba. Gracias a todos.
  #13 (permalink)  
Antiguo 25/09/2012, 16:31
 
Fecha de Ingreso: diciembre-2006
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: phpmailer: página de gracias

Al final he adoptado la propuesta de flashmax y de chuntaro18 y ha funcionado!!
Había que ponerlo en el sitio correcto: después del Send, y una vez se ha visto que no hay ningún fallo.

$mail->Send();
$flag='ok';
echo "<script language=Javascript> location.href=\"gracias.php\"; </script>";

Gracias a todos, sóis unos fenómenos!!

Etiquetas: gracias, página, páginaok, phpmailer
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 01:01.