Ver Mensaje Individual
  #7 (permalink)  
Antiguo 18/07/2013, 00:10
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problema con recaptcha y paso de variables POST

Archivo index.php (segunda parte)

Código PHP:
Ver original
  1. <p align="center">
  2. <?php unset($_POST['enviar']) ?>
  3. <form name="volver" action="" method="post" />
  4. <?php
  5. //Preparamos el contenido del formulario de retorno para que no sea necesario
  6. //volver a completar los campos que estén completos y correctos
  7. foreach($_POST as $campo=>$valor)
  8. {
  9. //Aquí los campos que no nos interesa que se recuperen
  10. //El valor del botón de envío o de control no nos interesa
  11. if ($campo != "enviar") {
  12. ?>
  13. <input type="hidden" id="<?php echo $campo ?>" name="<?php echo $campo ?>" value="<?php echo $valor ?>" /><?php echo "\n"; ?>
  14. <?php
  15.     }
  16. }
  17. ?>
  18.  
  19. <input type="submit" id="volver" name="volver" id="volver" value="Volver" />
  20. </form>
  21. </p>
  22.  
  23. </div>
  24. </div>
  25. <?php
  26.  
  27. } elseif (empty($error)) {
  28. //#####################################################################
  29. //FIN DE PÁGINA QUE SE MUESTRA SI FALTA ALGÚN CAMPO DEL FORMULARIO
  30. //#####################################################################
  31.  
  32. $fecha_nac = $anio."-".$mes."-".$dia;
  33. $fecha_inscripcion = ahora();
  34. $hash = md5($email);
  35. $registro = md5(time().$email.date());
  36.  
  37. //Inserto nuevos datos en la tabla comerciales
  38. //con los datos que me trae el formulario          
  39.  
  40. //Array con los datos del usuario
  41. $datos_comercial = array(
  42.                         "nombre" => "$nombre",
  43.                         "apellidos" => "$apellidos",
  44.                         "nif" => "$nif",
  45.                         "email" => "$email",
  46.                         "direccion" => "$direccion",
  47.                         "codigo_postal" => "$codigo_postal",
  48.                         "telefono_fijo" => "$telefono_fijo",
  49.                         "telefono_movil" => "$telefono_movil",
  50.                         "localidad" => "$localidad",
  51.                         "provincia" => "$provincia",
  52.                         "id_pais" => "$id_pais",
  53.                         "fecha_nac" => "$fecha_nac",
  54.                         "usuario" => "$usuario",
  55.                         "clave" => "$clave",
  56.                         "fecha_inscripcion" => "$fecha_inscripcion",
  57.                         "ip" => "$ip",
  58.                         "hash" => "$hash",
  59.                         "registro" => "$registro"
  60.                         );
  61.  
  62.  
  63.  
  64. //Operación de actualización
  65. $id_comerc = $db->insert($tabla_usuarios, $datos_comercial);
  66.  
  67. unset($enviar);
  68.  
  69. $url = PAGINA_BASE;
  70. $email_sistema = EMAIL_SISTEMA;
  71. $email_clave = CLAVE_EMAIL_ENVIO;
  72. $email_envio = EMAIL_ENVIO;
  73. $nombre_envio = NOMBRE_ENVIO;
  74. $email_respuesta = EMAIL_RESPUESTA;
  75. $nombre_respuesta = NOMBRE_RESPUESTA;
  76.  
  77.  
  78. //Definimos los encabezados de los correos (doctype, charset, estilos, etc.)
  79.       $encabezados = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"><html>\n<head>\n
  80.                <meta http-equiv=Content-Type content=\"text/html; charset=iso-8859-1\">\n<style type=\"text/css\">\n
  81.                 BODY {background: #FFFFFF; font-family: verdana; font-size: 10pt; color: #000000; margin-left: 30px; margin-top: 20px; margin-right: 30px; margin-bottom: 10px;}\n
  82.                table {background: #FFFFFF; font-family: verdana; font-size: 10pt; color: #000000;}\n
  83.                td {background: #FFFFFF; font-family: verdana; font-size: 10pt; color: #000000;}\n
  84.                a:link {text-decoration: none; color: #0000FF;}\n
  85.                a:hover {text-decoration: underline; color: #FF0000;}\n
  86.                a:visited {text-decoration: none; color: #0000FF;}\n
  87.                a:active {text-decoration: underline; color: #FF0000;}\n
  88.                .sangrado {text-indent: 35pt; text-align: justify;}\n
  89.                .sinsangria {text-align: justify;}\n
  90.                .dcha {text-align: right;}\n
  91.                .centro {text-align: center;}\n
  92.                .margen {margin-left: 80pt; text-align: justify;}\n
  93.                .margenpq {margin-left: 35pt; text-align: justify;}\n
  94.                .avisonorm {color: #CC0000; font-weight: bold;}\n
  95.                </style>\n</head>\n<body>\n";
  96.  
  97.  
  98.       //pasamos a enviar el correo
  99.  
  100.       // primero hay que incluir la clase phpmailer para poder instanciar
  101.       //un objeto de la misma
  102.       require INCLUDES."class.phpmailer.php";
  103.  
  104.       //instanciamos un objeto de la clase phpmailer al que llamamos
  105.       //por ejemplo mail
  106.       $mail = new phpmailer();
  107.  
  108.       //Definimos las propiedades y llamamos a los métodos
  109.       //correspondientes del objeto mail
  110.  
  111.       //Con PluginDir le indicamos a la clase phpmailer donde se
  112.       //encuentra la clase smtp que como he comentado al principio de
  113.       //este ejemplo va a estar en el subdirectorio includes
  114.       $mail->PluginDir = INCLUDES;
  115.  
  116.       $mail->SetLanguage("es");
  117.      
  118.       //Con la propiedad Mailer le indicamos que vamos a usar un
  119.       //servidor smtp                            
  120.       $mail->Mailer = "smtp";
  121.  
  122.       //Asignamos a Host el nombre de nuestro servidor smtp
  123.       $mail->Host = "localhost";
  124.      
  125.       //Le indicamos que el servidor smtp requiere autenticación
  126.       $mail->SMTPAuth = true;
  127.  
  128.       //Le decimos cual es nuestro nombre de usuario y password
  129.       $mail->Username = $email_sistema;
  130.       $mail->Password = $email_clave;
  131.      
  132.       //Indicamos cual es nuestra dirección de correo y el nombre que
  133.       //queremos que vea el usuario que lee nuestro correo
  134.       $mail->From = $email_sistema;
  135.  
  136.       $mail->FromName = $nombre_envio;
  137.      
  138.       //Preparamos el contenido del mensaje
  139.               $msg = $encabezados;
  140.               $msg .= "<p class=\"centro avisonorm\">Este mensaje se envía desde una cuenta de correo no monitorizada, por lo que si respondes a él, no será leído y no podrás obtener respuesta.</p>\n";
  141.               $msg .= "<p class=\"sinsangria\">Hola ".$nombre.",</p>";
  142.               $msg .= "<p class=\"sangrado\">";
  143.               $msg .= "Para verificar tu e-mail debes acceder a la siguiente URL, si no te funciona haciendo click sobre ella, cópiala y pégala en tu navegador:";
  144.               $msg .= "</p>";
  145.               $msg .= "<p class=\"centro\">";
  146.               $msg .= "<a target=\"_blank\" href=\"". $url."validar.php?v=".$registro."\">". $url."validar.php?v=".$registro."</a></p>";
  147.  
  148.               $msg .= "<p class=\"margenpq\">";
  149.               $msg .= "Un saludo,";
  150.               $msg .= "</p>";
  151.               $msg .= "<p class=\"margen\">";
  152.               $msg .= "<b>".$nombre_respuesta."</b>";
  153.               $msg .= "</p>";
  154.  
  155.  
  156.               $msg_txt = "Este mensaje se envía desde una cuenta de correo no monitorizada, por lo que si respondes a él, no será leído y no podrás obtener respuesta.\n\n";
  157.               $msg_txt .= "Hola ".$nombre.",\n\n";
  158.               $msg_txt .= "Para verificar tu e-mail debes acceder a la siguiente URL, si no te funciona haciendo click sobre ella, cópiala y pégala en tu navegador:\n\n";
  159.               $msg_txt .= "URL de acceso:: ". $url."validar.php?v=".$registro."\n\n";
  160.  
  161.               $msg_txt .= "Un saludo,\n\n";
  162.               $msg_txt .= $nombre_respuesta;
  163.  
  164.       //Asignamos asunto y cuerpo del mensaje
  165.       //El cuerpo del mensaje lo ponemos en formato html
  166.       $mail->Subject = "Verificación de e-mail de ".$nombre." ".$apellidos."";
  167.       $mail->Body = $msg;
  168.  
  169.       //Definimos AltBody por si el destinatario del correo no admite
  170.       //email con formato html
  171.       $mail->AltBody = $msg_txt;
  172.  
  173.       //el valor por defecto 10 de Timeout es un poco escaso, por tanto lo pongo a 120  
  174.       $mail->Timeout=30;
  175.  
  176.       //Indicamos cuales son las direcciones de destino del correo y enviamos
  177.       //los mensajes
  178.     $mail->AddAddress($email,$nombre." ".$apellidos);
  179.     $mail->AddReplyTo($email_respuesta,$nombre_respuesta);
  180.  
  181.     //se envia el mensaje, si no ha habido problemas la variable $exito
  182.     //tendra el valor true
  183.     $exito = $mail->Send();
  184.  
  185.     //Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas
  186.     //como mucho para intentar enviar el mensaje, cada intento se hara 5
  187.     //segundos despues del anterior, para ello se usa la funcion sleep
  188.     $intentos=1;
  189.     while( (!$exito) && ($intentos<5) && ($mail->ErrorInfo!="SMTP Error: Data not accepted") ){
  190.        sleep(5);
  191.            //echo $mail->ErrorInfo;
  192.            $exito = $mail->Send();
  193.            $intentos=$intentos+1;              
  194.     }
  195.  
  196.     //La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
  197.     //attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho
  198.     //valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
  199.     if ( ($mail->ErrorInfo=="SMTP Error: Data not accepted") ) {
  200.        $exito=true;
  201.         }
  202.        
  203.     if(!$exito)
  204.     {
  205. ?>
  206. <p>&nbsp;</p>
  207. <p class="centro titulo">Problemas enviando correo electr&oacute;nico a <?php echo $email ?>
  208. <br/><?php echo $mail->ErrorInfo; ?></p>
  209.  
  210. <?php
  211.     }
  212.     else
  213.     {
  214. ?>
  215. <p>&nbsp;</p>
  216. <p class="centro titulo">Alta efectuada correctamente</p>
  217. <p align="center">Comprueba tu e-mail, habrás recibido un correo con un enlace de verificación, debes hacer click en el enlace para validar tu inscripción.</p>
  218.  
  219. <?php
  220.     }
  221.     // Borro las direcciones de destino establecidas anteriormente
  222.         $mail->ClearAddresses();
  223.  
  224. }
  225. }
  226. ?>
  227.  
  228. </body>
  229. </html>

Creo que aunque está todo configurado con variables y constantes (que se definen en includes/config.php) se entenderá tal como lo pongo, espero que así sea...

Cabe aclarar que, para lo referente al manejo de la base de datos, utilizo la librería para PHP 5 Spoon, la información para su uso la obtuve en esta web.

Espero que ahora sí esté todo más claro y me podáis echar un cable...

Gracias por anticipado.

.