Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/08/2011, 09:50
Avatar de WebSalvador
WebSalvador
 
Fecha de Ingreso: agosto-2011
Ubicación: Lima - Perú
Mensajes: 171
Antigüedad: 13 años, 6 meses
Puntos: 2
Mejorar Formulario que retorna mensaje al usuario

Hola tengo un formulario aquí http://www.websalvador.com/ esta en el pie de página, trabaja con captcha, bueno el formulario trabaja bien solo que me han pedido algunas mejoras.

1º Me piden que en el mensaje que llega a la empresa se especifique el nº ip y el país de donde se envía el correo.

2º Me han pedido que se envié un mensaje al correo del usuario diciéndole que en breve le contestaremos a su consulta.

3º Al lado de captcha hay un botón que refresca el captcha, digamos que el usuario refresca tres veces el captcha, y después se equivoca en poner correctamente su correo, saldrá un mensaje que dirá que hay un error en la escritura del correo, pero como anteriormente refresco el captcha tres veces el mensaje se repetirá tres veces también.

El formulario funciona de la siguiente manera: los datos que se escriben en el formulario primeramente son validados por un archivo js "c-validar-formulario.js" (aquí para su descarga http://www.websalvador.com/captcha/c-validar-formulario.js), si esta ok los datos son enviados a un ajax que le permite validar el captcha "captcha/c-funciones-index.js" (aquí para su descarga http://www.websalvador.com/captcha/c-funciones-index.js), si el captcha esta ok entonces estos datos se envian al php que enviará el correo, este es mi código:
Código PHP:
<?
    session_start
();
    
    include(
"geoiploc.php");//Este archivo lo descargue que me permite por el ip saber el país
    
$direccion_ip $_SERVER['REMOTE_ADDR'];//obtengo el ip 
    
$ipcliente.=" ".$direccion_ip;
    
$paiscliente=getCountryFromIP($direccion_ip" NamE ");//determino el país
    
$correoclienteutf8_decode($_POST['Correo']);//correo del usuario
    
$email_principal     '[email protected]';
    
$email_secundarios     $correocliente;
    
error_reporting(0);
    include(
"class/captchaZDR.php");
    
$eol="\r\n";
    
$enter="<br />";
    
$capt = new captchaZDR;
    
    if(isset(
$_POST['Submit']) and $capt->check_result()){        
        
$message_send "En breve daremos respuesta a su consulta".$enter.$enter.$enter.
        
"Mensaje enviado".$enter."------------------".$enter.$enter.      
        
"Nombre: ".utf8_decode($_POST['Nombre']).$enter.
        
"E-mail: ".utf8_decode($_POST['Correo']).$enter.
        
"Telefono: ".utf8_decode($_POST['Telefono']).$enter.
        
"Ip: ".utf8_decode($ipcliente).$enter.
        
"Pa&iacute;s: ".utf8_decode($paiscliente).$enter.
        
"Url Web: ".utf8_decode($_POST['Pagina']).$enter;
        
        
$headers .= 'From: '.utf8_decode($_POST['Nombre']).'<'.utf8_decode($_POST['Correo']).'>'.$eol;
        
$headers .= "CC: ".$email_secundarios.$eol;
        
$headers .= "Reply-To: ".$mail."".$eol;
        
$headers .= "Return-Path: ".$mail."".$eol;
        
$headers .= "Message-ID: <".time()."-".$para.">".$eol;
        
$headers .= "X-Mailer: PHP v".phpversion().$eol;
        
$headers .= "MIME-Version: 1.0".$eol;
        
$headers .= "Content-type: text/html; charset=iso-8859-1;".$eol.$eol;

        if(
mail($email_principal'SWS Studio Web Salvador' $message_send$headers))
            echo 
'<div style="color: white; font-size:12px">Gracias por sus comentarios.</div>';
        else 
            echo 
'<div style="color: red">Hubo un problema. Intentelo de nuevo.</div>';  
        } 
    
    else{if(isset(
$_POST['Submit']) and (!$capt->check_result()) ) 
        echo 
'<div style="color: red">Intente de nuevo. Actualizar</div>';
    }
?>
Ya pude resolver lo de determinar el ip y país del usuario como ven en mi código mediante "geoiploc.php" que lo pueden bajar de internet.

Para lo de enviar un mensaje al usuario, le envio el mensaje con CC, pero hay algo extraño, tal como esta mi código he probado que en mi correo de gmail llega a la bandeja principal y a hotmail a mi bandeja de spam, pero haciendo prueba si coloco una cuenta de hotmail directo así: $email_secundarios = '[email protected]'; Esto hace que el mensaje en hotmail llegue a la bandeja principal y en gmail como spam. Yo deseo que llegue en ambos casos a la bandeja principal, como puedo hacerlo, espero su ayuda aquí.

Ahora quisiera saber si de alguna manera puedo hacer que a la empresa le llegue el numero ip en el mensaje y al usuario no, si no se puede no hay problema.

Por ultimo no se como puedo hacer para que no me salga según el numero de refrescadas del captcha el mensaje de error que valida el cptcha puse los enlaces de descarga par que me den una mano.

Muchas gracias de antemano, gracias.

Última edición por WebSalvador; 03/08/2011 a las 09:58