Foros del Web » Programando para Internet » PHP » Zend »

Zend Captcha no borra imagenes

Estas en el tema de Zend Captcha no borra imagenes en el foro de Zend en Foros del Web. Hola amigos; Estoy teniendo un problema con un captcha en Zend Framework, implemente el formulario con zend_captcha que se ve en el codigo. Funciona muy ...
  #1 (permalink)  
Antiguo 12/05/2009, 18:57
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 9
Zend Captcha no borra imagenes

Hola amigos;

Estoy teniendo un problema con un captcha en Zend Framework, implemente el formulario con zend_captcha que se ve en el codigo.
Funciona muy bien, el unico problema es que las imagenes no se borran de la carpeta donde se guardan las imagenes (imagenes/captchas).
En el Zend_Form_Element_Captcha le puse al valor timeout = 300, que segun entiendo es el valor para que posteriormente se borre la imagen, sin embargo las imagenes no se borran.
Les coloco el codigo para ver si me falta algo, porque ya le estuve dando vueltas al asunto y no le he encontrado solucion.


Código PHP:
public function formu(){
    
    
$form=new Zend_Form;
    
$form->setAction('/registro/index/controlzendform');
    
$form->setMethod('post');
    
$form->setAttribs(array('HtmlTag',array('class' => 'form_usuario')));
    
//$form->setDecorators(array('FormElements',array(array('data'=>'HtmlTag'),array('tag'=>'table','cellspacing'=>'8'))));

    
    
$username = new Zend_Form_Element_Text('username');
    
$username->addValidator('alnum');
    
$username->setRequired(true);
    
$username->addFilter('StringtoLower');
    
$username->setLabel('Usuario:');
    
$username->addValidator('StringLength'false, array(5,14));
    
$username->setAttrib('class','form_usuario');
    
$username->addDecorator('HtmlTag',array('class' => 'form_usuario'));
    
//$username->addDecorator('HtmlTag',array('tag' => 'span'));
    
    
$password = new Zend_Form_Element_Password('password');
    
$password->addValidator('StringLength'false, array(4,14));
    
$password->setLabel('Password:');
    
$password->setRequired(true);
    
$password->setAttrib('class','form_usuario');
    
$password->addDecorator('HtmlTag',array('tag' => 'div','class' => 'form_usuario'));
    
    
    
$dospassword = new Zend_Form_Element_Password('dospassword');
    
$dospassword->addValidator('StringLength'false, array(4,14));
    
$dospassword->setLabel('Confirmar Password:');
    
$dospassword->setRequired(true);
    
$dospassword->setAttrib('class','form_usuario');
    
$dospassword->addDecorator('HtmlTag',array('class' => 'form_usuario'));
    
$dospassword->addValidator('Identical'false, array($this->getRequest()->getParam('password')));  
   
    
$captcha = new Zend_Form_Element_Captcha('foo', array(
    
'label' =>"Verificacion:",
    
'captcha' => array(
    
'captcha' => 'image',//Figlet
    
'wordLen' => 4,
    
'timeout' => 300,
    
'gcFreq' => 50,
    
'font' => PUBLIC_PATH .'/library/fuentecaptcha/Arial.ttf',
    
'fontSize' => '24',
    
'width' => 160,
    
'height' => 50
    
'imgDir' => PUBLIC_PATH '/public/images/captchas/',
    
'imgUrl' => PUBLIC_PATH .'/public/images/captchas/',
    
'expiration' => 50,
     ),
));
    
$captcha->addDecorator('HtmlTag',array('class' => 'form_usuario'));
    
    
/*
    $fuente=PUBLIC_PATH .'/library/fuentecaptcha/Arial.ttf';
    $ruta=PUBLIC_PATH .'/public/images/captchas/';
    
    $captcha=new Zend_Form_Element_Captcha('foo');
    $captcha->setExpiration(50);
    $captcha->setLabel('Verificacion del captcha');
    $captcha->setFont($fuente);
    $captcha->setImgDir($ruta);
    $captcha->setImgUrl($ruta);
    $captcha->setWordLen(5);
    $captcha->setWidth(190);
    $captcha->setHeigt(50);
    */
    
    
$submit = new Zend_Form_Element_Submit('login');
    
$submit->setLabel('Loguear');
    
    
$form->addElements(array(
            
$username,
            
$password,
            
$dospassword,
            
$captcha,
            
$submit
        
));
    
    
    return 
$form;
    
    
    

Saludos.
  #2 (permalink)  
Antiguo 12/05/2009, 19:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Zend Captcha no borra imagenes

El timeout es el tiempo de vida que es valido el captcha. Tienes que usar el método setExpiration para establecer el tiempo de vida.

Saludos.
  #3 (permalink)  
Antiguo 22/02/2011, 10:40
 
Fecha de Ingreso: junio-2007
Mensajes: 152
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Zend Captcha no borra imagenes

Cita:
Iniciado por GatorV Ver Mensaje
El timeout es el tiempo de vida que es valido el captcha. Tienes que usar el método setExpiration para establecer el tiempo de vida.

Saludos.
Estoy usando el zetExpiration('10') pero no me borra la imagen funciona esto??

Código PHP:
 $captcha->setTimeout('600')
                ->
setWordLen('5')
                ->
setHeight('60')
                ->
setWidth('150')
                ->
setExpiration('10')
                ->
setFont($_SERVER['DOCUMENT_ROOT'].'/font/arial.ttf')
                ->
setImgDir($_SERVER['DOCUMENT_ROOT'].'/images/captcha'); 
  #4 (permalink)  
Antiguo 22/02/2011, 10:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Zend Captcha no borra imagenes

El setExpiration no borra la imagen, sino que informa a Zend cuanto tiempo es valido ese captcha.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 22/02/2011, 11:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Zend Captcha no borra imagenes

De hecho sí lo hace, lo que hace es en base al gcFreq (frecuencia para correr el garbage collector) ejecuta el gc al hacer el render de la imagen y borra las imagenes más viejas del directorio.

Saludos.
  #6 (permalink)  
Antiguo 22/02/2011, 11:09
 
Fecha de Ingreso: junio-2007
Mensajes: 152
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Zend Captcha no borra imagenes

Cita:
Iniciado por GatorV Ver Mensaje
De hecho sí lo hace, lo que hace es en base al gcFreq (frecuencia para correr el garbage collector) ejecuta el gc al hacer el render de la imagen y borra las imagenes más viejas del directorio.

Saludos.
Disculpa GatorV vos decis que automaticamente ejecuta gc y borra las imagenes del directorio pero yo tengo lo siguiente pero no lo borra

Código PHP:
    private function generateCaptcha() {
        
$captcha = new Zend_Captcha_Image();
        
$captcha->setTimeout('240')
                ->
setWordLen('5')
                ->
setHeight('60')
                ->
setWidth('150')
                ->
setExpiration('240')
                ->
setFont($_SERVER['DOCUMENT_ROOT'].'/font/arial.ttf')
                ->
setImgDir($_SERVER['DOCUMENT_ROOT'].'/images/captcha');
        
$captcha->generate();    //genera session y crea imagen
        
return $captcha->getId();   //devuelve el ID
    

No las borra que le puedo pasar para que las borre?? En que me estoy confundiendo

Desde ya muchas gracias GatorV
  #7 (permalink)  
Antiguo 22/02/2011, 11:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Zend Captcha no borra imagenes

setExpiration lo único que hace es marcar por cuantos segundos una imagen ya expiro, tu le pasas 240 segundos, por lo que al otro user entrar y volver a cargar el captcha (llamando a render) se debería de borrar la imagen (sí es que se ejecuto el GarbageCollector (que se basa en gcFreq)).

Saludos.
  #8 (permalink)  
Antiguo 22/02/2011, 11:18
 
Fecha de Ingreso: junio-2007
Mensajes: 152
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Zend Captcha no borra imagenes

Cita:
Iniciado por GatorV Ver Mensaje
setExpiration lo único que hace es marcar por cuantos segundos una imagen ya expiro, tu le pasas 240 segundos, por lo que al otro user entrar y volver a cargar el captcha (llamando a render) se debería de borrar la imagen (sí es que se ejecuto el GarbageCollector (que se basa en gcFreq)).

Saludos.

Gracias GatorV acabo de usar lo siguiente "->setGcFreq(300)" y funciono gracias

Código PHP:
$captcha = new Zend_Captcha_Image();
        
$captcha->setTimeout(300)
                ->
setWordLen('5')
                ->
setHeight('60')
                ->
setWidth('150')
                ->
setExpiration(300)
                ->
setGcFreq(300)
                ->
setFont($_SERVER['DOCUMENT_ROOT'].'/font/arial.ttf')
                ->
setImgDir($_SERVER['DOCUMENT_ROOT'].'/images/captcha'); 

Etiquetas: captcha
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 10:16.