X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Капча
dimjan4
dimjan4
Topic Starter сообщение 2.3.2009, 22:14; Ответить: dimjan4
Сообщение #1


Я начал учить массивы и не нашол ничего лучше, как сделать капчу с массивами...
Принцып работы:
Есть 3 массива:
текст, шрифт, цвет
Скрипт на угад выбирает по 1 значеню с каждого массива и использует их в дальнейшем...Потом создаётся картинка 150 * 60
Вот, помогите, где ошибка??
[PHP]<?php
/////////////////////////CONFIGURATION//////////////////////
/////несколько слов/////
$text = array();
$text[] = "asoe";
$text[] = "fhfvd";
$text[] = "ruhfs";
$text[] = "vftte";
$text[] = "phes";
$text[] = "rfyhf";
$text[] = "lsegv";
$text[] = "fdvhhn";
$text[] = "pjgfv";
$text[] = "vghyhk";
//////Несколько шрифтов///////
$font = array();
$font[] = "FDMedian.ttf";
$font[] = "Buff.ttf";
$font[] = "DeadbdS_.ttf";
//////Несколько цветов///////
$colorw = array();
$colorw[] = "255, 0, 0"; //Красный
$colorw[] = "0, 255, 0"; //зелёный
$colorw[] = "0, 0, 255"; //синий
$colorw[] = "255, 0, 255";//яро-филетовый
$colorw[] = "100, 0, 100";//фолетовый
$colorw[] = "0, 0, 0";//чёрный

///////////////////////FUNCTION//////////////////////////
#Случайный текст
// Генерируем случайный индекс массива
$index1 = rand(0,count($text) - 1);
// Выводим случайный элемент массива
$vtext = $arr[$index1];
#Случайный шрифт
// Генерируем случайный индекс массива
$index2 = rand(0,count($font) - 1);
// Выводим случайный элемент массива
$vfont = $arr[$index2];
#Случайный цвет
// Генерируем случайный индекс массива
$index3 = rand(0,count($colorw) - 1);
// Выводим случайный элемент массива
$vcolor = $arr[$index3];
////////////////////////////////
///Создадим картинку
$im = imagecreate (150, 60);
$color = imagecolorallocate ($im, $vcolor);

imagettftext ($im ,$vcolor, getcwd().$vfont, $vtext);

Header ("content-type: image/png");
ImagePng($im);
?>[/PHP]
Выводит вот что:
Warning: Wrong parameter count for imagecolorallocate() in D:\Program Files\VertrigoServ\www\capcha.php on line 48

Warning: Wrong parameter count for imagettftext() in D:\Program Files\VertrigoServ\www\capcha.php on line 50

Warning: Cannot modify header information - headers already sent by (output started at D:\Program Files\VertrigoServ\www\capcha.php:48) in D:\Program Files\VertrigoServ\www\capcha.php on line 52
‰PNG  IHDR–<ѕHС)
Warning: imagepng() [function.imagepng]: gd-png: fatal libpng error: Invalid number of colors in palette in D:\Program Files\VertrigoServ\www\capcha.php on line 53

Warning: imagepng() [function.imagepng]: gd-png error: setjmp returns error condition in D:\Program Files\VertrigoServ\www\capcha.php on line 53
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MoolkiN
MoolkiN
сообщение 3.3.2009, 7:44; Ответить: MoolkiN
Сообщение #2


Стоке 48
$color = imagecolorallocate ($im, $vcolor);


int imagecolorallocate (resource image, int red, int green, int blue)

imagecolorallocate() возвращает идентификатор цвета, представляющий цвет, составленный из данных RGB-компонентов. Аргумент im возвращается от imagecreate().
red, green и blue это значения красного, зелёного и синего компонентов запрашиваемого цвета. Эти параметры являются целыми числами в диапазоне от 0 до 255. imagecolorallocate() обязана вызываться для создания каждого цвета, используемого в изображении image.$white = imagecolorallocate ($im, 255, 255, 255);
$black = imagecolorallocate ($im, 0, 0, 0);

Возвращает -1, если выделение не удалось.


Строка 50
imagettftext ($im ,$vcolor, getcwd().$vfont, $vtext);


array imagettftext (resource image, int size, int angle, int x, int y, int col, string fontfile, string text)

imagettftext() рисует строку text на изображении image, начиная с координат x, y (верхний левый угол обозначается 0, 0), на угол angle цветом col, с использованием файла шрифта TrueType fontfile. В зависимости от используемой в РНР версии библиотеки GD, если fontfile не начинается с ведущего '/', '.ttf' будет присоединено к имени файла, а библиотека будет пытаться искать файл с таким именем по всему пути шрифтов, определённому для библиотеки.

