Foros del Web » Programando para Internet » PHP »

Imagen tipo captcha

Estas en el tema de Imagen tipo captcha en el foro de PHP en Foros del Web. Estimados estoy creando un sistema de ingreso de usuarios, pero necesito un captcha me podian ayudar, es que me cuesta entender la libreria GD Gracias....
  #1 (permalink)  
Antiguo 17/09/2015, 13:54
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Imagen tipo captcha

Estimados estoy creando un sistema de ingreso de usuarios, pero necesito un captcha me podian ayudar, es que me cuesta entender la libreria GD

Gracias.
  #2 (permalink)  
Antiguo 17/09/2015, 13:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Imagen tipo captcha

¿Y no podrías usar una librería de captcha ya existente?

¿Es obligatorio que hagas la implementación desde cero y por ti mismo?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/09/2015, 14:10
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Imagen tipo captcha

es que quiero aprender, más que nada...
  #4 (permalink)  
Antiguo 17/09/2015, 14:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Imagen tipo captcha

Eso es bueno, te sugiero buscar una librería de catpcha y estudiar el código.

No hay mejor forma que leer código para aprender.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 17/09/2015, 18:14
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Imagen tipo captcha

Miren esto hice yo:

Creacion de imagen:

captcha.php

Código PHP:
Ver original
  1. <?php
  2. $rand = rand(1, 9999999);
  3. $_SESSION["hash"] = md5($rand);
  4.  
  5.  
  6. header("Content-Type: image/png");
  7. $im = @imagecreate(80, 25) or die("Cannot Initialize new GD image stream");
  8. $background_color = imagecolorallocate($im, 0, 0, 0);
  9. $text_color = imagecolorallocate($im, 225, 14, 91);
  10. imagestring($im, 6, 5, 5, $rand, $text_color);
  11. imagepng($im);
  12. ?>

y ya que tengo la session en md5 hago lo siguente

Código HTML:
Ver original
  1. <form method="post" action="index.php">
  2. Código <img src="captcha.php" />
  3. <input type="text" style="visibility:hidden;" name="captcha2" value="<?php echo $_SESSION["hash"]; ?>" readonly="readonly" />
  4. <input type="text" name="captcha1" /><input type="submit" value="go">
  5. </form>

Lo arranco pero siempre el captcha1 fall
  #6 (permalink)  
Antiguo 17/09/2015, 18:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Imagen tipo captcha

¿Qué errores obtienes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 17/09/2015, 18:25
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Imagen tipo captcha

Hasta ahí nada el tema es que yo lo comparo asi

Código PHP:
Ver original
  1. <?php
  2.  
  3. $c1 = md5($_POST["captcha1"]);
  4. $c2 = $_POST["captcha2"];
  5.  
  6. if($c1 == $c2){
  7. echo "OK";
  8. }
  9. else{
  10. echo "BAD";
  11. }
  12. ?>

Siempre me tira bad
  #8 (permalink)  
Antiguo 17/09/2015, 18:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Imagen tipo captcha

Tu error es comparar $_POST ¿no se supone que el hash ya está en $_SESSION o para que lo creaste ahí entonces?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 17/09/2015, 18:34
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Imagen tipo captcha

tu dices hacer esto?

Código PHP:
Ver original
  1. <?php
  2.      
  3.     $c1 = md5($_POST["captcha1"]);
  4.     $c2 = $_SESSION["hash"];
  5.      
  6.     if($c1 == $c2){
  7.     echo "OK";
  8.     }
  9.     else{
  10.     echo "BAD";
  11.     }
  12.     ?>
  #10 (permalink)  
Antiguo 17/09/2015, 18:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Imagen tipo captcha

Pues sí, pero te hace falta ahora el session_start() para que cargue la sesión.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 17/09/2015, 18:37
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Imagen tipo captcha

voy a ver..
  #12 (permalink)  
Antiguo 17/09/2015, 18:49
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Imagen tipo captcha

Gracias me sirvió esto hice:

formulario.php

Código PHP:
Ver original
  1. <?php
  2. ?><html>
  3.     <head>
  4.         <title>Captcha</title>
  5.     </head>
  6.     <body>
  7.         <form method="post" action="procesador.php">
  8.         <img src="captcha.php" /><br />
  9.         Ingrese el captcha<br />
  10.         <input type="text" name="captcha1" /><br/>
  11.         <input style="visibility:hidden;" readonly="readonly" value="<?php echo $_SESSION["captcha"]; ?>" />
  12.         <input type="submit" value="GO !">
  13.         </form>
  14.     </body>
  15. </html>

captcha.php

Código PHP:
Ver original
  1. <?php
  2. $rand = rand(1, 9999999);
  3. $_SESSION["captcha"] = md5($rand);
  4.  
  5.  
  6. header("Content-Type: image/png");
  7. $im = @imagecreate(80, 25) or die("Cannot Initialize new GD image stream");
  8. $background_color = imagecolorallocate($im, 0, 0, 0);
  9. $text_color = imagecolorallocate($im, 225, 14, 91);
  10. imagestring($im, 6, 5, 5, $rand, $text_color);
  11. imagepng($im);
  12.  
  13.  
  14.  
  15. ?>

procesador.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. $c1 = md5($_POST["captcha1"]);
  4. $c2 = $_SESSION["captcha"];
  5.  
  6. if($c1 == $c2){
  7. echo "OK";
  8. }
  9. else{
  10. echo "BAD";
  11. }
  12.  
  13. ?>

Ahora lo voy a integrar a mi pág. a ver si todo anda bien en un código más complejo.
  #13 (permalink)  
Antiguo 17/09/2015, 21:41
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Imagen tipo captcha

Lo implemente en mi wevb y ningun problema gracias, me podrías explicar cual era el error porfavor.
  #14 (permalink)  
Antiguo 17/09/2015, 22:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Imagen tipo captcha

Era muy simple:

- En el formulario estabas pasando el hash en md5 que ya tenías en sesión
- En tu script anterior pasabas el valor de la sesión ¿sin haber iniciado sesión antes?
- Al final en tu script que recibía ambos datos la comparación siempre fallaba y por ende el "error"

Un error grave fue pasar el valor del hash, que en teoría es secreto y el usuario no debería saber de él.

Otro error bastante común es no iniciar sesión con session_start() adecuadamente en los scripts que la usaban.

Saludos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: captcha, tipo, usuarios
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 03:07.