[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Капча
xJlaIIax
Здравствуйте, есть скрипт генерации капчи из него надо убрать строку с текстом "press to change" и всё что с ней связанно, сделать фон капчи только чёрным.
Помогите пожалуйста это сделать.

<?php

// Начинаем сессию, далее мы добавим в нее ключ
session_start();

// Получаю строку из пяти случайных символов
$string = getRandomString(5, 'lower');

// Задаем размеры капчи (самой картинки) в пикселях
$width = 108;
$height = 25;

// Строим пустое изображение. К высоте добавляется 15 пикселей, это будет белая
// полосочка снизу с текстом "press to change"

$captcha = imagecreatetruecolor($width, $height + 15);

// Получаю случайный цвет для фона
$bg = imagecolorallocate($captcha, mt_rand(10, 50), mt_rand(10, 50), mt_rand(10, 50));

// Определяю цвет фона для строки
$font_color = imagecolorallocate($captcha, mt_rand(220, 255), mt_rand(220, 255), mt_rand(220, 255));

$white = imagecolorallocate($captcha, 255, 255, 255);
$black = imagecolorallocate($captcha, 0, 0, 0);

// Заливаю капчу цветом фона, но оставляю снизу белую полоску
imagefill($captcha, 0, 0, $white);
imagefilledrectangle($captcha, 0, 0, $width, $height, $bg);

// "Разбрасываю" в случайном порядке четыре линии по капче. Цвета линий тоже
// определяются случайно

for ($i = 0; $i < 4; $i++)
{
// Создаю случайный цвет для очередной линии
$color = imagecolorallocate($captcha, mt_rand(170, 255), mt_rand(170, 255), mt_rand(170, 255));

// Черчу линию между двумя случайными точками
imageline(
$captcha,
mt_rand(0, $width - 1),
mt_rand(0, $height - 1),
mt_rand(0, $width - 1),
mt_rand(0, $height - 1),
$color
);
}

// Пишу эту случайную строку в капче
imagestring($captcha, 5, 33, 4, $string, $font_color);

// Указание пользователю
$how_refresh = 'press to change';
imagestring($captcha, 3, 2, 26, $how_refresh, $black);

// Сохраняю строку в сессии
$_SESSION['key'] = $string;

// Отсылаем заголовок браузеру, что ему сейчас будет передана картинка
header('Content-type: image/png');

// Отсылаем картинку в стандартный выходной поток (в браузер)
imagepng($captcha);

/**
* Генерирует строку случайных символов
*
*
@param int $length - длина строки
*
@param string $case - регистр генерируемых символов, может быть lower, upper,
* both. Если не передан ни один из вышеперечисленных, то
* используется lower
*
@return string - строка, состоящая из случайных символов заданной длины
*
*/

function getRandomString($length, $case = 'lower')
{
/* Латинские символы, похожие на символы кирилицы:
* в ниженем регистре: a b c e o p x l
* в верхнем регистре: A B C E H K M O P T X
*/

$ban_chars = array('a', 'b', 'c', 'e', 'o', 'p', 'x', 'l',
'A', 'B', 'C', 'E', 'H', 'K', 'M', 'O', 'P', 'T', 'X');

// В зависимости от $case формирую массив диапазонов символов, из которых
// можно выбирать

switch ($case)
{
case 'upper':
$random_chars = range('A', 'Z');
break;

case 'both':
$random_chars = array_merge(range('a', 'z'), range('A', 'Z'));
break;

case 'lower':
default:
$random_chars = range('a', 'z');
break;
}
// Добавляю цифр (ноль похож на O_o, по этому игнорируем)
$random_chars = array_merge(range(1, 9), $random_chars);
// Удаляю неоднозначные символы
$random_chars = array_diff($random_chars, $ban_chars);
// Перемешиваю массив
shuffle($random_chars);
// Беру первые $length элементов
$chars = array_slice($random_chars, 0, $length);
// Соединяю их в строку и - марш на выход.
return implode('', $chars);
}




Спустя 18 минут, 26 секунд (16.12.2011 - 02:52) caballero написал(а):
так убери строку из текста и все дела
или закоментируй imagestring($captcha, 3, 2, 26, $how_refresh, $black);

$white = $black и все дела

Спустя 10 минут, 53 секунды (16.12.2011 - 03:03) xJlaIIax написал(а):
Текст исчезнет, но генерация не нужного фона, прибавление не нужных 15 пиксилей останется и т.д.

Спустя 4 минуты, 22 секунды (16.12.2011 - 03:08) xJlaIIax написал(а):
Можно в начале дупо поменять
$captcha = imagecreatetruecolor($width, $height + 15);
на
$captcha = imagecreatetruecolor($width, $height);

Но это не желательно, потому что скрипт будет делать кучу не нужных вещей связанных с надписью "press to change".

Спустя 31 минута, 48 секунд (16.12.2011 - 03:39) xJlaIIax написал(а):
Вот вроде всё не нужное за комментировал, проверь пожалуйста:
<?php

// Начинаем сессию, далее мы добавим в нее ключ
session_start();

// Получаю строку из пяти случайных символов
$string = getRandomString(5, 'lower');

// Задаем размеры капчи (самой картинки) в пикселях
$width = 108;
$height = 25;

// Строим пустое изображение. К высоте добавляется 15 пикселей, это будет белая
// полосочка снизу с текстом "press to change"

$captcha = imagecreatetruecolor($width, $height /*+ 15*/);

// Получаю случайный цвет для фона
// $bg = imagecolorallocate($captcha, mt_rand(10, 50), mt_rand(10, 50), mt_rand(10, 50));

// Определяю цвет фона для строки

$font_color = imagecolorallocate($captcha, mt_rand(220, 255), mt_rand(220, 255), mt_rand(220, 255));

// $white = imagecolorallocate($captcha, 255, 255, 255);
// $black = imagecolorallocate($captcha, 0, 0, 0);

// Заливаю капчу цветом фона, но оставляю снизу белую полоску
// imagefill($captcha, 0, 0, $white);
// imagefilledrectangle($captcha, 0, 0, $width, $height, $bg);

// "Разбрасываю" в случайном порядке четыре линии по капче. Цвета линий тоже
// определяются случайно

for ($i = 0; $i < 4; $i++)
{
// Создаю случайный цвет для очередной линии
$color = imagecolorallocate($captcha, mt_rand(170, 255), mt_rand(170, 255), mt_rand(170, 255));

// Черчу линию между двумя случайными точками
imageline(
$captcha,
mt_rand(0, $width - 1),
mt_rand(0, $height - 1),
mt_rand(0, $width - 1),
mt_rand(0, $height - 1),
$color
);
}

// Пишу эту случайную строку в капче
imagestring($captcha, 5, 33, 4, $string, $font_color);

// Указание пользователю
// $how_refresh = 'press to change';
// imagestring($captcha, 3, 2, 26, $how_refresh, $black);

// Сохраняю строку в сессии

$_SESSION['key'] = $string;

// Отсылаем заголовок браузеру, что ему сейчас будет передана картинка
header('Content-type: image/png');

// Отсылаем картинку в стандартный выходной поток (в браузер)
imagepng($captcha);

/**
* Генерирует строку случайных символов
*
*
@param int $length - длина строки
*
@param string $case - регистр генерируемых символов, может быть lower, upper,
* both. Если не передан ни один из вышеперечисленных, то
* используется lower
*
@return string - строка, состоящая из случайных символов заданной длины
*
*/

function getRandomString($length, $case = 'lower')
{
/* Латинские символы, похожие на символы кирилицы:
* в ниженем регистре: a b c e o p x l
* в верхнем регистре: A B C E H K M O P T X
*/

$ban_chars = array('a', 'b', 'c', 'e', 'o', 'p', 'x', 'l',
'A', 'B', 'C', 'E', 'H', 'K', 'M', 'O', 'P', 'T', 'X');

// В зависимости от $case формирую массив диапазонов символов, из которых
// можно выбирать

switch ($case)
{
case 'upper':
$random_chars = range('A', 'Z');
break;

case 'both':
$random_chars = array_merge(range('a', 'z'), range('A', 'Z'));
break;

case 'lower':
default:
$random_chars = range('a', 'z');
break;
}
// Добавляю цифр (ноль похож на O_o, по этому игнорируем)
$random_chars = array_merge(range(1, 9), $random_chars);
// Удаляю неоднозначные символы
$random_chars = array_diff($random_chars, $ban_chars);
// Перемешиваю массив
shuffle($random_chars);
// Беру первые $length элементов
$chars = array_slice($random_chars, 0, $length);
// Соединяю их в строку и - марш на выход.
return implode('', $chars);
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.