Foros del Web » Programando para Internet » PHP »

Problema securimage captcha variable vacia?.

Estas en el tema de Problema securimage captcha variable vacia?. en el foro de PHP en Foros del Web. Gente de los foros de la gran web. Ando con un problema con implementar securimage. El securimage es un sistema de captcha , que al ...
  #1 (permalink)  
Antiguo 28/10/2008, 21:01
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Problema securimage captcha variable vacia?.

Gente de los foros de la gran web.

Ando con un problema con implementar securimage.

El securimage es un sistema de captcha , que al parecer se implementa muy rapido y con poco codigo.

http://www.phpcaptcha.org/documentation/quickstart/

EL problema es que en mi caso . Lo implemente en mi web de prueba en el servidor de prueba gratishost y funciono.

Cuando lo llevo a mi server oficial , no em funciona , es decir , su subo los archivos para testear si el server cumple los requerimientos pasa la prueba y funciona todo.

El problema que tengo es , que al parecer mi codigo no me esta comprobando si el codigo de imagen ingresado es correcto o no. Y al parecer la variable

captcha_code
Código:
<input type="text" name="captcha_code" size="10" maxlength="6" />
No se pasa por post , y al aprobe de muchas formas como.

<input type="text" name="'.$_POST['captcha_code'].'" size="10" maxlength="6" />

Recogerla con

$imagen = $_POST['captcha_code'];

pero nada. sigue sin funcionar.


Aver si alguien me da una mano , la verdad qeu los bots ya se me estar viniendo ensima y hace 3 dias que duermo pensando en este maldito codigo.

LEs dejo el codigo completo de el archivo register.php de mi web aver si alguien me quiere un poquito.

Código PHP:
<div id="register">
<?php
echo '<h1>'.MSG_register.'</h1>';
$website->include_language_definition("modulos/user");
include_once 
$_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';