Координаты x, y будут определять базовую точку/basepoint первого символа (ориентировочно - левый верхний угол первого символа). Это отличается от imagestring(), где x, y определяют верхний правый угол первого символа.

Angle дан в градусах, где 0 градусов это чтение текста слева направо (направление 3 часа), а более высокие значения представляют ротацию против часовой стрелки (т.е. значение 90 должно дать чтение текста снизу вверх).

Fontfile это путь к используемому вами TrueType-шрифту.

Text это текстовая строка, которая может включать символьные последовательности UTF-8 (в форме {) для доступа к символам за пределами первых 255.

Col это индекс цвета. Использование отрицательных значений даёт эффект отключения antialiasing.

imagettftext() возвращает массив из 8 элементов, представляющих 4 точки, образующих бокс текста. Порядок точек таков: нижняя левая, нижняя правая, верхняя правая, верхняя левая. Эти точки относительно текста, вне зависимости от угла, так что "верхний левый" означает верхний левый угол, когда вы смотрите на текст горизонтально.

Вот пример скрипта, производящего чёрный GIF 400x30 пикселов со словами "Testing..." белым шрифтом Arial.
Пример 1. imagettftext <?php
header ("Content-type: image/gif");
$im = imagecreate (400, 30);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
imagettftext ($im, 20, 0, 10, 20, $white, "/path/arial.ttf", "Testing...Omega: Ω");
imagegif ($im);
imagedestroy ($im);
?>


Строка 53
ImagePng($im);


int imagepng (resource image [, string filename])

imagepng() выводит GD-поток изображения (image) в формате PNG на стандартный вывод (обычно в браузер) или, если задано имя файла аргументом filename, в файл.<?php
$im = imagecreatefrompng ("test.png");
imagepng ($im);
?>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 3.3.2009, 18:11; Ответить: dimjan4
Сообщение #3


:cry:Я всё прочёл и не понял в чём ошибка!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 5.3.2009, 19:07; Ответить: dimjan4
Сообщение #4


А вы не можете сказать, начало то у меня правильное:
[PHP]<?php
/////////////////////////CONFIGURATION//////////////////////
/////несколько слов/////
$text = array();
$text[] = "asoe";
$text[] = "fhfvd";
$text[] = "ruhfs";
$text[] = "vftte";
$text[] = "phes";
$text[] = "rfyhf";
$text[] = "lsegv";
$text[] = "fdvhhn";
$text[] = "pjgfv";
$text[] = "vghyhk";
//////Несколько шрифтов///////
$font = array();
$font[] = "FDMedian.ttf";
$font[] = "Buff.ttf";
$font[] = "DeadbdS_.ttf";
//////Несколько цветов///////
$colorw = array();
$colorw[] = "255, 0, 0"; //Красный
$colorw[] = "0, 255, 0"; //зелёный
$colorw[] = "0, 0, 255"; //синий
$colorw[] = "255, 0, 255";//яро-филетовый
$colorw[] = "100, 0, 100";//фолетовый
$colorw[] = "0, 0, 0";//чёрный

///////////////////////FUNCTION//////////////////////////
#Случайный текст
// Генерируем случайный индекс массива
$index1 = rand(0,count($text) - 1);
// Выводим случайный элемент массива
$vtext = $arr[$index1];
#Случайный шрифт
// Генерируем случайный индекс массива
$index2 = rand(0,count($font) - 1);
// Выводим случайный элемент массива
$vfont = $arr[$index2];
#Случайный цвет
// Генерируем случайный индекс массива
$index3 = rand(0,count($colorw) - 1);
// Выводим случайный элемент массива
$vcolor = $arr[$index3];
//////////////////////////////// [/PHP]
??:wacko:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ворон
Ворон
сообщение 5.3.2009, 20:56; Ответить: Ворон
Сообщение #5


dimjan4, заранее извиняюсь за вероятный оффтоп.
я вижу, что вы сильно мучаетесь с созданием капчи. мне кажется, что вот такой пример легче реализуется (проверка повешена на отправку. заполните поля, нажмите отправить и посмотрите на капчу).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 5.3.2009, 21:14; Ответить: dimjan4
Сообщение #6


Да, в инете много скриптов капчи, но того, что мне надо- нет! Я хочу , чтобы в этом скрипте можно было добавлять свои шрифты, слова (буквы+цифры) , цвет! Если в инете есть такой скрипт, пожалуйста , помогите найти.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Качественная регистрация в 3046 каталогов+ капча
10 shtaketo 6166 25.2.2008, 11:38
автор: vadim


 



RSS Текстовая версия Сейчас: 24.4.2024, 0:14
Дизайн