We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 3132
    • 14 Posts

    Hola!

    Por necesidades de diseño, necesito crear un snippet que dentro de un formulario me de la posibilidad de introduccir codigos Captcha, el tema es que me suena haber visto por algún lado una pequeña referencia de como añadir el generador de códigos captcha en un snippet, pero no encuentro dicho manual ni en el wiki ni en la ayuda oficial. ¿ A alguien le suena la existencia de este manual o referencia ? . Podria destripar el código del eform o del weblogin, pero estoy últimamente un poco vago rolleyes .

    Gracias de antemano.


      • 3132
      • 14 Posts

      Me respondo a mi mismo. tongue

      Aunque aqui solo pondre el código mas simple de como podriamos utilizarlo en nuestros propios snippets.
      El primer paso seria crear el formulario que necesitamos, añadiendo un input que sera el encargardo de recoger
      el código captcha y una variable placeholder que nos generara el snippet cada vez que este sea ejecutado.

      <form method="post" action="[+id+]" ...>
      	...
      	
      	<label>Enter this anti<br />spam code below : </label><br />
      	<img src="[+verimageurl+]" alt="verification code" width="148" height="60"/>
      	<label>Code : <input type="text" name="vericode" /></label>
      	
      	...
      </form>
      



      El segundo paso sera crear el snippet que se encargara de recoger y tratar los datos que nos envia el formulario,
      si los datos son correctos validara el formulario. Este script inserta en nuestro formulario la variable verimageurl,
      que no es sino una llamada al script que generara la imagen captcha, aunque en el codigo del eForm se le llama
      con parametros GET, lo cierto es que analizando el código del veriword.php, no veo que en ninguna parte estos
      parametros sean recogidos, y sin animo de ofender a nadie, considero que el código en sí de este script es
      bastante mejorable,

      if(count($_POST) > 0){
      	// Comprobamos que las cookies estan activas y/o existe la variable veriword en la variable superglobal $_SESSION
      	if(!isset($_SESSION['veriword']))
      		return 'Cookies disables, it is necessary to activate the cookies';
      
      	// Comprobamos que la palabra captcha este vacia o sea nula
      	if(empty($_POST['vericode']))
      		return 'Enter the word security';
      
      	// Y por último comprobamos que ambas coinciden
      	if($_POST['vericode'] != $_SESSION['veriword'])
      		return 'The word security is not correct';
      
      	return 'Captcha code correct';
      }
      
      
      $modx->setPlaceholder('verimageurl', $modx->config['base_url'].'manager/includes/veriword.php');
      




      Por si le sirve de ayuda a alguien, Saludos.
        • 17705
        • 501 Posts
        fantastico
        muchas gracias por incluir la solución!