$securimage = new Securimage();
if(
$website->get_config("allow_registration"))
{

if(!isset(
$_SESSION['xid'])){
    
$errors=array();
    
$user_added=false;
    if(isset(
$_POST['suite_button']))// Verificacion y insercion de los datos
    
{
        
// Check the data
        
if(user_exist(addslashes($_POST['pseudo']))){
            
$errors[]=MSG_usertaken;
        }
        else{
            
$check_pseudo=eregi('[A-Za-z0-9]{3,}',$_POST['pseudo']);
            if (!
$check_pseudo || strlen($_POST['pseudo']) >50 )
                
$errors[]=MSG_pseudoinvalid." "sprintf(MSG_atleastmax,3,50) ;
        }
        
        if(
$_POST['pass1']=="")
            
$errors[]= MSG_enterpassword;
        if(
$_POST['pass1']!=$_POST['pass2'])
            
$errors[]=MSG_passerror;
        if(
mail_exist($_POST['email'])){
            
$errors[]= MSG_mailused;
        
        }
        else{
            
$check_mail=eregi('^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*$',$_POST['email']);
            if (!
$check_mail)
                
$errors[]=MSG_notvalidemail;
        }
        if(
strlen($_POST['signature'])>150)
            
$errors[]=MSG_sigtoolong;
        
        if(
$_POST['avatar']!="none.gif")
            
$avatar="avatar_base/".$_POST['avatar'];
        else
            
$avatar="";
        
        
            if(
count($errors)!=0){
                
                echo
'<div class="cadre">';
                echo
'<h2>'.MSG_ERRORS.'</h2>';
                echo
'<ul>';
                for(
$i=0;$i<sizeof($errors);$i++)
                {    
                    echo 
"<li>"$errors[$i]."</li>";
                } 
                echo
'</ul>';
                echo
'</div>';
            }
            
if (
$securimage->check($_POST['captcha_code']) == false) {
  
// the code was incorrect
  // handle the error accordingly with your other error checking
echo'<div class="cadre">';
                echo
'<h2>'.MSG_ERRORS.'</h2>';
  
// or you can do something really basic like this
  
die('Codigo De Seguridad Incorrecto <a href="javascript:history.back(1)">Intenta Nuevamente</a>');
echo
'</div>';
}

            else{
                
$user_added=true;

$email2=$_POST['email'];
$pseudo2=$_POST['pseudo'];
$pass12=$_POST['pass1'];
                
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
//dirección del remitente
$headers .= 'From: Nuevo Usuario xxxxxx <[email protected]>' "\r\n";
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: [email protected]\r\n";
mail($email2"Nuevo Usuario xxxxx""Gracias Por registrarse en www.xxxx.com.ar<br>Sus datos De usuario en nuestra web son <br> Usuario:$pseudo2 , Password:$pass12 <br>Puede cambiar sus datos desde la opcion Mi cuenta > Editar Mi cuenta <br> Guarde Este Correo <br> Cualquier consulta Puede Hacerla desde el contacto  de la web. "$headers);

                
$sql="INSERT INTO users (pseudo,pass_crypt,email,avatar,signature,register_date,theme) VALUES ('".addslashes($_POST['pseudo'])."','".md5($_POST['pass1'])."','".$_POST['email']."','".$avatar."','".addslashes($_POST['signature'])."','".time()."','".$_POST['theme']."')";
                
$req=mysql_query($sql) or die('SQL ERROR'); 
                
// enviamos el email con los datos del usuario

                
redirection("index.php",5,"success",sprintf(MSG_welcomeuser,"<b>".htmlentities($_POST['pseudo'])."</b>") );
                
            }
    }
    
    if(!
$user_added){ 
        echo
'<form name="register_form" method="post" action="?p=register" enctype="multipart/form-data">';//
        
echo'<table >
          <tr>
            <th colspan="2">'
.MSG_userinfo.'</th>
          </tr>
          <tr>
            <td class="dark">'
.MSG_pseudo.'</td>
            <td class="bright"><input type="text" name="pseudo" '
;
            if(isset(
$_POST['pseudo']))
                echo 
'value="'.$_POST['pseudo'].'"';
            echo
'/>* '.sprintf(MSG_atleastmax,3,50).'</td>
          </tr>
          <tr>
            <td class="dark">'
.MSG_password.'</td>
            <td class="bright"><input type="password" name="pass1" '
;
            if(isset(
$_POST['pass1']))
                echo 
'value="'.$_POST['pass1'].'"';
            echo
' />*</td>
          </tr>
           <tr>
            <td class="dark">'
.MSG_passwordverif.'</td>
            <td class="bright"><input type="password" name="pass2" '
;
            if(isset(
$_POST['pass2']))
                echo 
'value="'.$_POST['pass2'].'"';
            echo
' />*</td>
          </tr>
          <tr>
            <td class="dark">'
.MSG_mail.'</td>
            <td class="bright"><input type="text" name="email" '
;
            if(isset(
$_POST['email']))
                echo 
'value="'.$_POST['email'].'"';
            echo
' />*</td>
          </tr>
          <tr>
            <td class="dark">'
.MSG_signature.'</td>
            <td class="bright"><textarea name="signature" cols="30" rows="5">'
;
            if(isset(
$_POST['signature']))
                echo 
$_POST['signature'];
            echo
'</textarea><br /> ('.MSG_characteresmax.' - NO HTML)</td>
          </tr>
          <tr>
                <td class="dark"><b>'
.MSG_theme.'</b></td>
                <td class="bright">'
;
            echo
'<select name="theme" >';
                
$sql="SELECT id,name FROM themes WHERE activated=1 order by id asc";
                
$req=mysql_query($sql);
                while(
$data=mysql_fetch_array($req))
                {
                    echo
'<option value="'.$data['id'].'" '.$s.'>'.$data['name'].'</option>';
                }
            echo
"</select>";
            echo
'</td>
          <tr>
            <td class="dark">'
.MSG_avatar.'</td>
            <td class="bright">'
;
            echo
'<select name="avatar" onChange ="imgDepart1.src=\'avatars/avatar_base/\' + form.avatar.options[form.avatar.selectedIndex].value;">';
            
$dossier opendir ("avatars/avatar_base/"); 
            
$i 0;
            if(isset(
$_POST['avatar']) && $_POST['avatar']=="none.gif")
            {
                
$fichier1="none.gif";
                
$s2="selected";
            }
            while (
$fichier readdir ($dossier)){
                if (
$fichier != "." && $fichier != ".." && $fichier != "index.html" && $fichier != "avatar_base_temp" && $fichier != "Thumbs.db" && $fichier != "none.gif") {
                    if(!isset(
$fichier1)) $fichier1=$fichier;
                    
//$fichier = substr($fichier, 0, strlen($fichier)-4);
                        
if(isset($_POST['avatar']) && $_POST['avatar']==$fichier ){
                            
$s="selected";
                            
$fichier1=$fichier;
                        }
                        else{
                            if(!isset(
$fichier1)) $fichier1=$fichier;
                            
$s="";
                        }
                        echo 
'<option value="'.$fichier.'" '.$s.'>'.$fichier.'</option>';
                    
$i $i 1;
                }
            } 
        
closedir ($dossier);
                if(!isset(
$s2))$s2="";
                echo
'<option value="none.gif" '.$s2.'>'.MSG_noavatar.'</option>';
                echo
"</select>";
                echo
'<img name="imgDepart1" src="avatars/avatar_base/'.$fichier1.'" alt="'.MSG_noavatar.'" border="1" style="vertical-align:top">';
            echo
'</td>
          </tr>'
;
          
          echo
'
          <tr>
            <td class="dark">Codigo de Seguridad</td>
            <td class="bright">'
;
echo 
'<img id="captcha" src="/securimage/securimageshow.php" alt="CAPTCHA Image" /><br>Ingresar Codigo Imagen:<input type="text" name="'.$_POST['captcha_code'].'" size="10" maxlength="6" /><br>';
//echo '<a href="#" onclick="document.getElementById('captcha').src = "/securimage/securimage_show.php?"+Math.random();" >Reload Image1</a>';
echo'</td>
          </tr>'
;
          
        echo 
'</table>';

        echo
'<p><input type="submit" value="'.MSG_subscribe.'" name="suite_button"></p></form>';


    }
}
else{
    
redirection("index.php",3,"msgerror",MSG_alreadyconnected);
}


}
// Fin del registro
else
    echo
