Instalación de un captcha obligatorio

depaninf Mensajes publicados 154 Estado Miembro -  
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   -
Bonjour,

He estado recibiendo mucho spam desde la página de contacto de mi sitio durante un tiempo. Así que instalé un captcha, pero no he podido hacerlo obligatorio...

He leído bien las instrucciones, pero no logro hacerlo... necesitaría ayuda paso a paso.

Entre las dos etiquetas head he puesto la integración del lado del cliente:
<script src='https://www.google.com/recaptcha/api.js' async defer></script>

Y en el lugar donde quiero el captcha he puesto
<div class="g-recaptcha" data-sitekey="mi_clave_del_sitio"></div>


La integración del lado del servidor falta, pero no sé cómo hacerlo....

¿Alguien puede ayudarme? :)

Gracias

4 respuestas

  1. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
     
    Hola,

    Para comenzar, deberías mostrarnos el código completo de tu formulario.

    Luego, el código PHP que procesa los datos de este formulario.
    Puedes, de paso, hacer un
     print_r($_POST); 

    al principio de tu código PHP para ver qué te devuelve recaptcha en caso de buena o mala respuesta.

    Deberías tener una variable del tipo g-recaptcha-response.. es ella la que te permitirá saber si el usuario ha validado o no el captcha.

    --
    Atentamente,
    Jordane
    0
    1. depaninf Mensajes publicados 154 Estado Miembro 13
       
      Bonsoir Jordane y gracias por tu respuesta.

      No he entendido cómo hacer el
       print_r($_POST); 
      así que te envío el código completo de la página.

      En el lado de PHP no tengo ninguna línea con una variable como g-recaptcha-response. Tengo un carpeta bat que contiene rd-mailform.php y una carpeta phpmailer, dentro de la carpeta phpmailer tengo 4 archivos php: class.phpmailer; class.pop3; class.smtp y PHPMailerAutoload.
      ¿Cuál deberías enviarte?

      ¡Gracias de nuevo por tu ayuda!


      Aquí está el código de la página HTML:

      <!DOCTYPE html> <html lang="fr"> <html xmlns:og="http://ogp.me/ns#"> <head> <title>SOS Dépannage informatique: para contactarnos</title> <meta charset="utf-8"> <meta property="og:title" content="SOS Dépannage Informatique: reparación de computadores in situ en París y su región"> <meta property="og:locale" content="fr_FR"> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.sosdepaninformatique.com/"> <meta property="og:image" content="https://www.sosdepaninformatique.com/images/reseau2.jpg"> <meta property="og:site_name" content="SOS Dépannage Informatique"> <meta property="og:description" content="Reparación informática a domicilio y en el lugar para particulares, artesanos y empresas en París y en la región de París. 06 21 43 06 15 de lunes a sábado de 9h a 22h."> <meta property="og:image:alt" content="reparación informática en Créteil"> <meta property="fb:app_id" content="249991368794737"> <meta property="fb:admins" content="113574806021696"> <meta name="twitter:description" content=" Reparación informática a domicilio y en el lugar para particulares, artesanos y empresas en París y en la región de París. 06 21 43 06 15 de lunes a sábado de 9h a 22h."> <meta name="twitter:title" content=" SOS Dépannage Informatique: reparación de computadores in situ en París y su región"> <meta name="twitter:card" content="summary"> <meta name="format-detection" content="telephone=no"> <meta http-equiv="Content-Language" content="fr"> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <met <meta charset="utf-8"> <meta property="og:title" content="SOS Dépannage Informatique: reparación de computadores in situ en París y su región"> <meta property="og:locale" content="fr_FR"> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.sosdepaninformatique.com/"> <meta property="og:image" content="https://www.sosdepaninformatique.com/images/reseau2.jpg"> <meta property="og:site_name" content="SOS Dépannage Informatique"> <meta property="og:description" content="Reparación informática a domicilio y en el lugar para particulares, artesanos y empresas en París y en la región de París. 06 21 43 06 15 de lunes a sábado de 9h a 22h."> <meta property="og:image:alt" content="reparación informática en Créteil"> <meta property="fb:admins" content="113574806021696"> <meta name="twitter:card" content="summary"> <meta name="twitter:site" content="@SDI_Depan_info"> <meta name="twitter:title" content=" SOS Dépannage Informatique: reparación de computadores in situ en París y su región"> <meta name="twitter:description" content="Reparación informática a domicilio y en el lugar para particulares y empresas en París y en la región de París. 06 21 43 06 15."> <meta name="twitter:creator" content="@SOS Dépannage Info"> <meta name="twitter:image" content="https://www.sosdepaninformatique.com/images/reseau3.jpg"> <meta name="format-detection" content="telephone=no"> <meta http-equiv="Content-Language" content="fr"> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <meta content="text/html; charset=utf-8" http-equiv="content-type"> <meta name="title" content="SOS Dépannage Informatique : para contactarnos !"/> <meta name="description" content="Contacte a su reparador informático a domicilio y en el lugar para particulares y empresas en París y en la región de París. Asistencia informática."/> <meta name="keywords" content="reparación informática a domicilio, reparación de ordenador y PC en París, depannage pme artesanos empresas particulares, mantenimiento de redes y asistencia informática, contacto, dirección, correo, teléfono, plano de acceso, email, datos de contacto"/> <meta name="author" content="SOS Dépannage Informatique, reparación Créteil"/> <meta name="identifier-url" content="https://www.sosdepaninformatique.com"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <link rel="icon" href="images/favicon.ico" type="image/x-icon"> <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="stylesheet" href="css/mailform.css"/> <link rel="stylesheet" href="css/grid.css"> <link rel="stylesheet" href="css/style.css"> <link rel="canonical" href="https://www.sosdepaninformatique.com/"> <link rel="dns-prefetch" href="//ajax.googleapis.com"> <link rel="dns-prefetch" href="//www.sosdepaninformatique.com"> <link rel="dns-prefetch" href="//s.w.org"> <script src="js/jquery.js"></script> <script src="js/jquery-migrate-1.2.1.js"></script> <script src="js/device.min.js"></script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </head> <body> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-4195061-2', 'auto'); ga('send', 'pageview'); </script> </head> <body> <div class="page"> <!--======================================================== HEADER =========================================================--> <header> <div class="well"> <div class="container"> <div class="brand"> <span class="brand_name"> <a href="https://www.sosdepaninformatique.com/" title="Reparación informática in situ">SOS <span>Dépannage Informatique</span></a> </div> <div class="contacts"> <a href="tel:+33621430615" title="Llámanos">06 21 43 06 15</a> <dl> <dt>Horarios de apertura</dt> <dd>Lun-Sab 9:00 a 22:00</dd> </dl> </div> </div> </div> <div id="stuck_container" class="stuck_container"> <nav class="nav"> <div class="container"> <ul class="sf-menu" data-type="navbar"> <li class="active"> <a href="https://www.sosdepaninformatique.com/" title="Inicio SDI">Inicio</a> </li> <li> <a href="a-propos.html" title="Presentación SDI">Presentación</a> </li> <li> <a href="services.html" title="Nuestros servicios">Servicios</a> <ul> <li> <a href="services.html#depannage-courant" title="Mantenimiento informático">Reparación informática</a> </li> <li> <a href="services.html#reseaux" title="Redes y servidores informáticos">Redes y seguridad</a> </li> <li> <a href="services.html#formation" title="Formación en informática y Windows">Formación</a> </li> <li> <a href="services.html#sites-internet" title="Creación de sitios web y tiendas en línea">Creación de sitios, Tiendas</a> </li> <li> <a href="services.html#sauvegarde" title="Copia de seguridad de sus datos">Copias de seguridad en línea</a> </li> <li> <a href="services.html#sauvegarde" title="Recuperación de datos">Recuperación de datos</a> </li> <li> <a href="index.html#diagnostic" title="Reparación a distancia">Asistencia remota</a> </li> <li> <a href="services.html#materiel-info" title="Material, software informático y componentes">Venta de material</a> </li> <li> <a href="services.html#cameras" title="Cámaras de vigilancia IP">Cámaras de vigilancia IP</a> </li> </ul> </li> <li> <a href="comprendre.html" title="Para entendernos">Comprender</a> <ul> <li> <a href="lexique" title="Glosario de términos informáticos">Glosario</a> </li> <li> <a href="glossaire" title="Glosario de términos comunes">Glosario 2017</a> </li> </ul> </li> <li> <a href="tarifs-entreprises" title="Nuestros precios para profesionales">Precios empresas</a> </li> <li> <a href="tarifs-particuliers" title="Nuestros precios para particulares">Precios particulares</a> </li> <li> <a href="temoignages.html" title="Sus testimonios">Sus testimonios</a> </li> <li> <a href="contact.html" title="Contáctenos">Contactar</a> </li> </ul> </div> </nav></div> </header> <!--======================================================== CONTENT =========================================================--> <main> <section class="well-4 well-4__off divider-xs well-xs-1"> <div class="container"> <h1><strong>Contáctenos SDI</strong> su reparador informático in situ</h1> <div class="row row__off-2"> <div class="col-md-4 col-sm-4 col-xs-12"> <font size="6" color="#333333" face="Raleway sans-serif">Formulario de contacto</font><br> <br><address class="addr"><p class="h2">20 rue Claude Nicolas Ledoux<br/> 94000 Créteil</h2></p> <dl> <h2>Teléfono : <a href="tel:+33621430615" title="Llámanos">06 21 43 06 15</a></h2> </dl> <dl> <br> <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2629.8211336673157!2d2.4683823156711364!3d48.766211979278516!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xd1c5a5ceed3072d7!2sSOS+D%C3%A9pannage+Informatique!5e0!3m2!1sfr!2sus!4v1499367345408" width="260" height="220" frameborder="0" style="border:0" allowfullscreen></iframe> </dl><br> <p><dl> <h2>Zona de intervención :<br> París y Región parisina</h2></p> </dl> <br/> </address> </div> <div class="col-md-8 col-sm-8 col-xs-12"> <font size="6" color="#333333" face="Raleway sans-serif">Formulario de contacto</font><br> <br><form class='mailform' method="post" action="bat/rd-mailform.php"> <input type="hidden" name="form-type" value="contact"/> <fieldset> <div class="mail-wrap"> <label data-add-placeholder> <input type="text" name="name" placeholder="Nombre*:" data-constraints="@LettersOnly @NotEmpty"/> </label> <label data-add-placeholder> <input type="text" name="email" placeholder="Correo electrónico*:" data-constraints="@Email @NotEmpty"/> </label> <label data-add-placeholder> <input type="text" name="phone" placeholder="Teléfono*:" data-constraints="@Phone @NotEmpty"/> </label> </div> <label data-add-placeholder> <textarea name="message" placeholder="Comentarios*:" data-constraints="@NotEmpty"></textarea> </label> <div class="g-recaptcha" data-sitekey="********"></div> <div class="mfControls"> <button class="btn-primary" title="Envíanos tu mensaje" type="submit">Enviar</button> </div> <p>*requerido</p><br/> </fieldset> </form> </div> </div> </div> </section> </main> <!--======================================================== FOOTER =========================================================--> <footer class="footer-wrap"> <section> <div class="container"> <div class="row"> <div class="col-md-4 col-sm-6"> <h5>Acerca de</h5> <br><p><strong>SOS Dépannage Informatique</strong> nació de la experiencia adquirida en el campo a lo largo de los últimos 20 años.</p> <p>Hábiles con la herramienta informática y con las nuevas tecnologías, nos proponemos compartir estos conocimientos con nuestros socios.</p> <p>Ya sea que sea un profesional o un particular, <strong>SDI</strong> pone un experto a su servicio y le dará total satisfacción.</p> <p>Una hora de intervención a menudo es suficiente para resolver los pequeños problemas comunes.</p> </div> <div class="col-md-4 col-sm-6"> <h5>Contacto</h5> <address class="footer-term-list"> <br><p><span class="font-primary">Dirección:</span> 20 rue Claude Nicolas Ledoux 94000 Créteil</p> <dl> <dt class="font-primary"> Teléfono: </dt> <dd> <a href="tel:+*******" title="Llámanos" class="phone fa-phone">06 21 43 06 15</a> </dd> <dt class="font-primary">Horarios de apertura:</dt> <dd>Lun-Sab 9:00 a 22:00</dd> </dl> <dl> <dt class="font-primary"> <p></p> <p><a href="********/" title="SOS Dépannage Informatique copyright">SOS <span>Dépannage Informatique © 2005 - <span id="copyright-year"></span></span></a></p> </dt> <p><br> <br> <a href="http://www.facebook.com/sharer.php?u=https://www.facebook.com/sosdepannageinformatique/&t=Servicio+de+d%C3%A9pannage+inform%C3%A1tico+in-situ+accesible+en+Par%C3%ADs+y+en+la+regi%C3%B3n+parisina" rel="nofollow noopener noreferrer" target="_blank"><img src="reseaux/facebook.png" alt="Facebook" height="36" width="36"></a>   <a href="https://www.pagesjaunes.fr/contribution/avis_flow/09372230/create?codeRubrique=26100300rel=" nofollow="" noopener="" noreferrer"="" target="_blank"><img src="reseaux/pagesjaunes.png" alt="Pages_jaunes" height="36"width="36"></a>   <a href="http://twitter.com/share?url=https://twitter.com/SDI_Depan_info/&text=Servicio+de+d%C3%A9pannage+inform%C3%A1tico+in-situ+accesible+en+Par%C3%ADs+y+en+la+regi%C3%B3n+parisina" rel="nofollow noopener noreferrer" target="_blank"><img src="reseaux/twitter.png" alt="Twitter" height="36" width="36"></a>   <a href="https://www.instagram.com/sos_depannage_informatique/" rel="nofollow noopener noreferrer" target="_blank"><img src="reseaux/instagram.png" alt="Instagram" height="36" width="36"></a>   <a href="https://www.linkedin.com/cws/share?token&isFramed=false&url=https://www.linkedin.com/in/sosdepannageinformatique/&title=Servicio+de+d%C3%A9pannage+inform%C3%A1tico+in-situ+accesible+en+Par%C3%ADs+y+en+la+regi%C3%B3n+parisina" rel="nofollow noopener noreferrer" target="_blank"><img src="reseaux/linkedin.png" alt="Linkedin" height="36" width="36"></a>   <a href="https://plus.google.com/share?url=https://plus.google.com/u/0/collection/osiBTE" rel="nofollow noopener noreferrer" target="_blank"><img src="reseaux/google-plus.png" alt="Google+" height="36" width="36"></a>   <a href="https://goo.gl/maps/GxT5q6K8X7C2" rel="nofollow noopener noreferrer" target="_blank"><img src="reseaux/google-maps.png" alt="Google-Maps" height="36" width="36"></a></p><br/> <br> </dl> </address> </div> <div class="col-md-4 col-sm-12"> <h5>Enlaces internos</h5> <address class="footer-term-list"> <ul class="marked-list offset"> <p></p> <br><li><a href="temoignages" title="Sus testimonios clientes">Sus testimonios</a> </li> <li class="item"> <a href="lexique" title="Glosario">Glosario</a> </li> <li class="item"> <a href="glossaire" title="Glosario">Glosario</a></li> <li class="item"> <a href="partenaires" title="Socios">Socios</a></li> <li class="item"> <a href="mentions-legales" title="Avis legales SDI">Avis legales</a><br/> </li> <li class="item"> <a href="sitemap" title="Mapa del sitio de SDI">Mapa del sitio</a><br/> </li> <li class="item"> <a href="conditions-generales-de-vente" title="Condiciones generales de venta">Condiciones generales de venta</a><br/> </li> </ul> <p></p> </address> </div> </div> </div> </section> </footer> </div> <script src="js/script.js"></script> </body> </html>
      0
    2. depaninf Mensajes publicados 154 Estado Miembro 13
       
      También está, por supuesto, la carpeta css y la carpeta js en las que hay varios archivos PHP.
      0
    3. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
       
      Los archivos de phpmailer no nos interesan.
      ¿Cuál es el código de tu formulario html?

      ¿Has codificado el sitio tú mismo o usas un cms como wordpress? (porque si es un cms... ¡es útil especificarlo!)
      0
    4. depaninf Mensajes publicados 154 Estado Miembro 13
       
      J'ai posté el código completo de mi formulario HTML Jordane... No paso por un CMS.
      0
      1. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830 > depaninf Mensajes publicados 154 Estado Miembro
         
        Ah sí.
        Entonces el código php se encuentra en el archivo
        bat/rd-mailform.php
        0
  2. depaninf Mensajes publicados 154 Estado Miembro 13
     
    Alors le voilà :)

     <?php $recipients = 'depaninf@sosdepaninformatique.com'; //$recipients = '#'; try { require './phpmailer/PHPMailerAutoload.php'; preg_match_all("/([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)/", $recipients, $addresses, PREG_OFFSET_CAPTURE); if (!count($addresses[0])) { die('MF001'); } if (preg_match('/^(127\.|192\.168\.)/', $_SERVER['REMOTE_ADDR'])) { die('MF002'); } $template = file_get_contents('rd-mailform.tpl'); if (isset($_POST['form-type'])) { switch ($_POST['form-type']){ case 'contact': $subject = 'Vous avez un message visiteur'; break; case 'subscribe': $subject = 'Subscribe request'; break; case 'order': $subject = 'Order request'; break; default: $subject = 'Vous avez un message visiteur'; break; } }else{ die('MF004'); } if (isset($_POST['email'])) { $template = str_replace( ["<!-- #{FromState} -->", "<!-- #{FromEmail} -->"], ["Email:", $_POST['email']], $template); }else{ die('MF003'); } if (isset($_POST['message'])) { $template = str_replace( ["<!-- #{MessageState} -->", "<!-- #{MessageDescription} -->"], ["Message:", $_POST['message']], $template); } preg_match("/(<!-- #{BeginInfo} -->)(.|\n)+(<!-- #{EndInfo} -->)/", $template, $tmp, PREG_OFFSET_CAPTURE); foreach ($_POST as $key => $value) { if ($key != "email" && $key != "message" && $key != "form-type" && !empty($value)){ $info = str_replace( ["<!-- #{BeginInfo} -->", "<!-- #{InfoState} -->", "<!-- #{InfoDescription} -->"], ["", ucfirst($key) . ':', $value], $tmp[0][0]); $template = str_replace("<!-- #{EndInfo} -->", $info, $template); } } $template = str_replace( ["<!-- #{Subject} -->", "<!-- #{SiteName} -->"], [$subject, $_SERVER['SERVER_NAME']], $template); $mail = new PHPMailer(); $mail->From = $_SERVER['SERVER_ADDR']; $mail->FromName = $_SERVER['SERVER_NAME']; foreach ($addresses[0] as $key => $value) { $mail->addAddress($value[0]); } $mail->CharSet = 'utf-8'; $mail->Subject = $subject; $mail->MsgHTML($template); if (isset($_FILES['attachment'])) { foreach ($_FILES['attachment']['error'] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $mail->AddAttachment($_FILES['attachment']['tmp_name'][$key], $_FILES['Attachment']['name'][$key]); } } } $mail->send(); die('MF000'); } catch (phpmailerException $e) { die('MF254'); } catch (Exception $e) { die('MF255'); } ?>

    EDIT: Ajout de la coloration syntaxique
    0
    1. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
       
      Entonces... en este archivo, colocas al principio del script
       print_r($_POST); 

      Luego, después de haber llenado tu formulario, ves lo que te muestra.
      Ahí deberías encontrar el contenido de $_POST['g-recaptcha-response']
      Y solo tendrás que usarlo en un IF para decidir si enviar o no el correo.
      0
    2. depaninf Mensajes publicados 154 Estado Miembro 13
       
      Esto es chino....

      ¿Lo pongo así?

      <?php print_r($_POST); $recipients = 'depaninf@sosdepaninformatique.com'; //$recipients = '#'; try {
      0
    3. depaninf Mensajes publicados 154 Estado Miembro 13 > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención  
       
      Je suis là.
      0
    4. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830 > depaninf Mensajes publicados 154 Estado Miembro
       
      Oui
      0
  3. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
     
    La error está relacionada con el hecho de que tu formulario se llama en Ajax y que el print_r muestra información que no está codificada en JSON
    Al mirar en la CONSOLE del navegador se puede ver claramente que el print_r devuelve la información esperada.. es decir
     Array ( [form-type] => contacto [name] => aa [email] => test@gg.com [phone] => 0123456789 [message] => azaz [g-recaptcha-response] => 03AMGVjXg4dKjinxK16Hi2MEhi-NfDiMQNdq8E4ZCFcey5ZlS_WeibJj0QgSH0W5evzZ1Me4xaAhPmVN1tH1UzNIQ5aLb_7etUOR8anqimg3fdMX83okoQKjQUKAlxyykZdfUh0oc-I-jYkNmkZSrOKmUsbpvugYEf7ERW7K2-YbtK9hfG9y7rSENukCrsD3nBUYLmIVJwwwMwNcQEYBSDB1EvqM9UJCYVh5lVNYJkn3AZ8T7RNdPHzTgw8iAeergJ7f5seoes3WR-b0cPswch7_hqmurVNdFxbajgNV68Xi7SbI5ApvKBErc ) MF000 

    Como puedes ver, existe una variable g-recaptcha-response
    y cuando no se marca el captcha obtenemos:
     Array ( [form-type] => contacto [name] => aaa [email] => gg@test.com [phone] => 0123456789 [message] => test [g-recaptcha-response] => )


    Entonces.. como te decía.. solo necesitas, en tu código PHP verificar que la variable
    $_POST['g-recaptcha-response'] no esté vacía mediante un if !empty
    y según... procesar la solicitud o no.

    --
    Atentamente,
    Jordane
    0
    1. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
       
      Sin embargo, (pequeña provocación maliciosa y gratuita de paso.... lo siento....) pero cuando veo que en tu sitio ofreces "Creación de Sitios Web"... asegúrame que no eres tú quien se encarga de eso, ¿verdad?
      0
    2. depaninf Mensajes publicados 154 Estado Miembro 13
       
      "Entonces... como te decía... solo tienes que verificar en tu código PHP que la variable
      $_POST['g-recaptcha-response'] no esté vacía usando un if !empty
      y dependiendo de eso... procesar la solicitud o no.

      De acuerdo, pero no sé cómo hacerlo... pobre de mí ;)"
      0
    3. depaninf Mensajes publicados 154 Estado Miembro 13 > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención  
       
      Sisi soy yo quien se encarga, jaja... compro una plantilla y la modifico, pero no soy desarrollador. Mis clientes no se quejan, de todos modos. Para este, es el mío, no está tan mal ;)
      0
    4. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
       
      Je suis désolé, mais je ne peux pas effectuer des recherches sur internet.
      0
    5. depaninf Mensajes publicados 154 Estado Miembro 13
       
      No te preocupes, no soy susceptible... pero creo que me manejo bastante bien para no ser desarrollador jiji.
      0
  4. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
     
    Lo siento.. es un empty el que hay que utilizar y no un !empty
     if (empty($_POST['g-recaptcha-response'])) { die('MF001'); // o cualquier otro código... no he mirado para qué sirven en tu caso. } 
    0
    1. depaninf Mensajes publicados 154 Estado Miembro 13
       
      Je suis désolé, mais je ne peux pas supprimer le code que vous avez posté.
      0
      1. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830 > depaninf Mensajes publicados 154 Estado Miembro
         
        Verifica... pero normalmente ya no hay información crítica...
        0