2011-12-27 63 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 
}