Автоматическое удаление капчи изображения CI - PullRequest
0 голосов
/ 27 декабря 2011

Я использую помощник капчи из CodeIgniter для генерации изображения капчи для регистрации пользователя. У меня есть какое-то значение, подобное этому:

$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», оно все еще сохраняется на нем. Есть ли недостающие настройки, позволяющие автоматически удалять эти изображения с картинки или что?
Спасибо

Ответы [ 4 ]

4 голосов
/ 27 декабря 2011

без cron, изображения не будут удаляться после истечения срока их действия.Но когда кто-то вызовет помощника по проверке капчи, он проверит, нет ли там изображения, которого не должно быть, и удалит его.

Допустим, вы получили капчу при регистрации.Я создаю новую учетную запись.Новая капча также создается с 7200 сроком действия.Вы открываете свою папку с изображениями капчи после более чем 7200, и изображения все еще там.На следующий день кто-то другой создает новую учетную запись, создается новая капча.Но в этот момент помощник видит, что есть изображение, которого там не должно быть (со вчерашнего дня), и он удаляет его.

Так что вам не стоит беспокоиться, что в папке капчи есть изображения.Их следует удалить, как только будет создана новая капча и истечет их время.Вы можете проверить в файле captcha_helper, в котором есть часть кода:

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

Если вы не можете переписываться, пока не будет запущен помощник, вы должны создать скрипт для удаления изображений и добавить его в cron.

1 голос
/ 01 мая 2012

На основании документации по КИ:

$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 голос
/ 27 декабря 2011

капча работает нормально?(Вы проверили права доступа к каталогу?)

Я не уверен в этом, но попробуйте сохранить результаты create_captcha() базы данных, как указано в Руководстве по конфигурации.

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`)
);
0 голосов
/ 20 января 2017
/*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
}
...