Модуль captcha

Главные вкладки

Аватар пользователя casufi casufi 2 ноября 2004 в 14:59

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

Я попробовал установить у себя на сайте этот модуль, но в нем оказалась одна сильная недоработка.

функция imagepng($im, $filename);
И строка которая выкладывала эту картинку на странице
"<img src=\"$filename\" alt=\"Captcha Image: you will need to recognize the text in it.\"/>");
используют одну и туже переменную $filename
Однако, если в настройках указать абсолютный путь (со знаком / в начале)
То функция imagepng пытается найти директорию используя в качестве корневой дирректории - корневую директорию сервера, а апач в качестве корневой директории использует корневую директорию сайта.

Внес небольшие изменения в этот модуль
теперь в настройках модуля необходимо указывать абсолютный путь к папке с картинками от корневой дирректории сайта

/* output to browser*/
$siterootpath = $_SERVER['DOCUMENT_ROOT'];
$realfilename = "$siterootpath$filename";
imagepng($im, $realfilename);
ImageDestroy($im);
$output .= form_item("",
"<img src=\"$filename\" alt=\"Captcha Image: you will need to recognize the text in it.\"/>");

Планирую переделать модуль так, чтобы в настройках можно было указывать папку относительно базовой папки друпала и чтобы модуль автоматически игнорировал / в начале каталога.

Может кто знает:
1) каким образом при помощи API посмотреть базовый линк сайта
2) где на сайте друпала можно найти как связаться с разработчиком модуля если в коде неуказан его email.

Комментарии

Аватар пользователя casufi casufi 3 ноября 2004 в 13:37
    include '/home/casufi/public_html/drupal/includes/conf.php';
    $url_path = parse_url("$base_url");
    $siterootpath = $_SERVER['DOCUMENT_ROOT'];
    $drupalrootpath = $url_path['path'];
    $realfilename = "$siterootpath$drupalrootpath$filename";
    imagepng($im, $realfilename);
    ImageDestroy($im);
    $output .= form_item("",
                "<img src=\"$drupalrootpath$filename\" alt=\"$base_url, $drupalrootpath Captcha Image: you will need to recognize the text in it.\"/>");

    $output .= form_textfield(t('Word'), 'captchaword', NULL, 15, 15, 'Please type in the letters/numbers that are shown in the image above.', NULL, TRUE);

    return array(array('title' => t('Verify Registration'), 'data'=>$output));

Последние изменения в модуле capthcha, которые позволяют в настройке указывать путь относительно рутовой дирректории drupal

Есть очень большое желание дописать проверку наличия, и автоматическое создание этой дирректории, но из текста модуля непонял в какой момент записываются данные из полей настройки, в какой процедуре нужно или можно прописать код, который выполняется в момент нажатия клавиши "Сохранить настройки", каким образом описывать глобальные переменные для всего модуля.
Если есть активные программеры на этом форуме - подскажите пожалуйста.

И еще, я никое образом нехочу нарушить авторские права создателя модуля или развивать собственный форк (модуль был написан пользователем arnabdotorg с сайта drupal.org, я внес небольшие изменения в секцию настроек этого модуля), а посему был бы очень радо если бы вы подсказали есть ли какая то возможность включить свои доработки в общую ветку, так, чтобы если они вдруг окажутся полезными - их включили в код модуля выложенного на ЦВС.

Аватар пользователя axel axel 3 ноября 2004 в 17:44

Либо создать issue в багтрекере данного модуля, либо обратиться в drupal-devel с вопросом. Первое по идее более предпочтительно, поскольку все равно все issues форвардятся в эту рассылку и даже без доступа к CVS там можно сразу патч приаттачить. Если автор забросил модуль проблем с внесением изменений не должно быть.

--
Axel

Аватар пользователя casufi casufi 3 ноября 2004 в 18:23

Спасибо за совет
у меня еще вопрос, здесь недавно было обсуждение, что предпочтительно показывать картинки используя не HTML тэги а синтаксис Drupal.
Подскажи пожалуйста что это за синтаксис?