2011-12-27 2 views
0

나는 CodeIgniter의 captcha 도우미를 사용하여 등록 사용자의 보안 문자 이미지를 생성하고 있습니다. 좀 값이이 같이했습니다 : 나는 create_captcha($vals) 기능을 사용하여 보안 문자를 생성 할 때자동 삭제 captcha 이미지 CI

$vals = array(
     'word' => $rand_word, 
     'img_path' => 'resources/captcha/', 
     'img_url' => 'http://localhost/fitinline/resources/captcha/', 
     'font_path' => './path/to/fonts/texb.ttf', 
     'img_width' => 150, 
     'img_height' => 40, 
     'expiration' => 7200 
    ); 

보안 문자 이미지가 자동으로 'IMG_PATH'에 저장. 만료 인덱스는 기본적으로 2 시간 (7200)으로 설정되어 있습니다. 하지만 2 시간이 넘으면 'img_path'에서 이미지를 확인하고 그 이미지는 여전히 저장됩니다. 해당 captcha 이미지 또는 무엇을 자동으로 삭제할 수있는 누락 된 구성이 있습니까?
감사합니다.

답변

1

:

$vals = array(
    'word' => 'Random word', 
    'img_path' => './captcha/', 
    'img_url' => 'http://example.com/captcha/', 
    'font_path' => './path/to/fonts/texb.ttf', 
    'img_width' => '150', 
    'img_height' => 30, 
    'expiration' => 7200 
    ); 

(초) "만료"가 삭제되기 전에 이미지가 보안 문자 폴더에 남아 시간을 의미한다. 기본값은 2 시간입니다.

1

은 올바르게 작동합니다. (디렉토리 사용 권한을 확인 했습니까?)

나는 이것에 대해 잘 모르지만, create_captcha()의 결과를 CI Guide에서 언급 한대로 저장해보십시오.

CREATE TABLE captcha (
captcha_id bigint(13) unsigned NOT NULL auto_increment, 
captcha_time int(10) unsigned NOT NULL, 
ip_address varchar(16) default '0' NOT NULL, 
word varchar(20) NOT NULL, 
PRIMARY KEY `captcha_id` (`captcha_id`), 
KEY `word` (`word`) 
); 
4

cron이 없으면 만료일 이후에 이미지가 삭제되지 않습니다. 하지만 누군가가 보안관을 시작하면 거기에 없어야하는 이미지가 있는지 확인하고 삭제할 것입니다.

당신은 captcha를 등록했다고합시다. 나는 새로운 계정을 만들고있다. 새로운 captcha는 또한 만료 7200 시간으로 생성됩니다. 7200 개가 넘는 폴더에 captcha 이미지가있는 폴더를 열면 사진이 그대로 남아 있습니다. 다음 날 누군가 다른 사람이 새 계정을 만들면 새로운 보안 문자가 만들어집니다. 그러나 그 순간 도우미는 거기에 없어야 할 이미지가 있음을 확인하고 (어제부터) 그는 그것을 삭제합니다.

그래서 captcha 폴더에 이미지가 있다는 것에 대해 걱정할 필요가 없습니다. 새로운 보안 문자가 만들어지고 시간이 만료되면 즉시 삭제해야합니다. 당신이 도우미가 트리거 될 때까지, 당신은 이미지를 제거하기위한 스크립트를 작성해야합니다 waint 및 cron과 그것을 추가 할 수없는 경우

// ----------------------------------- 
    // Remove old images 
    // ----------------------------------- 

: 당신을위한 코드의 일부가 captcha_helper 파일에서 확인할 수 있습니다. CI 문서를 기반으로

0
/*Add script to delete all captcha file*/ 

$files = glob('./captcha/*'); // get all file names 
foreach($files as $file) 
{ 
    // iterate files 
    if(is_file($file)) 
    unlink($file); // delete file 
}