2011-12-27 41 views
0

我使用CodeIgniter的验证码助手为注册用户生成验证码图像。我有一定的价值是这样的:自动删除验证码图像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”当我使用create_captcha($vals)函数生成的验证码。有过期指数,我默认设置为2小时(7200)。但超过两个小时后,我检查'img_path'中的图像,图像仍保存在其上。是否有任何缺失的配置,使自动删除这些验证码图像或什么,。?
谢谢

回答

1

基于CI文档:

$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 
    ); 

的“到期”(秒)表示的图像将多久保留在验证码文件夹之前将被删除。默认值是两个小时。

1

是验证码正常工作吗? (你有检查目录权限吗?)

我不确定这一点,但尝试保存create_captcha()数据库的结果,如CI指南中所述。

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。我正在创建新帐户。新的验证码也会创建7200到期时间。在超过7200之后,您用captcha的图像打开文件夹,图片仍然存在。第二天有其他人创建新帐户,新的验证码被创建。但在那一刻,帮手看到有一个不应该存在的图像(从昨天开始),他删除它。

所以你不应该担心,在captcha文件夹中有图像。只要一些新的验证码被创建并且他们的时间到期,它们应该被删除。您可以在captcha_helper文件检查存在的部分代码:

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

如果你不能waint直到助手是触发,你应该去除图像创建脚本,并将其添加与cron。

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 
}