'<p class="msgerror">'.MSG_registerclose.'</p>';
?>
</div>
Bueno despues de ver el video de como escribir un buen post les plantie un buen proplema jajaj

Salu2
  #2 (permalink)  
Antiguo 29/10/2008, 04:09
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Problema securimage captcha variable vacia?.

Hola

en esta linea


Código PHP:

echo '<img id="captcha" src="/securimage/securimageshow.php" alt="CAPTCHA Image" /><br>Ingresar Codigo Imagen:<input type="text" name="'.$_POST['captcha_code'].'" size="10" maxlength="6" /><br>'
en el name del form, no has de poner eso, lo que has puesto seria si ya se hubiese enviado mediante POST, pero todavia no esta enviado, o eso es lo que entiendo, pon name="captcha_code"

Y a si lo podras recoger con

$seguridad = $_POST['captcha_code'];
  #3 (permalink)  
Antiguo 29/10/2008, 13:00
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Problema securimage captcha variable vacia?.

Hola jaronu gracias pro responder hermano.

Te comento que ya lo he probado asi y no funciona me sigue tirando que el codigo es erroneo.

Otra cosa que me ha llamado la atencion.

Haec unos dias , me dejo de funcionar el formulario de recuperacion de contraseña.
NO me tomaba el action de el formulario que tenia algo asi

recuperar_pass.php

loq ue tube que hacer para que me funcione es , por casualidad quitarle el _ a ese archivo dejandolo asi recuperarpass.php porqeu si queria ingresar a ese archivo me decia que no lo encontraba.

Es decir el server se esta comportando raro. En este form como ven tambien le tube que quitar el _ a securimage_show.php porque tampoco me funcionaba.

Por que puede ser eso?

Con respecto a el captcha sigue sin funcionarme. y Sigo probando y escuchando idea.

Salu2 Y gracias por responder.
  #4 (permalink)  
Antiguo 29/10/2008, 16:44
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Problema securimage captcha variable vacia?.

