2011-12-27 15 views
0

私はCodeIgniterのcaptchaヘルパーを使用して、登録ユーザーのCaptcha画像を生成しています。私はcreate_captcha($vals)機能を使用してキャプチャを生成するときに、自動的に「img_path」に保存されてキャプチャ画像の自動削除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 
    ); 

のCAPTCHA画像:私はこのようないくつかの値をしました。有効期限は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ガイドに記載されているように保存してみてください。

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 
} 
関連する問題