Foros del Web » Programando para Internet » PHP »

Problema con recaptcha y paso de variables POST

Estas en el tema de Problema con recaptcha y paso de variables POST en el foro de PHP en Foros del Web. Hola de nuevo, Por más que he buscado por todas partes, no he encontrado nada que me ayude a resolver este problema, es el siguiente: ...
  #1 (permalink)  
Antiguo 17/07/2013, 01:07
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 4 meses
Puntos: 154
Problema con recaptcha y paso de variables POST

Hola de nuevo,

Por más que he buscado por todas partes, no he encontrado nada que me ayude a resolver este problema, es el siguiente:

Tengo el típico formulario de registro y quiero usar el sistema recaptcha que ofrece Google, ya sé que hay otros, pero como ese es el que utilizo habitualmente y me gusta como funciona, prefiero seguir usándolo. El problema es que no me envía las variables por POST como debería hacer, pongo aquí la parte del form donde está el captcha y la manera que utilizo para comprobar lo que se envía:

La parte del formulario:

Código PHP:
Ver original
  1. [...]
  2. <tr>
  3. <td>Escribe las palabras de la imagen:</td>
  4. <td>
  5. <?php
  6. //escribimos en la página lo que nos devuelve recaptcha_get_html()
  7. echo recaptcha_get_html($captcha_publickey);
  8. ?>
  9. </td>
  10. </tr>
  11. <tr>
  12. <td align="center" colspan="2"><input type="submit" name="grabar" value="Inscribir"></td>
  13. </form>

La parte del script que recoge las variables:

Código PHP:
Ver original
  1. <?php
  2. foreach($_POST as $campo=>$valor)
  3. {
  4. //Aquí los campos que no nos interesa que se recuperen
  5. //El valor del botón de envío o de control no nos interesa
  6. if ($campo != "grabar") {
  7. ?>
  8. <b>Campo</b>: <?php echo $campo ?> <b>Valor</b>: <?php echo $valor ?><br>
  9. <?php
  10.     }
  11. }
  12. ?>

Lo más extraño es que en IE8 sí se envían, pero en el resto de navegadores no.

¿Alguien sabe qué es lo que puede estar ocurriendo?

Agradeceré cualquier ayuda, ya que estoy completamente perdido en este sentido.

.
  #2 (permalink)  
Antiguo 17/07/2013, 06:55
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 4 meses
Puntos: 154
Respuesta: Problema con recaptcha y paso de variables POST

Hola de nuevo,

¿Alguien que me pueda echar una mano? No sé, algún brujo, adivino, medium...

Es que esto es de locos...

Gracias por anticipado a quien me pueda ayudar.

.
  #3 (permalink)  
Antiguo 17/07/2013, 15:12
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 4 meses
Puntos: 154
Respuesta: Problema con recaptcha y paso de variables POST

Hola...

Es muy extraño que nadie me pueda ayudar... siempre ha habido alguien que ha podido dar alguna idea o alguna solución...

Sé que es difícil y raro esto que me ocurre pero con la cantidad de expertos que tenemos por aquí, estoy convencido de que alguien tiene que poder echarme un cable...

A ver si hay suerte...
  #4 (permalink)  
Antiguo 17/07/2013, 17:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con recaptcha y paso de variables POST

Pues sin ver el código completo está complicado adivinar, ciertamente si te funciona en IE pero en algún otro navegador no entonces hay algo raro ahí.

Leer tu mente no podemos, y con lo que muestras tampoco se alcanza a deducir nada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 18/07/2013, 00:09
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 4 meses
Puntos: 154
Respuesta: Problema con recaptcha y paso de variables POST

Gracias por tu respuesta, pateketrueke, tienes razón, es difícil leer la mente

EL tema es que no hay mucho más que mostrar, es decir, si solo he puesto esto es para no llenar el post con código que, al fin y al cabo, no tiene mucho que ver con el tema en cuestión, son validaciones y demás, pero en fin, espero que me quepa todo, ahí va...

Archivo form.php

