Своя капча

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

Аватар пользователя lena_elena4 lena_elena4 11 июня 2009 в 12:00

Помогите, пожалуйста, второй день уже бьюсь.
Хочу написать капчу, не знаю, как в форме в изображении передать src.
Как в Друпале сделать динамический src в картинке.
Делаю так:

function mycaptcha_book_form($node){
$res['mycaptcha_image'] = array(
'#value' => '<img src="'. check_url(url("captcha")) .'" alt="'. t('Image CAPTCHA') .'" title="'. t('Image CAPTCHA') .'" />',
'#weight' => -1,
);
//ну и так дальше форма...

А как передать на страницу?
Пишу в хуке меню:
function mycaptcha_menu() {
$items = array();
//страница, на которой форма + капча
$items['library/%/%/%'] = array(
'title' => 'Ваша книга',
'title callback' => 'mycaptcha_info_book_title_callback',
'description' => 'Скачиваем книгу',
'page callback' => 'mycaptcha_info_book',
'page arguments' => array(1,2,3,4),
'access callback' => TRUE,
'file' => 'mycaptcha_book.inc',
'type' => MENU_CALLBACK
);
//колбэк для генерации капчи
$items['captcha'] = array(
'file' => 'mycaptcha_number.inc',
'page callback' => 'mycaptcha_number',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);

'mycaptcha_number' - генератор картинки. Не получается связать форму, которая на странице с самой капчой. Помогите, пожалуйста

Комментарии

Аватар пользователя lena_elena4 lena_elena4 11 июня 2009 в 12:45

Так и назначаю, я же написала выше, как. Путь к картинке прописываю внутри формы, путь генератору - через меню. Не работает.

Аватар пользователя lena_elena4 lena_elena4 12 июня 2009 в 13:40

Вот сделала самый простой вариант. Создаю самое простое динамическое изображение - все равно вместо картинки выводится крестик, что неправильно?

function testimagepng_menu() {
$items = array();
 $items['testimage'] = array(
    'type' => MENU_CALLBACK,
    'page callback' => 'testimagepng_image',
    'access callback' => TRUE,
        );
$items['test'] = array(
    'type' => MENU_CALLBACK,
    'page callback' => 'testimagepng_mypage',
    'access callback' => TRUE,
        );
return $items;
}

//генерируем изображение
function testimagepng_image() {
  $a = "";
  drupal_set_header("Content-type: image/png");
  $image = imagecreate(88, 31);
  $background_color = imagecolorallocate($image, 2, 122, 198);
  imagefill($image, 0, 0, $background_color);
  $a .= imagepng($image);
  imagedestroy($image);
  return $a;
}

function testimagepng_mypage(){
$content = '';
$content .= '<img src = "http://st.com/testimage" />';
return $content;
}

Аватар пользователя lena_elena4 lena_elena4 12 июня 2009 в 14:23

$a .= imagepng($image);
imagedestroy($image);
$a .= print $a;
return $a;

Зачем делать print $a;, если imagepng уже выводит изображение у броузер?
Все равно не работает.