Cita:
Iniciado por jaronu Ver Mensaje
Hola

en esta linea


Código PHP:

echo '<img id="captcha" src="/securimage/securimageshow.php" alt="CAPTCHA Image" /><br>Ingresar Codigo Imagen:<input type="text" name="'.$_POST['captcha_code'].'" size="10" maxlength="6" /><br>'
en el name del form, no has de poner eso, lo que has puesto seria si ya se hubiese enviado mediante POST, pero todavia no esta enviado, o eso es lo que entiendo, pon name="captcha_code"

Y a si lo podras recoger con

$seguridad = $_POST['captcha_code'];

Seguro que cambiaste esta linea??

donde recoges el valor del capcha¿

cual es el codigo del capcha??

guardas la variable generada por el captcha en una variable de session??

Pon los codigos

Un saludo
  #5 (permalink)  
Antiguo 29/10/2008, 16:51
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Problema securimage captcha variable vacia?.

Aver en el form puse asi

Código PHP:
echo '<img id="captcha" src="/securimage/securimageshow.php" alt="CAPTCHA Image" /><br>Ingresar Codigo Imagen:<input type="text" name="captcha_code" size="10" maxlength="6" /><br>'
Y la recojo asi y chekeo.

Código PHP:
$seguridad $_POST['captcha_code'];