Código PHP:
Ver original
  1. <script type="text/javascript">
  2. var RecaptchaOptions = {
  3.    lang : 'es',
  4. };
  5. </script>
  6. <div align="center">
  7. <table border="0" cellpadding="0" style="border-collapse: collapse; background-color:#FFFFFF; width: 750px;">
  8. <tr>
  9. <td align="center" colspan="2">Registro</td>
  10. </tr>
  11. <tr>
  12. <form name="alta" id="alta" action="" method="post">
  13. <td>Nombre:</td>
  14. <td><input type="text" id="nombre" name="nombre" size="30" maxlength="70" value="<?php if (isset($_POST['nombre'])) { echo $_POST['nombre']; } ?>" tabindex="2"></td>
  15. </tr>
  16. <tr>
  17. <td>Apellidos:</td>
  18. <td><input type="text" id="apellidos" name="apellidos" size="50" maxlength="70" value="<?php if (isset($_POST['apellidos'])) { echo $_POST['apellidos']; } ?>" tabindex="3"></td>
  19. </tr>
  20. <tr>
  21. <td>N.I.F.:</td>
  22. <td><input type="text" id="nif" name="nif" size="10" maxlength="9" value="<?php if (isset($_POST['nif'])) { echo $_POST['nif']; } ?>" tabindex="4"></td>
  23. </tr>
  24. <tr>
  25. <td>E-mail:</td>
  26. <td><input type="text" id="email" name="email" size="50" maxlength="70" value="<?php if (isset($_POST['email'])) { echo $_POST['email']; } ?>" tabindex="5"></td>
  27. </tr>
  28. <tr>
  29. <td>Teléfono fijo:</td>
  30. <td><input type="text" id="telefono_fijo" name="telefono_fijo" size="12" maxlength="15" value="<?php if (isset($_POST['telefono_fijo'])) { echo $_POST['telefono_fijo']; } ?>" tabindex="6"></td>
  31. </tr>
  32. <tr>
  33. <td>Teléfono móvil:</td>
  34. <td><input type="text" id="telefono_movil" name="telefono_movil" size="12" maxlength="15" value="<?php if (isset($_POST['telefono_movil'])) { echo $_POST['telefono_movil']; } ?>" tabindex="7"></td>
  35. </tr>
  36. <tr>
  37. <td>Dirección:</td>
  38. <td><input type="text" id="direccion" name="direccion" size="60" maxlength="70" value="<?php if (isset($_POST['direccion'])) { echo $_POST['direccion']; } ?>" tabindex="8"></td>
  39. </tr>
  40. <tr>
  41. <td>Código Postal:</td>
  42. <td><input type="text" name="codigo_postal" size="5" maxlength="10" value="<?php if (isset($_POST['codigo_postal'])) { echo $_POST['codigo_postal']; } ?>" tabindex="9"></td>
  43. </tr>
  44. <tr>
  45. <td>Localidad:</td>
  46. <td><input type="text" id="localidad" name="localidad" size="40" maxlength="70" value="<?php if (isset($_POST['localidad'])) { echo $_POST['localidad']; } ?>" tabindex="10"></td>
  47. </tr>
  48. <tr>
  49. <td>Provincia:</td>
  50. <td><input type="text" id="provincia" name="provincia" size="30" maxlength="70" value="<?php if (isset($_POST['provincia'])) { echo $_POST['provincia']; } ?>" tabindex="11"></td>
  51. </tr>
  52. <tr>
  53. <td>País:</td>
  54. <td><select name="id_pais" class="select" tabindex="12">
  55. <option value=""><--- Elige una opción ---></option>
  56. <?
  57. for ( $i = 0; $i < count($paises); $i++ ) {
  58. ?>
  59. <option value="<? echo $paises[$i]['id_pais']; ?>"<?php if ( (isset($_POST['pais'])) && ($_POST['pais'] == $paises[$i]['id_pais']) ) { ?> selected<?php } elseif ( (!isset($_POST['pais'])) ) { $_POST['pais'] = 62; ?> selected<?php } ?>><? echo str_replace( '&', '&amp;', $paises[$i]['nombre_pais'] ); ?>
  60. </option>
  61. <?
  62. }
  63. ?>
  64.  
  65. </select>
  66. </td>
  67. </tr>
  68. <tr>
  69. <td>Fecha de nacimiento:</td>
  70. <td><select name="dia" class="select" tabindex="13">
  71. <option value="">--</option>
  72. <?php
  73. $d = date('d');
  74. for ($i=1; $i<=31; $i++) {
  75. if ($i<10) $i = "0".$i;
  76. ?>
  77. <option value="<?php echo $i ?>"<?php if ( (isset($_POST['dia'])) && ($_POST['dia'] == $i) ) { ?> selected<?php } ?>><?php echo $i ?></option>
  78. <?php
  79. }
  80. ?>
  81. </select>&nbsp;
  82. <select name="mes" tabindex="14" class="select">
  83. <option value="">--</option>
  84. <?php
  85. $m = date('m');
  86. for ($i=1; $i<=12; $i++) {
  87. if ($i<10) $i = "0".$i;
  88. ?>
  89. <option value="<?php echo $i ?>"<?php if ( (isset($_POST['mes'])) && ($_POST['mes'] == $i) ) { ?> selected<?php } ?>><?php echo $i ?></option>
  90. <?php
  91. }
  92. ?>
  93. </select>&nbsp;
  94. <select name="anio" tabindex="15" class="select">
  95. <option value="">----</option>
  96. <?php
  97. $a = date('Y');
  98. $b = $a-65;
  99. $c = date('Y')-16;
  100. for ($i=$c; $i>=$b; $i--) {
  101. ?>
  102. <option value="<?php echo $i ?>"<?php if ( (isset($_POST['anio'])) && ($_POST['anio'] == $i) ) { ?> selected<?php } ?>><?php echo $i ?></option>
  103. <?php
  104. }
  105. ?>
  106. </select>
  107. </td>
  108. </tr>
  109. <tr>
  110. <td>Usuario:</td>
  111. <td><input type="text" id="usuario" name="usuario" size="10" maxlength="20" value="<?php if (isset($_POST['usuario'])) { echo $_POST['usuario']; } ?>" tabindex="16"></td>
  112. </tr>
  113. <tr>
  114. <td>Clave:</td>
  115. <td><input type="password" id="clave" name="clave" size="10" maxlength="20" value="<?php if (isset($_POST['clave'])) { echo $_POST['clave']; } ?>" tabindex="17"></td>
  116. </tr>
  117. <tr>
  118. <td>Escribe las palabras de la imagen:</td>
  119. <td>
  120. <?php
  121. //escribimos en la página lo que nos devuelve recaptcha_get_html()
  122. echo recaptcha_get_html($captcha_publickey);
  123. ?>
  124. </td>
  125. </tr>
  126. <tr>
  127. <td align="center" colspan="2"><input type="submit" name="grabar" value="Inscribir" tabindex="19"></td>
  128. </form>
  129. </tr>
  130. </table>
  131. </div>

