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