if (
$securimage->check($seguridad) == false) {
  
// the code was incorrect
  // handle the error accordingly with your other error checking
echo'<div class="cadre">';
                echo
'<h2>'.MSG_ERRORS.'</h2>';
  
// or you can do something really basic like this
  
die('Codigo De Seguridad Incorrecto <a href="javascript:history.back(1)">Intenta Nuevamente</a>');
echo
'</div>';
}

            else{ 

ingresa los datos a la db

El captcha al parecer trabaja con sessiones.
En las primeras lineas tengo esto
Código PHP:
<?php
error_reporting
(E_ALL); ini_set('display_errors''on'); 
session_start();// aca inicia la session del captcha pero da errror entonecs la saco
echo '<div id="register">';
echo 
'<h1>'.MSG_register.'</h1>';
$website->include_language_definition("modulos/user");
include_once 
$_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';

$securimage = new Securimage();
if(
$website->get_config("allow_registration"))
{
Y me da el error este

Notice: A session had already been started - ignoring session_start() in /home/xxxxx/public_html/modulos/register/register.php on line 3


Osea que ya esta iniciada la session. osea que no me hace falta iniciarla otra vez?

y Los archivos del captcha lo podes bajar desde aca http://www.phpcaptcha.org/latest.zip

Y esta es la guia rapida.
http://www.phpcaptcha.org/documentation/quickstart/

Ya nos e mas que hacer.

Última edición por EmaD; 29/10/2008 a las 16:57
  #6 (permalink)  
Antiguo 29/10/2008, 17:03
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Problema securimage captcha variable vacia?.

asi

$seguridad = $_POST['captcha_code'];

la recoges del formulario

pero el archivo que crea el code del capcha usara sesiones

Tambien habrias de tener algo a si para compara un codigo captcha con otro

$seguridad_captcha = $_SESSION['codigo_del_capcha'];
y a si comparar

if($seguridad==$seguridad_captcha)

Pon el code del captcha
  #7 (permalink)  
Antiguo 29/10/2008, 17:09
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Problema securimage captcha variable vacia?.

mmm mira le puse algo asi para ver si toma el post de captcha_code y al lo esta tomando.

Código PHP:
$seguridad=$_POST['captcha_code'];
if (
$securimage->check($seguridad) == false) {
  
// the code was incorrect
  // handle the error accordingly with your other error checking
echo'<div class="cadre">';
                echo
'<h2>'.MSG_ERRORS.'</h2>';
  
// or you can do something really basic like this
  
echo "valor post: $seguridad <br>";
  die(
'Codigo De Seguridad Incorrecto <a href="javascript:history.back(1)">Intenta Nuevamente</a>');
   
echo
'</div>';

Y la me da codigo incorrecto pero esta tomando el valor de la variable me sale esto,.

valor post: 3zf35u

Codigo De Seguridad Incorrecto Intenta Nuevamente

Debe estar faltando lo que dices de la session que no te entiendo como debe ser.

El codigo de el captcha securimage.php lo puede bajar de aca , no lo pego aqui porque es muy largo y no em deja,.

http://www.phpcaptcha.org/latest.zip

Es un archivo pequeño para bajar.



ya me voy arrimando a algo por lo menos , gracias. VOy a ver lo de la sesison.
  #8 (permalink)  
Antiguo 29/10/2008, 17:25
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Problema securimage captcha variable vacia?.

aqui es donde la clase que usas guarda el captcha code en la sesion y las funciones para comprovarlo

Código PHP:
function saveData()
  {
    
$_SESSION['securimage_code_value'] = strtolower($this->code);
  }

  
/**
   * Validate the code to the user code
   *
   * @access private
   *
   */
  
function validate()
  {
    if ( isset(
$_SESSION['securimage_code_value']) && !empty($_SESSION['securimage_code_value']) ) {
      if ( 
$_SESSION['securimage_code_value'] == strtolower(trim($this->code_entered)) ) {
        
$this->correct_code true;
        
$_SESSION['securimage_code_value'] = '';
      } else {
        
$this->correct_code false;
      }
    } else {
      
$this->correct_code false;
    }
  }

  
/**
   * Get the captcha code
   *
   * @since 1.0.1
   * @return string
   */
  
function getCode()
  {
    if (isset(
$_SESSION['securimage_code_value']) && !empty($_SESSION['securimage_code_value'])) {
      return 
$_SESSION['securimage_code_value'];
    } else {
      return 
'';
    }
  }

  
/**
   * Check if the user entered code was correct
   *
   * @access private
   * @return boolean
   */
  
function checkCode()
  {
    return 
$this->correct_code;
  } 
esto es del archivo secureimage.php

Hay ejemplos mucho mas sencillos en el foro el las FAQ'S creo

si no ve al buscador del foro y escribe seguridad captcha php

ABRES LA SESSION EN CADA ARCHIVO???

Un saludo
  #9 (permalink)  
Antiguo 30/10/2008, 15:02
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Problema securimage captcha variable vacia?.

La session esa la abro solo en ese archivo

session_start();

PEro me dice que ya esta abierta.

NO entiendo mucho como hace con la session y que mas debo poner , supuestamente con colocar

session_start();

en la faq del securimage sobra pero no me funciona. con eso basta?

COn respecto a el phpcaptcha uqe esta en el foro no lo pude hacer funcionar ,e s decir no puedo hacer que me muestre la imagen. NO se por que parece mas simple pero no logro que me muestre la imagen.

Salu2
  #10 (permalink)  
Antiguo 30/10/2008, 15:27
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Problema securimage captcha variable vacia?.

en las en el code de las FAQ's creo que tienes que hacer tu la imagen y el archivo captcha te fabrica el code captcah agraga el code de seguridadd ala imagen, pero haz tu la imagen

Un saludo
  #11 (permalink)  
Antiguo 30/10/2008, 15:33
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Problema securimage captcha variable vacia?.

mirate esta pagina es de okram y es muy buena para captcha

http://phpcaptcha.phperu.net/

Un saludo
  #12 (permalink)  
Antiguo 30/10/2008, 16:09
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Problema securimage captcha variable vacia?.

Si probe la de okram , desgraciadamente a esa no la pude hacer funcionar.

Pero encontre esta. Par alos que necesitan un captcha simple y fasil de implementar se los recomiendo. solo tienen que seguir el ejemplo del CaptchaSecurityImages.php y el form.php y sale andando solo , bien fasil.

http://cvs.phpcoin.com/cgi-bin/viewv...ddons/captcha/

Wiii y atengo andando el registro con captcha jejeje.

jaronu muchisimas gracias hermano la verdad te pasas.

Unabrazo ya estoy mas aliviado jeje
  #13 (permalink)  
Antiguo 30/10/2008, 16:13
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Problema securimage captcha variable vacia?.

Me alegro EmaD, de que al final te haya salido bien.

Un saludo
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 17:28.