Inicio > PHP > gilbert_fox > Problema con script php p/formulario de contacto

Problema con script php p/formulario de contacto

Experto:
Usuario:
Fecha: 06/07/2009
Valoración: (4,00 sobre 5) Categoría: PHP
18/05/2009
mauroartur, usuario preguntando en PHP
Usuario
Hola "gilbert_fox"
Primero,deseo agradecerte que me dediques un poco de tu valioso tiempo.
Espero que me puedas ayudar o aunque sea dar una idea de como solucionar este problemita:
diseñe mi web http://www.coaching.alojalo.info/
y el inconveniente surge cuando desde el formulario de contaco me envian el mail.
HASTA AHORA NO ME LLEGO NINGUNO DE TODOS LOS QUE ENVIE.
Averigue en varios foros y me digeron que tendria que modificar algo en el archivo php.
Lo intente pero todo lo que cambie fue para peor.
Este formulario de contacto (.fla + php) lo consegui en un foro.
 
Este es el script del php

<?php
/******************************************************************************/
/*  Copyright (©) 2005 Crop Chile                                             */
/*  EMail form Php                                                            */
/*  info@crop.cl                                                              */
/*                                                                            */
/*  Este script es gratuito, proporcionado por:                               */
/*  Crop Chile                                                                */
/*  Estudio de diseño                                                         */
/*  I + D En comunicación                                                     */
/*  http://www.crop.cl                                                        */
/*                                                                            */
/* Puede usarlo par distribuirlo libremente. No para su venta                 */
/*                                                                            */
/* Puede usarlo bajo su propia responsabilidad con fines personales o         */
/* comerciales.                                                               */
/* Crop Chile NO GARANTIZA, NI SE RESPONSABILIZA de los errores que           */
/* pudieran derivarse de su uso, o un uso indebido de este script             */
/* para SPAM o cualquier otra actividad delictiva.                            */
/*                                                                            */
/* Tan solo pedimos que no eliminen esta cabecera de comentarios del script   */
/* para usarlo.                                                               */
/*                                                                            */
/* Para que este script funcione correctamente su servidor tiene que          */
/* autorizar el uso de la funcion mail de PHP.                                */
/*                                                                            */
/* En caso de que el mail se envie con los campos vacios,                     */
/* solicite al webmaster de su servidor que ponga la funcion                  */
/* global_register del archivo php.ini en ON.                                 */
/*                                                                            */
/* Este script envia dos correos, uno de confirmación al remitente            */
/* en formato html y otro para control de recepcion tambien en formato        */
/* html y como una tabla muy facil de leer. En ambos incluye un numero de     */
/* control y la IP desde donde se mando.                                      */
/******************************************************************************/
{
$boundary = md5(time().rand(1,100));
//Generamos un numero de control usando un aleatorio sobre la hora
$fecha = date("d-M-y H:i");
//Creamos una funcion date para fechar los envios
//Creamos el contenido en html para enviarlo en forma de tabla para control
//de los envios a nuestro servidor
$content='
<html>
<head>
<title>Formulario de la web de crop</title>
</head>
<body link="/* CCCCCC" vlink="/* FFFFFF" alink="/* CC0033">
<table width="550" height="300" border="0" align="center">
<tr>
<th width="550" height="200">
<table width="550" height="300" border="0">
<tr>
<td width="550" height="20" align="center" valign="middle" bgcolor="/* 666666">
<p><font color="/* FFFFFF" size="-1" face="Verdana, Arial, Helvetica, sans-serif"><strong>Contenidos
              del formulario</strong></font></p>
</td>
</tr>
<tr>
<th width="550" height="280">
<table width="550" height="280" border="0">
<tr>
<td width="80" height="20" align="left" valign="middle" bgcolor="/* CCCCCC">
<p><font size="-2" face="Verdana, Arial, Helvetica, sans-serif">Nombre:</font></p>
</td>
<td width="470" height="20" align="left" valign="middle" bgcolor="/* 0099CC">
<p><font color="/* FFFFFF"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2">'.$Nombre.'</font></font></font></p>
</td>
</tr>
<tr>
<td width="80" height="20" align="left" valign="middle" bgcolor="/* CCCCCC">
<p><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2">Empresa:</font></font></p>
</td>
<td width="470" height="20" align="left" valign="middle" bgcolor="/* 0099CC">
<p><font color="/* FFFFFF"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2">'.$Empresa.'</font></font></font></p>
</td>
</tr>
<tr>
<td width="80" height="20" align="left" valign="middle" bgcolor="/* CCCCCC">
<p><font face="Georgia, Times New Roman, Times, serif"><font size="-2"><font face="Verdana, Arial, Helvetica, sans-serif">Correo:</font></font></font></p>
</td>
<td width="470" height="20" align="left" valign="middle" bgcolor="/* 0099CC">
<p><font color="/* FFFFFF"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2"><a href="'.$Email.'">'.$Email.'</a></font></font></font></p>
</td>
</tr>
<tr>
<td width="80" height="80" align="left" valign="top" bgcolor="/* CCCCCC">
<p><font face="Georgia, Times New Roman, Times, serif"><font size="-2"><font face="Verdana, Arial, Helvetica, sans-serif">Comentarios:</font></font></font></p>
</td>
<td width="470" height="80" align="left" valign="top" bgcolor="/* 0099CC">
<p><font color="/* FFFFFF"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2">'.$Comentarios.'</font></font></font></p>
</td>
</tr>
<tr>
<td width="80" height="80" align="left" valign="top" bgcolor="/* CCCCCC">
<p><font face="Georgia, Times New Roman, Times, serif"><font size="-2"><font face="Verdana, Arial, Helvetica, sans-serif">Opinion:</font></font></font></p>
</td>
<td width="470" height="80" align="left" valign="top" bgcolor="/* 0099CC">
<p><font color="/* FFFFFF"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2">'.$Opinion.'</font></font></font></p>
</td>
</tr>
<tr>
<td width="80" height="20" align="left" valign="middle" bgcolor="/* CCCCCC">
<p><font face="Georgia, Times New Roman, Times, serif"><font size="-2"><font face="Verdana, Arial, Helvetica, sans-serif">Fecha:</font></font></font></p>
</td>
<td width="470" height="20" align="left" valign="middle" bgcolor="/* 0099CC">
<p><font color="/* FFFFFF"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2">'.$fecha.'</font></font></font></p>
</td>
</tr>
<tr>
<td width="80" height="20" align="left" valign="middle" bgcolor="/* CCCCCC">
<p><font face="Georgia, Times New Roman, Times, serif"><font size="-2"><font face="Verdana, Arial, Helvetica, sans-serif">IP:</font></font></font></p>
</td>
<td width="470" height="20" align="left" valign="middle" bgcolor="/* 0099CC">
<p><font color="/* FFFFFF"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2">'.$REMOTE_ADDR.'</font></font></font></p>
</td>
</tr>
<tr>
<td width="80" height="20" align="left" valign="middle" bgcolor="/* CCCCCC">
<p><font face="Georgia, Times New Roman, Times, serif"><font size="-2" face="Verdana, Arial, Helvetica, sans-serif">Serie:</font></font></p>
</td>
<td width="470" height="20" align="left" valign="middle" bgcolor="/* 0099CC">
<p><font color="/* FFFFFF"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="-2">'.$boundary.'</font></font></font></p>
</td>
</tr>
</table>
</th>
       
</tr>
</table>
</th>
 
</tr>
</table>
</body>
</html>
';
//Y usamos la función mail indicando que envie el correo a nuestro servidor para control
//con el título Formulario de contacto el contenido html y tipo de texto UTF-8 para que
//los símbolos introducidos en los campos de flash sean legibles
//para terminar le damos el nombre del remitente puesto en el formulario y su dirección de correo.
//de aqui solo se tiene que cambiar buzon@tuservidor.tudomino y poner el correo donde se
//desean recibir los formularios, respetando los entrecomillados.
//es importante que pongas una dirección de correo valida en lugar de buzon@tuservidor.tudomino,
//si no el escript podria no enviar el correo
mail('info@tucoachh.com.ar', 'Formulario de contacto',$content,"MIME-Version: 1.0\nContent-type: text/html; charset=UTF-8\nFrom: $Nombre < $Email >");
//preparamos el mensaje de confirmación que le enviaremos al remitente.
$mensaje = '
<html>
<head>
<title>Confirmación de envio del formulario de la web Crop</title>
</head>
<body link="/* 666666" vlink="/* 999999" alink="/* CCCCCC">
<table width="495" height="320" border="0" align="center" background="http://www.tuservidor.com/Donde/Tengas/tusimagenes/fondo.gif">
<tr>
<td width="494" height="320" align="center" valign="top">
     
<table width="495" height="83" border="0">
<tr>
<td width="90" height="83"><img src="http://www.tuservidor.com/Donde/Tengas/tusimagenes/satelite.gif" width="90" height="83"></td>
<td width="114" height="83"><img src="http://www.tuservidor.com/Donde/Tengas/tusimagenes/nombre.gif" width="114" height="83"></td>
<td width="270" height="83">
           
<table width="270" height="86" border="0">
<tr>
<td width="270" height="51"> </td>
</tr>
<tr>
<td width="270" valign="top"><img src="http://www.tuservidor.com/Donde/Tengas/tusimagenes/barracorta.gif" width="270" height="9"></td>
</tr>
</table>
</td>
</tr>
</table>
<table width="495" height="228" border="0">
<tr>
<td width="91" height="201"> </td>
<td width="394" height="201"><font color="/* 0099CC" size="1" face="Verdana, Arial, Helvetica, sans-serif"><b>'.$Nombre.'</b>,
            gracias por sus comentarios.</font><br>
            <br> <font color="/* 999999" size="1" face="Verdana, Arial, Helvetica, sans-serif">Su
            correo ha sido recibido y será respondido con la mayor brevedad
            posible.<br>
            <br>
            Este correo confirma su envío efectuado desde nuestro formulario
            de contacto. </font><br> <font color="/* 999999" size="1" face="Verdana, Arial, Helvetica, sans-serif">Si
            recibe este correo por accidente, por favor, comuníquelo a
            nuestro <a href="mailto:info@tucoachh.com.ar">Administrador</a> de red.
            </font> <font color="/* 999999" size="1" face="Verdana, Arial, Helvetica, sans-serif"><br>
            <br>
            Si lo desea puede hacerlo a través de nuestro <a href="http://www.tucoachh.com.ar">formulario</a>
            de contacto.</font><br> <br> <font color="/* 999999" size="1" face="Verdana, Arial, Helvetica, sans-serif">Este
            formulario a sido enviado el '.$fecha.'.<br>
            Desde la IP: '.$REMOTE_ADDR.' <br>
            Numero de serie: '.$boundary.'</font></td>
</tr>
<tr>
<td width="91" height="27"> </td>
<td width="394" height="27"><img src="http://www.tuservidor.com/Donde/Tengas/tusimagenes/barralarga.gif" width="397" height="9"></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
';
//de este html podemos hacernos uno a nuestro gusto y reemplazarlo
//desde la etiqueta de apertura html hasta la de cierre respetando la comilla
//simple de apertura y la comilla simple de cierre y el punto y coma.
//Podremos reutilizar '.$Nombre.', para personalizar el mail asi como
//la IP, la fecha y por supuesto el numero de serie.
//Para poder usar el nombre la ip la fecha o el número de serie se tienen que
//poner '. .', o sea abrir con comilla simple y punto y cerrar con punto y comilla simple.
//asi en todos los casos '.$fecha.'
//De las lineas que estan debajo de esta tendremos que cambiar
//tubuzon@tuservidor.tudominio por la dirección de correo de tu servidor.
$cabeceras  = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$cabeceras .= 'From: Crop creativos < info@tucoachh.com.ar >' . "\r\n";
mail ("$Nombre < $Email >", "Su correo ha sido recibido",$mensaje,$cabeceras);
}
//es importante que pongas una dirección de correo valida en lugar de buzon@tuservidor.tudomino,
//si no el escript podria no enviar el correo.
//Y finalmente le enviamos a nuestro formulario flash la palabra que pondra en marcha
//la animacion que ira borrando los campos de texto y confirmará nuestro envio
//dejandonos en el boton repetir por si deseamos mandar otro.
//De aqui solo tenemos que tener en cuenta en que nivel o dentro de que clip hemos
//puesto nuestro formulario y cambiar la ruta si fuera preciso.
//Si cambiamos la palabra Enviando por otra lo tendremos que indicar en el sensor
//de nuestro formulario flash
//Y por ultimo tendremos que tener en cuenta donde se carga nuestro formulario en
//nuestro servidor y donde ponemos este php para que lo encuentre al pasarle las
//variables desde flash.
Print "_level0.formulario.EmailStatus=Enviando";
?>

