Foros del Web » Programando para Internet » PHP »

Sistema de Comentarios con Captcha

Estas en el tema de Sistema de Comentarios con Captcha en el foro de PHP en Foros del Web. Hola a todos, estoy intentando crear un sistema de comentarios php muy simple para mi web, realmente funciona, pero no tenía un Captcha, resultado de ...
  #1 (permalink)  
Antiguo 19/05/2014, 12:28
Avatar de bocelo  
Fecha de Ingreso: mayo-2014
Mensajes: 3
Antigüedad: 9 años, 11 meses
Puntos: 0
Sistema de Comentarios con Captcha

Hola a todos, estoy intentando crear un sistema de comentarios php muy simple para mi web, realmente funciona, pero no tenía un Captcha, resultado de que me comenten indeseablemente.

Me gustaría poder agregar un Captcha a este formulario.

Agradezco vuestra ayuda ya lo poco que se de PHP lo he aprendido por mi cuenta y este tema me supera, me vale una solución simple pero efectiva.
Un Saludo.

Lo que tengo es lo siguiente:

comentar.php
Código PHP:
<?php
$name 
=$_POST['name'];
$comentario =$_POST['comentario'];

$grabar fopen("com.html","a");
fwrite ($grabar,"<p><b>Nombre: </b> $name</p><p><b>Comentario:</b> <br />$comentario</p><hr />");
fclose($grabar);

include (
"index.php");
?>
index.php

Código HTML:
Ver original
  1.     <head>
  2.         <title>mi comentario</title>
  3.     </head>
  4.    
  5.     <body>
  6.         <form method="post" action="comentar.php">
  7.         Nombre:
  8.         <input type="text" value="" name="name" /> <br />
  9.         Escribe tu comentario: <br/>
  10.         <textarea name="comentario" rows="4" cols="50"> </textarea>
  11.        
  12.                 <input type="submit" value="Publicar">
  13.  
  14.         </form>
  15.         <?php include("com.html"); ?>
  16.     </body>
  17. </html>
  #2 (permalink)  
Antiguo 19/05/2014, 13:07
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sistema de Comentarios con Captcha

Quizá hayan formas más eficientes de hacerlo, pero particularmente, tendría una tabla en la BD con los códigos CAPTCHA y un repositorio de imágenes en el servidor, cada una relacionada a los códigos de la BD. Luego, solo sería cuestión de tomar un valor al azar de la tabla y mostrar la imagen, el código podría tenerlo en una variable de sesión y cuando se envíen los datos para procesar, verifico que el texto ingresado coincida con el código CAPTCHA.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 19/05/2014, 13:44
Avatar de bocelo  
Fecha de Ingreso: mayo-2014
Mensajes: 3
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Sistema de Comentarios con Captcha

Gracias por contestar, estube buscado uno, lo dejo a continuación:
la duda es como hago para que verifique, ya que lo agrego y tanto si lo pongo erroneamente como bien me lo agrega, la unica manera en el que no funciona es cuando no escribo nada que me solicita meter el dato.

Si hacen el fabor me pasan el codigo que funcione por que he estado peleando dias y ni idea. Fijo que es una tonteria pero no doy mas de mi.
Gracias

Captcha.php
Código PHP:
<?php 
    session_start
();

    
/* genero un string largo, y como parametro 
     * le paso la fecha actual con microsegundos (microtime).
     * luego con substr lo acorto a seis caracteres
     */
    
$ranStr substrsha1microtime() ),0,6); 

    
//Guardo el valor del captcha en una variable de sesion
    
$_SESSION['captcha'] = $ranStr

    
/*
     * creo la imagen con php...
     * fondo_captcha.jpg debe ser una imagen existente 
     */
    
$newImage imagecreatefromjpeg"fondo_captcha.jpg" ); 


    
// la funcion imagecolorallocate ( $imagen , rojo , verde , azul ) genera un color 
    
$txtColor imagecolorallocate($newImage00200); 

    
/*
     * que luego lo usamos para colorear el string
     * bool imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )
     */
    
imagestring($newImage5308$ranStr$txtColor); 

    
//indico la cabecera
    
header"Content-type: image/jpeg" );

    
//creo la imagen
    
imagejpeg($newImage); 
?>
index.php

Código HTML:
Ver original
  1. <?php
  2.     session_start();
  3.     //esta variable contiene el resultado de la comparacion
  4.     $resultado ='';
  5.    
  6.     //si se ingreso un codigo...
  7.     if(isset($_POST['codigo'])):
  8.         //y este es igual a la variable de sesion con el valor correcto
  9.         if($_POST['codigo'] == $_SESSION['captcha']):
  10.             //muestro un mensaje de exito
  11.             $resultado = "Valido!!";
  12.         else:
  13.             $resultado = "Invalido!!";
  14.         endif;
  15.     endif;
  16. ?>
  17.  
  18.     <head>
  19.         <title>mi comentario</title>
  20.        
  21.         <style type='text/css'>
  22.             table tr td{
  23.                 border:0px solid black;
  24.                 text-align: center;
  25.             }
  26.         </style>
  27.     </head>
  28.    
  29.     <body>
  30.         <form method="post" action="comentar.php">
  31.         Nombre:
  32.         <input type="text" value="" name="name" /> <br />
  33.         Escribe tu comentario: <br/>
  34.         <textarea name="comentario" rows="4" cols="50"> </textarea>
  35.         <table>
  36.                 <tr>
  37.                     <td><input type="text" name="codigo" required></td>
  38.                     <!-- notese que la fuente de la imagen se crea en captcha.php -->
  39.                     <td><img src="captcha.php"/></td>
  40.                 </tr>
  41.                 <!-- se muestra si los datos ingresados fueron correctos -->
  42.                 <tr><td colspan="2" id="resultado"><?php echo $resultado; ?></td>
  43.                 <td><input type="submit" value="Publicar"></td></tr>
  44.             </table>
  45.         </form>
  46.         <?php include("com.html"); ?>
  47.        
  48.     </body>
  49. </html>
  #4 (permalink)  
Antiguo 19/05/2014, 14:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sistema de Comentarios con Captcha

Iba a sugerirte escribir el código sobre la imagen con canvas, pero olvidé que con PHP también es posible hacerlo. Lo más probable es que eso suceda porque la variable de sesión no contenga el código, por eso es que cuando dejas el campo en blanco, se valida. Creo que sería mejor que incluyas al archivo generador en la parte superior, pero si cada vez que cargue la página con el formulario, vas generar un nuevo código y este se almacenará en la variable de sesión, entonces nunca serán iguales.

Prueba realizando esos cambios y nos cuentas cómo te fue.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 22/05/2014, 12:43
Avatar de bocelo  
Fecha de Ingreso: mayo-2014
Mensajes: 3
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Sistema de Comentarios con Captcha

He estado intentando hacerlo, pero no soy capad, te agradeceria mucho si me pudieras pasar el codigo.
Gracias.

Etiquetas: captcha, comentarios, formulario, html, sistema
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 18:47.