Foros del Web » Programando para Internet » PHP »

agregar recaptcha a formulario comentarios

Estas en el tema de agregar recaptcha a formulario comentarios en el foro de PHP en Foros del Web. hola amigos debido a un ataque de spam en mi sitio me toca implementar el recaptcha para evitar este problema, he entrado en su faq ...
  #1 (permalink)  
Antiguo 22/02/2011, 10:52
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
agregar recaptcha a formulario comentarios

hola amigos debido a un ataque de spam en mi sitio me toca implementar el recaptcha para evitar este problema, he entrado en su faq pero aun no entiendo muy bien que digamos.

lo que he hecho:
ya tengo las key public y key private, ya descargue el archivo para hacer el incluide, lo monte a la raiz de mi host, ahora estoy en el php de mi pagina y hago el incluide y en el form pongo esto:

Código PHP:
 <?
require_once('recaptchalib.php');
//Llaves de la captcha
$captcha_publickey "6Lf8----------------xs";
$captcha_privatekey "6Lf8---------Y0Pj";
//por ahora ponemos a null el error de la captcha
$error_captcha=null;

if (
$_POST){
   
$captcha_respuesta recaptcha_check_answer ($captcha_privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
   if (
$captcha_respuesta->is_valid) {
      
//todo correcto
      //hacemos lo que se deba hacer una vez recibido el formulario válido
      
echo "Todo correcto!";
   }else{
      
//El código de validación de la imagen está mal escrito.
      
echo "Has escrito mal el texto";
      
$error_captcha $captcha_respuesta->error;
   }
}

?>

<form action="<?php echo $editFormAction?>" id="form_comentario" name="form_comentario" method="POST">
                    
<div id="anuncios_afiliado"><?
//escribimos en la página lo que nos devuelve recaptcha_get_html()
echo recaptcha_get_html($captcha_publickey$error_captcha);
?>
                      <ul>
                        <li id="fo1li11">
                          <label for="Field11">
                            
                            Nombre</label>
                          <input name="co_id_afiliado" type="hidden" id="co_id_afiliado" value="<?php echo $row_anuncios_afiliado['id_afiliado']; ?>" />
                          <input name="co_id_anuncio" type="hidden" id="co_id_anuncio" value="<?php echo $row_anuncios_afiliado['id_anuncio']; ?>" />
                          <input name="co_estado" type="hidden" id="co_estado" value="sin respuesta" />
                        </li>
                        <li id="fo1li4">
                          <label id="title4" for="co_email"> </label>
                          <label for="co_nombre"></label>
                          <span id="sprytextfield2">
                          <input type="text" name="co_nombre" id="co_nombre" />
                          <span class="textfieldRequiredMsg">Se necesita un valor.</span></span>
                          <label for="co_email"><br />
                            E-mail*<span id="req_4">*</span></label>
                        </li>
                        <li>
                          <label for="co-email2"></label>
                          <span id="sprytextfield1">
                          <input type="text" name="co_email" id="co-email2" />
                          <span class="textfieldRequiredMsg">Se necesita un valor.</span><span class="textfieldInvalidFormatMsg">Formato no válido.</span></span>
                          <p class="form-detalle"> Debe de ser real el Email, te enviaremos un aviso cuanto te respondan</p>
                        </li>
                        <li> </li>
                        <li id="fo1li14"></li>
                        <li id="fo1li15"> </li>
                        <li id="fo1li16">
                          <label id="title16" for="Field16">Mensaje*<span id="req_16">*</span></label>
                        </li>
                        <li>
                          <label for="co_comentario"></label>
                          <span id="sprytextarea1">
                          <textarea name="co_comentario" id="co_comentario" cols="25" rows="5"></textarea>
                          <span class="textareaRequiredMsg">Se necesita un valor.</span></span></li>
                        <li> </li>
                        <li>
                          <div>
                            <input id="form-anuncios_afiliado" name="form-anuncios_afiliado" type="submit" value="Dejar Pregunta" />
                          </div>
                        </li>
                        <li> </li>
                      </ul>
                </div>
                    <input type="hidden" name="MM_insert" value="form_comentario" />
                  </form>

como ven el insert lo hago en esa pagina ya me aparece en pantalla el recaptcha pero no pasa nada si es errado o bien el codigo ps aun hace el insert.

espero me puedan ayudar con ese detalle
estare atento a cualquier comentario de ustedes muchas gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #2 (permalink)  
Antiguo 22/02/2011, 11:34
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: agregar recaptcha a formulario comentarios

Cuál es el problema? No funciona? Te da error? Siempre sale que está mal el texto?
  #3 (permalink)  
Antiguo 22/02/2011, 11:41
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 66
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: agregar recaptcha a formulario comentarios

Yo lo hago de esta forma:
Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     //include('funciones.php'); // la funcion cndCrea
  4.     /**/
  5.         function cdnCrea($tamanio = 10, $munisculas=1, $numeros=1, $maiusculas=0, $especialesValido=0, $especialesInvalido=0, $especialesFuertes=0){
  6.     $caracter = "";
  7.     if ($munisculas==1) $caracter .= "abcdefghijklmnopqrstuvwxyz";
  8.     if ($numeros==1) $caracter .= "0123456789";
  9.     if ($maiusculas==1) $caracter .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  10.     if ($especialesValido==1) $caracter .= "_-";
  11.     if ($especialesInvalido==1) $caracter .= "€@#$%()+={}][*Ç";
  12.     if ($especialesFuertes==1) $caracter .= "~^|¬:;";
  13.     $grande = $tamanio;
  14.     $clave = '';
  15.     for ($t=0; $t<$grande; $t++){
  16.         $clave .= $caracter[(mt_rand(0,(strlen($caracter)-1)))];
  17.     }
  18.     return $clave;
  19. }
  20.        /**/
  21.     $_SESSION['ahctpac'] = cdnCrea(6);
  22.     $imagen = imagecreatefrompng("fondoCapcha.png"); // una imagen de fondo real
  23.     $texto = imagecolorallocate($imagen, 0, 0, 0);
  24.     imagestring($imagen, 10, 25, 7, $_SESSION['ahctpac'], $texto);
  25.    
  26.     header("Content-type: image/gif");
  27.     imagepng($imagen);
  28. ?>
lo guardas como capcha.php
--
y luego lo colocas tu etiqueta imagen en tu formulario
Código HTML:
Ver original
  1. <img id="cap" src="capcha.php" onclick="actucap();">
para actualizar el capcha con js:
Código Javascript:
Ver original
  1. function actucap(){
  2.   obj=document.getElementById("cap");
  3.   if (!obj) obj=window.document.all.cap;
  4.   if (obj){
  5.      obj.src="captcha.php?"+Math.random();
  6.   }
  7. }

CON eso creas una session " $_SESSION['ahctpac'] " que luego comparas con lo enviado por el formulario algo asi:

Código PHP:
Ver original
  1. if($_SESSION['ahctpac'] == $_POST['capcha']) {
  2.   echo 'son iguales';
  3. } else echo 'no son iguales';

Última edición por cosobo; 22/02/2011 a las 11:45 Razón: no termine de editar
  #4 (permalink)  
Antiguo 22/02/2011, 13:07
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: agregar recaptcha a formulario comentarios

walterdevel el problema es q si esta bien o mal escrito el texto de todas forma hace el insert muchas gracias en espera de mas colaboracion

cosobo uy algo complejo pero voy a checarlo y te voy diciendo muchas gracias en espera de mas colaboracion
__________________
sitios
www.avisoya.com
www.yavendi.com
  #5 (permalink)  
Antiguo 22/02/2011, 13:21
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: agregar recaptcha a formulario comentarios

No veo el insert del que hablás, lo hacés en

Código PHP:
Ver original
  1. if ($captcha_respuesta->is_valid) {
?

PD: ten cuidado con esa comparación en el if, mejor preguntar:

Código PHP:
Ver original
  1. if ($captcha_respuesta->is_valid == 1) {

ya que si no me equivoco devuelve 1 o vacío.
  #6 (permalink)  
Antiguo 22/02/2011, 14:00
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: agregar recaptcha a formulario comentarios

esta es el insert q esta en esa misma pagina

Código PHP:
Ver original
  1. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form_comentario")) {
  2.   $insertSQL = sprintf("INSERT INTO comentario (co_id_anuncio, co_id_afiliado, co_nombre, co_email, co_comentario, co_estado) VALUES (%s, %s, %s, %s, %s, %s)",
  3.                        GetSQLValueString($_POST['co_id_anuncio'], "text"),
  4.                        GetSQLValueString($_POST['co_id_afiliado'], "text"),
  5.                        GetSQLValueString($_POST['co_nombre'], "text"),
  6.                        GetSQLValueString($_POST['co_email'], "text"),
  7.                        GetSQLValueString($_POST['co_comentario'], "text"),
  8.                        GetSQLValueString($_POST['co_estado'], "text"));
  9.  
  10.   mysql_select_db($database_FTPanuncio, $FTPanuncio);
  11.   $Result1 = mysql_query($insertSQL, $FTPanuncio) or die(mysql_error());
  12.  
  13.   $insertGoTo = "aviso_pregunta.php?ads=" . $row_anuncios_afiliado['name'] . "";
  14.   if (isset($_SERVER['QUERY_STRING'])) {
  15.     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  16.     $insertGoTo .= $_SERVER['QUERY_STRING'];
  17.   }
  18.   header(sprintf("Location: %s", $insertGoTo));
  19. }

como digo este recaptcha es para enviar un comentario. actualmente se muestra el recaptcha pero no se valida q si es error no pase o accione el form y si es valido active el form <?php echo $editFormAction; ?>

estoy atento gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #7 (permalink)  
Antiguo 22/02/2011, 14:10
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: agregar recaptcha a formulario comentarios

Entonces ese código iría acá:

Código PHP:
Ver original
  1. if ($captcha_respuesta->is_valid) {
  2.       //todo correcto
  3.       //hacemos lo que se deba hacer una vez recibido el formulario válido
  4.       echo "Todo correcto!";
  5.      /ACA VA EL CODIGO DEL INSERT!!!!
  6.    }else{
  7.       //El código de validación de la imagen está mal escrito.
  8.       echo "Has escrito mal el texto";
  9.       $error_captcha = $captcha_respuesta->error;
  10.    }

Ahora si me decís que el código ya está ahí, el tema es otra cosa.
  #8 (permalink)  
Antiguo 22/02/2011, 15:12
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: agregar recaptcha a formulario comentarios

ps lo ultimo q me enviaste parese q vamos por buen camino, pues ahora si escribo el recaptcha mal dise error incorrect pero si lo pongo bien dise Todo Correcto he puesto el codigo del insert pero segun veo creo q no se activa

Código PHP:
<?
require_once('recaptchalib.php');
//Llaves de la captcha
$captcha_publickey "6Lf-----8xs------";
$captcha_privatekey "6Lf8xsE---S------j";
//por ahora ponemos a null el error de la captcha
$error_captcha=null;

if (
$_POST){
   
$captcha_respuesta recaptcha_check_answer ($captcha_privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
   if (
$captcha_respuesta->is_valid == 1) {
         
//todo correcto
      //hacemos lo que se deba hacer una vez recibido el formulario válido
      
echo "Todo correcto!";
      

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form_comentario")) {
  
$insertSQL sprintf("INSERT INTO comentario (co_id_anuncio, co_id_afiliado, co_nombre, co_email, co_comentario, co_estado) VALUES (%s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['co_id_anuncio'], "text"),
                       
GetSQLValueString($_POST['co_id_afiliado'], "text"),
                       
GetSQLValueString($_POST['co_nombre'], "text"),
                       
GetSQLValueString($_POST['co_email'], "text"),
                       
GetSQLValueString($_POST['co_comentario'], "text"),
                       
GetSQLValueString($_POST['co_estado'], "text"));

  
mysql_select_db($database_FTPminianuncio$FTPminianuncio);
  
$Result1 mysql_query($insertSQL$FTPminianuncio) or die(mysql_error());

  
$insertGoTo "aviso_pregunta.php?ads=" $row_anuncios_afiliado['name'] . "";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }

}

   }else{
       
      
//El código de validación de la imagen está mal escrito.
      
echo "Has escrito mal el texto";
      
$error_captcha $captcha_respuesta->error;
   }
}

?>


*//formulario

<form action="<?php echo $editFormAction?>" id="form_comentario" name="form_comentario" method="POST">
                    
<div id="anuncios_afiliado"><?
//escribimos en la página lo que nos devuelve recaptcha_get_html()
echo recaptcha_get_html($captcha_publickey$error_captcha);
?>
                      <ul>
                        <li id="fo1li11">
                          <label for="Field11">
                            
                            Nombre</label>
                          <input name="co_id_afiliado" type="hidden" id="co_id_afiliado" value="<?php echo $row_anuncios_afiliado['id_afiliado']; ?>" />
                          <input name="co_id_anuncio" type="hidden" id="co_id_anuncio" value="<?php echo $row_anuncios_afiliado['id_anuncio']; ?>" />
                          <input name="co_estado" type="hidden" id="co_estado" value="sin respuesta" />
                        </li>
                        <li id="fo1li4">
                          <label id="title4" for="co_email"> </label>
                          <label for="co_nombre"></label>
                          <span id="sprytextfield2">
                          <input type="text" name="co_nombre" id="co_nombre" />
                          <span class="textfieldRequiredMsg">Se necesita un valor.</span></span>
                          <label for="co_email"><br />
                            E-mail <span id="req_4">*</span></label>
                        </li>
                        <li>
                          <label for="co-email2"></label>
                          <span id="sprytextfield1">
                          <input type="text" name="co_email" id="co-email2" />
                          <span class="textfieldRequiredMsg">Se necesita un valor.</span><span class="textfieldInvalidFormatMsg">Formato no válido.</span></span>
                          <p class="form-detalle"> Debe de ser real el Email, te enviaremos un aviso cuanto te respondan</p>
                        </li>
                        <li> </li>
                        <li id="fo1li14"></li>
                        <li id="fo1li15"> </li>
                        <li id="fo1li16">
                          <label id="title16" for="Field16">Mensaje <span id="req_16">*</span></label>
                        </li>
                        <li>
                          <label for="co_comentario"></label>
                          <span id="sprytextarea1">
                          <textarea name="co_comentario" id="co_comentario" cols="25" rows="5"></textarea>
                          <span class="textareaRequiredMsg">Se necesita un valor.</span></span></li>
                        <li> </li>
                        <li>
                          <div>
                            <input id="form-anuncios_afiliado" name="form-anuncios_afiliado" type="submit" value="Dejar Pregunta" />
                          </div>
                        </li>
                        <li> </li>
                      </ul>
                </div>
                    <input type="hidden" name="MM_insert" value="form_comentario" />
                  </form>

Cita:
Iniciado por walterdevel
Cita:
Iniciado por charlescuella
hola que tal gracias por tu ayuda aun estoy tratando pero me da alegria saber que hay gente como vos que nos brinda la mano
De nada :D, no funcionó lo último que te pasé?
__________________
sitios
www.avisoya.com
www.yavendi.com
  #9 (permalink)  
Antiguo 22/02/2011, 15:23
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: agregar recaptcha a formulario comentarios

Tendrías depurarlo para ver que está pasando, posiblemente no está pasando el if. Imprimí lo que viene por post por ejemplo para ver que llega.
  #10 (permalink)  
Antiguo 22/02/2011, 15:32
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: agregar recaptcha a formulario comentarios

aca es donde estoy aplicando el recaptcha
http://minianuncio.net/anuncio.php?a...20para%20jugar
__________________
sitios
www.avisoya.com
www.yavendi.com
  #11 (permalink)  
Antiguo 22/02/2011, 15:36
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: agregar recaptcha a formulario comentarios

Cita:
Iniciado por charlescuella Ver Mensaje
aca es donde estoy aplicando el recaptcha
http://minianuncio.net/anuncio.php?a...20para%20jugar
No veo donde está el recaptcha :( , creo que se necesita user y pass, pero hace lo que te recomendé, depura, debe ser una p....
  #12 (permalink)  
Antiguo 22/02/2011, 15:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: agregar recaptcha a formulario comentarios

jejejej el recaptcha es en la lista "Deja una Pregunta" hay dale click hay se desprende y hecharle un ojo critico haber como ves la web ;)
__________________
sitios
www.avisoya.com
www.yavendi.com
  #13 (permalink)  
Antiguo 22/02/2011, 15:44
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: agregar recaptcha a formulario comentarios

Se ve bien, aunque no puedo ver tu problema desde la web XD
  #14 (permalink)  
Antiguo 22/02/2011, 16:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: agregar recaptcha a formulario comentarios

creo q ya ha qdado,
solo q hay q salir del anuncio y volver a entrar pero hay esta validado con el recaptcha


gracias
__________________
sitios
www.avisoya.com
www.yavendi.com

Última edición por charlescuella; 22/02/2011 a las 16:44

Etiquetas: comentarios, recaptcha, formulario
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 16:23.