Модуль captcha
Прислано: casufi
вт, 02/11/2004 - 11: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's blog
- Для комментирования войдите или зарегистрируйтесь
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, я внес небольшие изменения в секцию настроек этого модуля), а посему был бы очень радо если бы вы подсказали есть ли какая то возможность включить свои доработки в общую ветку, так, чтобы если они вдруг окажутся полезными - их включили в код модуля выложенного на ЦВС.
- Для комментирования войдите или зарегистрируйтесь
global $base_url;
Это из конфига, он ведь включается как обычный include и все его переменные доступны.
--
Axel
- Для комментирования войдите или зарегистрируйтесь
Либо создать issue в багтрекере данного модуля, либо обратиться в drupal-devel с вопросом. Первое по идее более предпочтительно, поскольку все равно все issues форвардятся в эту рассылку и даже без доступа к CVS там можно сразу патч приаттачить. Если автор забросил модуль проблем с внесением изменений не должно быть.
--
Axel
- Для комментирования войдите или зарегистрируйтесь
Спасибо за совет
у меня еще вопрос, здесь недавно было обсуждение, что предпочтительно показывать картинки используя не HTML тэги а синтаксис Drupal.
Подскажи пожалуйста что это за синтаксис?
- Для комментирования войдите или зарегистрируйтесь
Наверное этот theme_image ($path, $alt = '', $title = '', $attributes = NULL, $getsize = TRUE)
- Для комментирования войдите или зарегистрируйтесь




Комментарии