_yo lo leo y comparo con otros script y me parece un poco rebuscado, no se si se puede simplificar. Lo único que quiero es recibir un mail convencional con los datos que ingresa el visitante de mi web.
Yo meti mano y siempre fue para peor. llevo una semana entera con este tema.
así que como te podras imaginar cualquier aporte que me puedas hacer me va ser de mucha utilidad.
Si te es util aui esta el fla+php: http://ifile.it/562dzwi
 
Desde ya te voy agradecer cuelquier consejo o modificación del script que me recomiendes.
saludos y gracias
18/05/2009
mauroartur, experto respondiendo en PHP
Experto
Hola Mauro!
Primero que nada encantado de poder ayudarte! Estuve observando muy rápidamente el script que estas utilizando para tu formulario de contacto y sinceramente para el propósito que le estas pensando dar es bastante superflua ya esta implementación. Antes de que te dé una respuesta definitiva quisiera saber si necesariamente necesitas que tu formulario esté en flash? porque mi recomendación particular es que lo hagas en código HTML+PHP nada mas y si cabe la posibilidad de hacerlo así me avisas que te preparo la solución completa y te la paso OK?
Saludos y espero tu respuesta!
Gilberto Ramos
19/05/2009
mauroartur, usuario preguntando en PHP
Usuario
estimado "gilbert_fox" disculpa que haya tardado en contestar .lo que pasó fue que no podia ingresar a la pagina. estuvo fuera de servicio un par de horas.
con respecto al formulario en html+php me parce muy interesante y si no es mucha molestia para ti acepto tu propuesta
desde ya te agradezco mucho por el tiempo que dedicas a n¡mi problema .
20/05/2009
mauroartur, experto respondiendo en PHP
Experto
<?php
if (isset($_POST['contacto']) and $_POST['contacto']=="enviar") {
    $nombre = $_POST['nombre'];
    $apellido = $_POST['apellido'];
    $email = $_POST['email'];
    $comentario = $_POST['comentario'];
    $recipiente = "correoDestino@servidorDeCorreo.com";
    $cabecera = "Contacto - Interbanco Tarjetas BE";
    $cabecera  = 'MIME-Version: 1.0' . "\r\n";
    $cabecera .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $cabecera .= 'From: Contacto desde la web <correoDestino@servidorDeCorreo.com>\r\n';
    $cabecera .= "Reply-To: ".$nombre." ".$apellido." <".$email.">\n";
    $cuerpo = "
<h2>Nueva Consulta
<h2>";
    $cuerpo .= "<strong>Nombre:</strong> ".$nombre."<br />";
    $cuerpo .= "<strong>Apellido:</strong> ".$apellido."<br />";
    $cuerpo .= "<strong>Correo Electronico:</strong> ".$email."<br />";
    $cuerpo .= "<br />";
    $cuerpo .= "<strong>Consulta:</strong> ".$comentario."<br />";
    @mail($recipiente, $cabecera, $cuerpo, $cabecera);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Contacto</title>
<script language="javascript">
            function chkForm () {
                var txtNombre = document.getElementById("txtNombre").value;
                var txtApellido = document.getElementById("txtApellido").value;
                var txtEmail = document.getElementById("txtEmail").value;
                var txtComentario = document.getElementById("txtComentario").value;
                var lbl_nombre = document.getElementById("lbl_nombre");
                var lbl_apellido = document.getElementById("lbl_apellido");
                var lbl_email = document.getElementById("lbl_email");
                var lbl_comentario = document.getElementById("lbl_comentario");
                if (txtNombre.length < 1) {
                    lbl_nombre.innerHTML = "Por favor, dinos tu nombre!";
                    return false;
                }else {
                    lbl_nombre.innerHTML = "";
                }
                if (txtApellido.length < 1) {
                    lbl_apellido.innerHTML = "Ya tenemos tu nombre, cual es tu apellido?";
                    return false;
                }else {
                    lbl_apellido.innerHTML = "";
                }
                if (txtEmail.length < 1){
                    lbl_email.innerHTML = "Escribe tu correo para contactarte!";
                    return false;
                }else {
                    lbl_email.innerHTML = "";
                }
                var regx = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
                if(regx.test(txtEmail) == false){
                    lbl_email.innerHTML = " Necesitamos un correo válido, por favor!";
                    return false;
                }else {
                    lbl_email.innerHTML = "";
                }
                if (txtComentario.length < 1){
                    lbl_comentario.innerHTML = "Háznos saber tu consulta!";
                    return false;
                }else {
                    lbl_comentario.innerHTML = "";
                }
            }
        </script>
</head>
<body>
<form name="formContacto" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" onsubmit="return chkForm();">
            
<table>
<tr>
<td><label for="txtNombre">Nombre</label></td>
<td><input name="nombre" type="text" id="txtNombre" /></td>
<td><span id="lbl_nombre"></span></td>
<tr>
<td><label for="txtApellido">Apellido</label></td>
<td><input name="apellido" type="text" id="txtApellido" /></td>
<td<span id="lbl_apellido"></span></td>
</tr>
<tr>
<td><label for="txtEmail">E-mail</label></td>
<td><input name="email" type="text" id="txtEmail" /></td>
<td><span id="lbl_email"></span></td>
</tr>
<tr>
<td><label for="txtComentario">Comentario</label></td>
<td><textarea name="comentario" id="txtComentario" cols="30" rows="30"></textarea></td>
<td><span id="lbl_comentario"></span></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="enviar" value="" class="enviar" /></td>
<td><input type="hidden" name="contacto" value="enviar" /></td>
</tr>
</table>
</form>
    
</body>
</html>

Bien, este es el script completo sin CSS (estilo). Lo único que tienes que hacer es cambiar la parte del '$recipiente' en el PHP y en la '$cabecera' donde dice 'correoDestino@...' por el correo donde recibirás los mails.
Saludos,
Gilberto Ramos
20/05/2009
mauroartur, experto respondiendo en PHP
Experto
Unas correcciones pequeñas pero solo en la parte visual básica. El script está todo correcto. Es en el último par de TR.

<tr>
<td><label for="txtComentario">Comentario</label></td>
<td><textarea name="comentario" id="txtComentario"></textarea></td>
<td><span id="lbl_comentario"></span></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="enviar" value="Enviar" class="enviar" /></td>
<td><input type="hidden" name="contacto" value="enviar" /></td>
</tr>
21/05/2009
mauroartur, usuario preguntando en PHP
Usuario
hola como estas "gibert_fox" subi el php que creaste (te estoy prfundamente agradecido por tomarte ese trabajo). Por supuesto realice los cambios que me remarcaste.
y me sucede que luego de apretar el boton enviar los campos completados no se borran por lo tanto (si mal no recuerdo en el fla al apretar "enviar" la accion de play debe :
_enviar el mail 
_borrar los campos completados y 
_debe aparecer el texto en azul debajo del logo "mensaje enviado" o algo así
y al revisar mi casilla de mail confirmo que no ha llegado ( van 3horas de espera)
una imgen vale más que mil palabras : http://i42.tinypic.com/15qckg6.jpg
No se si tu lo probaste y si o queres experimentar te dejo el link:
http://www.coaching.alojalo.info/
21/05/2009
mauroartur, experto respondiendo en PHP
Experto
te cuento que el código que yo te pase era para que reemplazaras por completo tu página por el código.. porque el PHP que te pase está adaptado exclusivamente para el resto del HTML de abajo. Como te dije antes, si copiaras y pegaras completamente el código que te pase arriba en tu archivo index.php tendrías el resultado que esperabas. Ya lo único que quedaría era que ajustes según tus gustos el estilo osea la apariencia que quieres darle.
Este script ya es completo. No necesitas el flash con el.
21/05/2009
mauroartur, usuario preguntando en PHP
Usuario
si tenes razón hice cualquier cosa ahora reemplazo todo y te comento
saludos
01/07/2009
mauroartur, experto respondiendo en PHP
Experto
Excelente!
06/07/2009
mauroartur, usuario preguntando en PHP
Usuario
Muy Bien. Me ha sido de gran utilidad
Enlaces patrocinados