Sigo en otro post porque no me cabe todo en uno...
  #6 (permalink)  
Antiguo 18/07/2013, 00:09
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 4 meses
Puntos: 154
Respuesta: Problema con recaptcha y paso de variables POST

Archivo index.php (primera parte)

Código PHP:
Ver original
  1. <?php
  2. require_once ("includes/config.php"); // incluir configuracion.
  3. require_once (INCLUDES ."funciones.php"); // incluir funciones.
  4. require_once (INCLUDES ."tablas.php"); // incluir tablas de la base de datos.
  5. require_once (INCLUDES ."recaptchalib.php");
  6.  
  7. //Llaves de la captcha
  8. $captcha_publickey = "6Lcnx-QSAAAAAEpitsHdBmV4wAcv5Gmp6x6Bznk7";
  9. $captcha_privatekey = "6Lcnx-QSAAAAAJydP4J2I22VcYX3cvCwrLV3I08Q";
  10.  
  11. //creo una conexión con la base de datos
  12. $db = new SpoonDatabase(CONTROLADOR, SERVIDOR, USUARIO, CLAVE, BASE_DATOS);
  13.  
  14.  
  15. require_once (INCLUDES ."header_uno.php");
  16.  
  17.  
  18. ?>
  19. <title>Registro</title>
  20. <?php
  21.  
  22. require_once (INCLUDES ."header_dos.php");
  23.  
  24. //Grabamos los países de la tabla en un array, para mostrarlos en el formulario
  25. $paises = $db->getRecords("SELECT id_pais, nombre_pais FROM ".$tabla_paises);
  26.  
  27. // SI LA VARIABLE DE CONTROL $grabar NO ESTA O NO ES IGUAL A 1... INCLUIMOS EL FORMULARIO
  28. if ( (!isset($_POST['grabar'])) || ($_POST['grabar'] != "Inscribir") ) {
  29.  
  30. include_once (INCLUDES."form.php");
  31.  
  32. //UNA VEZ ENVIADO, LO PROCESAMOS
  33. //SABEMOS QUE ESTÁ ENVIADO PORQUE LA VARIABLE DE CONTROL $grabar ESTA Y ES IGUAL A Inscribir
  34. } elseif ( (isset($_POST['enviar'])) && ($_POST['enviar'] == "1") && (isset($_POST['grabar'])) && ($_POST['grabar'] == "Inscribir") ) {
  35.  
  36. //########################################################
  37. // RECECPCIÓN DE VARIABLES DEL FORMULARIO DESDE LA WEB
  38. //########################################################
  39.  
  40. if ( (isset($_POST['nombre'])) && (!empty($_POST['nombre'])) ) {
  41. $nombre = stripslashes(trim(ucwords(strtolower(strip_tags($_POST['nombre'])))));
  42. }
  43. if ( (isset($_POST['apellidos'])) && (!empty($_POST['apellidos'])) ) {
  44. $apellidos = stripslashes(trim(ucwords(strtolower(strip_tags($_POST['apellidos'])))));
  45. }
  46. if ( (isset($_POST['nif'])) && (!empty($_POST['nif'])) ) {
  47. $nif = stripslashes(trim(ucwords(strip_tags($_POST['nif']))));
  48. }
  49. if ( (isset($_POST['email'])) && (!empty($_POST['email'])) ) {
  50. $email = stripslashes(trim(strtolower(strip_tags($_POST['email']))));
  51. }
  52. if ( (isset($_POST['direccion'])) && (!empty($_POST['direccion'])) ) {
  53. $direccion = stripslashes(trim(ucwords(strtolower(strip_tags($_POST['direccion'])))));
  54. }
  55. if ( (isset($_POST['codigo_postal'])) && (!empty($_POST['codigo_postal'])) ) {
  56. $codigo_postal = stripslashes(trim(strip_tags($_POST['codigo_postal'])));
  57. }
  58. if ( (isset($_POST['telefono_fijo'])) && (!empty($_POST['telefono_fijo'])) ) {
  59. $telefono_fijo = stripslashes(trim(strip_tags($_POST['telefono_fijo'])));
  60. }
  61. if ( (isset($_POST['telefono_movil'])) && (!empty($_POST['telefono_movil'])) ) {
  62. $telefono_movil = stripslashes(trim(strip_tags($_POST['telefono_movil'])));
  63. }
  64. if ( (isset($_POST['localidad'])) && (!empty($_POST['localidad'])) ) {
  65. $localidad = stripslashes(trim(ucwords(strtolower(strip_tags($_POST['localidad'])))));
  66. }
  67. if ( (isset($_POST['provincia'])) && (!empty($_POST['provincia'])) ) {
  68. $provincia = stripslashes(trim(ucwords(strtolower(strip_tags($_POST['provincia'])))));
  69. }
  70. if ( (isset($_POST['id_pais'])) && (!empty($_POST['id_pais'])) ) {
  71. $id_pais = stripslashes(trim(strip_tags($_POST['id_pais'])));
  72. }
  73. if ( (isset($_POST['dia'])) && (!empty($_POST['dia'])) ) {
  74. $dia = trim(htmlentities(strip_tags($_POST['dia'])));
  75. }
  76. if ( (isset($_POST['mes'])) && (!empty($_POST['mes'])) ) {
  77. $mes = trim(htmlentities(strip_tags($_POST['mes'])));
  78. }
  79. if ( (isset($_POST['anio'])) && (!empty($_POST['anio'])) ) {
  80. $anio = trim(htmlentities(strip_tags($_POST['anio'])));
  81. }
  82. if ( (isset($_POST['usuario'])) && (!empty($_POST['usuario'])) ) {
  83. $usuario = stripslashes(trim(strip_tags($_POST['usuario'])));
  84. }
  85. if ( (isset($_POST['clave'])) && (!empty($_POST['clave'])) ) {
  86. $clave = stripslashes(trim(strip_tags($_POST['clave'])));
  87. }
  88.  
  89. //#####################################################################
  90. //VALIDACIONES DE LOS DATOS RECIBIDOS DEL FORMULARIO
  91. //#####################################################################
  92.  
  93. $error = "";
  94.  
  95. //Validaciones de rellenado del formulario
  96. if (empty($nombre))                 $error .= "<li class='junto normal'>No se ha completado el campo &quot;Nombre&quot;</li>";
  97.  
  98. if (empty($apellidos))              $error .= "<li class='junto normal'>No se ha completado el campo &quot;Apellidos&quot;</li>";
  99.  
  100. if (empty($nif))                $error .= "<li class='junto normal'>No se ha completado el campo &quot;N.I.F.&quot;</li>";
  101.  
  102. if (empty($email))              $error .= "<li class='junto normal'>No se ha completado el campo &quot;E-mail&quot;</li>";
  103.  
  104. if (!empty($email)) {
  105.  
  106. if (validar_email($email)==FALSE)   $error .= "<li class='junto'>El e-mail introducido no es una direcci&oacute;n de e-mail v&aacute;lida.</li>\n"; }
  107.  
  108. if (!empty($email) && (validar_email($email)!=FALSE)) {
  109.  
  110.       //Comprobamos si el e-mail existe en la base de datos
  111.       $comprueba_email = $db->getRecord("SELECT email FROM ".$tabla_usuarios." WHERE email=?", $email);
  112.      
  113.       if (!empty($comprueba_email))             $error .= "<li class='junto'>El e-mail introducido ya est&aacute; en uso</li>\n";
  114.  
  115.       } //Si no existe, seguimos con las validaciones
  116.  
  117. if (empty($telefono_fijo))              $error .= "<li class='junto normal'>No se ha completado el campo &quot;Teléfono fijo&quot;</li>";
  118.  
  119. if (empty($telefono_movil))                 $error .= "<li class='junto normal'>No se ha completado el campo &quot;Teléfono móvil&quot;</li>";
  120.  
  121. if (empty($direccion))              $error .= "<li class='junto normal'>No se ha completado el campo &quot;Dirección&quot;</li>";
  122.  
  123. if (empty($codigo_postal))              $error .= "<li class='junto normal'>No se ha completado el campo &quot;Código Postal&quot;</li>";
  124.  
  125. if (empty($localidad))              $error .= "<li class='junto normal'>No se ha completado el campo &quot;Localidad&quot;</li>";
  126.  
  127. if (empty($provincia))              $error .= "<li class='junto normal'>No se ha completado el campo &quot;Provincia&quot;</li>";
  128.  
  129. if (empty($id_pais))                $error .= "<li class='junto normal'>No se ha seleccionado el campo &quot;País&quot;</li>";
  130.  
  131. if (empty($dia) || empty($mes) || empty($anio))         $error .= "<li class='junto normal'>Es necesario completar todos los datos de la &quot;Fecha de nacimiento&quot;</li>";
  132.  
  133.     if (!empty($dia)) {
  134.         if (!empty($mes)) {
  135.            if (Bisiesto($anio) == 0){ //Si el año en curso no es bisiesto
  136.             if (($mes == '02') && ($dia > 28))  $error .= "<li class='junto normal'>Febrero no puede tener más de 28 días</li>"; //Febrero no puede tener más de 28 días
  137.                         } else { //Si no, si el año en curso es bisiesto
  138.             if (($mes == '02') && ($dia > 29))  $error .= "<li class='junto normal'>Febrero no puede tener más de 29 días</li>"; //Febrero no puede tener más de 29 días
  139.                         }
  140.  
  141.             if (($mes == '04') && ($dia > 30))  $error .= "<li class='junto normal'>Abril no puede tener más de 30 días</li>";
  142.             if (($mes == '06') && ($dia > 30))  $error .= "<li class='junto normal'>Junio no puede tener más de 30 días</li>";
  143.             if (($mes == '09') && ($dia > 30))  $error .= "<li class='junto normal'>Septiembre no puede tener más de 30 días</li>";
  144.             if (($mes == '11') && ($dia > 30))  $error .= "<li class='junto normal'>Noviembre no puede tener más de 30 días</li>";
  145.         }
  146.     }
  147.  
  148. if (empty($usuario))                $error .= "<li class='junto normal'>No se ha completado el campo &quot;Usuario&quot;</li>";
  149.  
  150. if ( !empty($usuario) ) {
  151.  
  152.       //Comprobamos si el e-mail existe en la base de datos
  153.       $comprueba_usuario = $db->getRecord("SELECT usuario FROM ".$tabla_usuarios." WHERE usuario=?", $usuario);
  154.      
  155.       if (!empty($comprueba_usuario))           $error .= "<li class='junto'>El usuario introducido ya est&aacute; en uso</li>\n";
  156.  
  157.       } //Si no existe, seguimos con las validaciones
  158.  
  159. if (empty($clave))              $error .= "<li class='junto normal'>No se ha completado el campo &quot;Clave&quot;</li>";
  160.  
  161. if ( isset($_POST["recaptcha_response_field"]) ) {
  162. $captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
  163.                                              $HTTP_SERVER_VARS["REMOTE_ADDR"],
  164.                                              $_POST["recaptcha_challenge_field"],
  165.                                              $_POST["recaptcha_response_field"]);
  166.                                              
  167. if (!$captcha_respuesta->is_valid) {
  168.                     $error .= "<li class='junto'>Debes escribir correctamente las palabras de la imagen</li>";
  169.                     } else {
  170.                    
  171.                     $error .= "";}
  172.                     }
  173.  
  174. if (!empty($error)) {
  175.  
  176. ?>
  177. <?php
  178. //Comprobación de la recepción de los datos enviados por POST
  179. foreach($_POST as $campo=>$valor)
  180. {
  181. //Aquí los campos que no nos interesa que se recuperen
  182. //El valor del botón de envío o de control no nos interesa
  183. if ($campo != "grabar") {
  184. ?>
  185. <b>Campo</b>: <?php echo $campo ?> <b>Valor</b>: <?php echo $valor ?><br>
  186. <?php
  187.     }
  188. }
  189.  
  190. //#####################################################################
  191. //PÁGINA QUE SE MUESTRA SI FALTA ALGÚN CAMPO DEL FORMULARIO
  192. //#####################################################################
  193.  
  194. ?>
  195.  
  196. <div align="center">
  197. <div style="width: 600px;">
  198. <p align="center">No se puede realizar la operaci&oacute;n.</p>
  199.  
  200. <p align="center">Se han detectado los siguientes errores:</p>
  201.  
  202. <div align="left">
  203. <ul>
  204. <?php echo $error ?>
  205. </ul>
  206. </div>

Aún hay más...
  #7 (permalink)  
Antiguo 18/07/2013, 00:10
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 4 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.

.
  #8 (permalink)  
Antiguo 19/07/2013, 08:42
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 4 meses
Puntos: 154
Respuesta: Problema con recaptcha y paso de variables POST

Hola de nuevo...

Yo sigo por aquí sin encontrar la solución a este bendito problema...

pateketrueke, ya que hoy estás de buen humor, según se ve en tus certeras respuestas, ¿me puedes echar un cable?

Gracias por anticipado

.

Etiquetas: post, recaptcha, variables
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 11:28.