Foros del Web » Programando para Internet » PHP »

captcha no funciona en el servidor

Estas en el tema de captcha no funciona en el servidor en el foro de PHP en Foros del Web. Hola, tengo montado un foro con un captcha para validar q un robot no mete spam en mi foro. En local funciona muy bien, pero ...
  #1 (permalink)  
Antiguo 26/09/2010, 18:07
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
captcha no funciona en el servidor

Hola, tengo montado un foro con un captcha para validar q un robot no mete spam en mi foro.

En local funciona muy bien, pero no en el servidor.

Para lanzarlo algo esto:

foro.php

Código PHP:
Ver original
  1. <form name="formulario" action="" onsubmit="insertcomment()"> // este llama por AJAX al php que valida el captcha
  2. <img src="captcha.php" id="captcha" />                                                                 
  3. <a href="javascript:void(0)" onclick="document.getElementById('captcha').src='captcha.php?'+Math.random(); document.getElementById('captcha-form').focus();" id="change-image">
  4.  
  5. <img src="refresh.jpg" border="0">
  6.  
  7. </a>
  8.  
  9. <input type="text" name="captcha" id="captcha-form"  />

el captcha.php os lo puedo pegar pero es muy largo. si alguien sabe cuál puede ser el error pq le pasó a él q me diga, sino, os pego todo el código.

el error que me da es simplemente q cuando meto caracteres erróneos, me inserta el comentario en el foro, es decir, no valida bien el captcha.

tanto en el archivo foro.php como en el captcha.php tienen la instrucción session_start();, no se si tendrá q ver o es cuestión de la configuración del servidor, o q...

os pego parte del código del fichero q validad el captcha e inserta el comentario en el foro, donde podría estar el error:

Código PHP:
Ver original
  1. /** Validate captcha */
  2. if (!empty($_REQUEST['captcha']))
  3. {
  4.     if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha'])
  5.     {
  6.         $captcha_message = "Error in the control words. Repeat the process";
  7.         echo "0";      
  8.     }
  9.     else
  10.     {


para mí q es algo de sesiones...

Última edición por humanista; 26/09/2010 a las 18:28
  #2 (permalink)  
Antiguo 26/09/2010, 20:37
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: captcha no funciona en el servidor

Pues las sesiones solo ayudan para crear variables y manipularlas mientras el usuario este dentro de tu página..

Yo creo que más bien el error radica en que no se hace la comparación correcta de entre lo que se muestra en el captcha y lo que escribe el usuario.. puedes verificar que si sea, viendo en tu código de captcha, la línea que hace esa comparación y mandando a imprimir ambas variables..

Me extraña que digas que localmente si funciona,
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #3 (permalink)  
Antiguo 27/09/2010, 04:54
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: captcha no funciona en el servidor

pues te aseguro q en local me funciona perfectamente. quizá pueda ser algo de la configuración del servidor?
  #4 (permalink)  
Antiguo 27/09/2010, 09:11
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: captcha no funciona en el servidor

sigo en lo mismo, decir que tanto:

auto_globals_jit

como

register_globals

están On en el servidor y Off en local.

no sé si eso puede influir...
  #5 (permalink)  
Antiguo 27/09/2010, 15:04
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: captcha no funciona en el servidor

me estoy volviendo loca...

he probado con otro captcha y me sucede lo mismo, me funciona perfectamente en local y no en el servidor, agrrr...

el fallo al parecer está en la variable de SESIÓN q almacena el nombre de la imagen del captcha, ya q SIEMPRE, toma el valor del captcha que introduce el usuario, por eso la comparación SIEMPRE sale como si el usuario hubiera metido bien el captcha.

lo q no sé es cómo solucionarlo...
  #6 (permalink)  
Antiguo 27/09/2010, 15:15
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: captcha no funciona en el servidor

por si os puede servir de ayuda, os pego el código de esta segunda prueba q he hecho:

formulario.php

Código PHP:
Ver original
  1. <?php session_start();?>
  2. <form action="" onsubmit="insertcomment2(<?echo $label_error_control_words; ?>'); return false;">
  3.  
  4. <img src="captcha2.php" id="tmptxt" />
  5. <input name="tmptxt" type="text" size="30" id="captcha-form"><br>
  6. <input name="checkdata" type="hidden" value="checkdata">
  7.  
  8. <button type="submit">enviar</button>

este formulario llama por ajax a un fichero .js que a su vez llama a:


insertcomment2.php

Código PHP:
Ver original
  1. $tmptxt = $_POST['tmptxt'];
  2. $checkdata = $_POST['checkdata'];
  3.  
  4. if ($_POST['checkdata'] == "checkdata")
  5. {
  6.     if ($_SESSION['tmptxt'] != $_POST['tmptxt'])
  7.     {
  8.         // mal!!!!
  9.     }
  10.     else
  11.     {
  12.                // bien!!!!
  13.          }

el tema es que siempre la variable sesión $_SESSION['tmptxt'] coge el valor que introduce el usuario a mano en el cajón del captcha por lo q siempre sale como q el captcha está bien metido, se meta lo q se meta. lo q no sé es pq siempre coge ese valor...
  #7 (permalink)  
Antiguo 27/09/2010, 15:45
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: captcha no funciona en el servidor

En la linea 6 agregale un '=' mas a ver que resulta.
Código PHP:
Ver original
  1. if ($_SESSION['tmptxt'] !== $_POST['tmptxt'])
Lo que esta claro es que la session en algun momento agarra el valor del post y en el unico momento que se comparan es alli.
  #8 (permalink)  
Antiguo 27/09/2010, 15:48
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: captcha no funciona en el servidor

gracias fernandozunni, pero ya encontré la solución.

todo el día frente al ordenador para q al final sea pq usé el mismo nombre de variable para la sesión q para el cajón en el q se introduce el captcha..... agrrrr!!!!! cuánto tiempo perdido por esta tontería. gracias por el interés.

lo q todavía no entiendo es cómo me va bien en local y mal en el servidor ¿?¿?, alguien algún día tendrá q fabricar un apache funcione = en local y en el servidor.
  #9 (permalink)  
Antiguo 27/09/2010, 21:02
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: captcha no funciona en el servidor

Que bueno que te hayas encontrado el inconveniente..

Y no tengo la menor idea de como hacías para que funcionara en local y no en el servidor (investigaré... )

Como comentario.. un doble $$, te permite usar las variables dos veces, así tengan el mismo nombre

saludos ^^
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #10 (permalink)  
Antiguo 28/09/2010, 09:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: captcha no funciona en el servidor

El problema puede ser porque tienes activado register_globals en tu server y eso hace que tengas un comportamiento como el que expones y pierdes variables, es por eso que no se recomienda su uso.

Saludos.

Etiquetas: captcha, servidores
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 21:46.