[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: капча
Каролина
помогите сделать капчю на сайт



Спустя 4 минуты, 24 секунды (20.02.2012 - 21:28) inpost написал(а):
google => captcha
Бери готовые примеры.

Спустя 26 секунд (20.02.2012 - 21:28) Игорь_Vasinsky написал(а):
поможем - с чего начнём?

Спустя 1 минута, 32 секунды (20.02.2012 - 21:30) Каролина написал(а):
даже незнаю с чего хочете

Спустя 2 минуты, 39 секунд (20.02.2012 - 21:32) Игорь_Vasinsky написал(а):
начнём с того что нужно

1. сформировать случайные символы
2. нарисовать их
3. сделать фон, чтоб хоть малость, но сбить бота


Спустя 31 секунда (20.02.2012 - 21:33) Каролина написал(а):
ну приступим токо я скоро выйду с сайта

Спустя 2 минуты, 15 секунд (20.02.2012 - 21:35) walerus написал(а):
Каролина Приступили ), - покажите как Вы формируете случайные символы cool.gif

Спустя 5 минут, 9 секунд (20.02.2012 - 21:40) inpost написал(а):
В каком смысле "выйду с сайта"

Спустя 49 секунд (20.02.2012 - 21:41) Каролина написал(а):
я ща ухожу

Спустя 4 минуты, 19 секунд (20.02.2012 - 21:45) inpost написал(а):
Я снова тебя не понял. Ну да ладно.

Форум ПХП программистов подразумевает, что тут общаются программисты между собой и задают вопросы в теме программирования.
Актуальным является общение на конкретную тематику, то есть разбираем чужой код, советуем и помогаем развиваться в области программирования.
Уже не первый вопрос, где ты хочешь, чтобы за тебя что-то писали, а на самом деле ты должна сама этим заниматься, а не клянчить у нас.
За тебя мы делаем только в том случае, если ты есть заказчик, то есть платишь денюшку.

Для того, чтобы справиться с твоим вопросом:
- Поискать в гугле готовые решения, попробовать поставить их для начала. Тут как минимум работы на несколько часов. Совет я дал 5 минут назад, а ты продолжаешь, значит палец об палец не ударила.
- Написать, это в 100 раз тяжелее, для этого нужна библиотека GD. Лучше всего о ней рассказывается в книжке Котерова, раздел по работе с графикой.

Спустя 3 минуты, 5 секунд (20.02.2012 - 21:48) Игорь_Vasinsky написал(а):
прикольно.. вы делайте, а я пошла biggrin.gif это чё за мода?

Спустя 7 минут, 50 секунд (20.02.2012 - 21:56) Каролина написал(а):
НЕТ Я ПОЗЖЕ ВОЙДУ ЗАВТРА

Спустя 45 секунд (20.02.2012 - 21:57) Игорь_Vasinsky написал(а):
спасибо что предупредили rolleyes.gif

Спустя 2 минуты, 6 секунд (20.02.2012 - 21:59) Каролина написал(а):
спс что согласились помочь

Спустя 39 секунд (20.02.2012 - 22:00) walerus написал(а):
хД ))), меня последнее время начали веселить программистки ))

Спустя 3 минуты, 32 секунды (20.02.2012 - 22:03) Jack_White написал(а):
Каролина
необходимо знать твой уровень, возможно ты еще не готова к написанию капчи, если нет, то начни поэтапно как писал
Цитата (Игорь_Vasinsky @ 20.02.2012 - 18:32)
начнём с того что нужно

1. сформировать случайные символы
2. нарисовать их
3. сделать фон, чтоб хоть малость, но сбить бота

сделай сначала первый пункт, если все норм то двигайся дальше...
Если это сложно то начни с азов, а после уже когда почувствуешь силы то сделаешь все сама... там в принципе не так уж и сложно если понимать что делать

Спустя 6 минут, 30 секунд (20.02.2012 - 22:10) walerus написал(а):
Цитата
там в принципе не так уж и сложно если понимать что делать

та да, вообще ерунда ), ей такими темпами до нового года как раз занятий хватит rolleyes.gif

Спустя 1 минута, 21 секунда (20.02.2012 - 22:11) nugle написал(а):
walerus
Цитата
ей такими темпами до нового года как раз занятий хватит

ты че? новый год уже наступил biggrin.gif

Спустя 28 минут, 3 секунды (20.02.2012 - 22:39) walerus написал(а):
nugle До следующего ), я бы выложил скрипт, но такое отношение у мадамы ))), по этому ждемс - завтра. cool.gif

Спустя 21 час, 2 секунды (21.02.2012 - 19:39) Каролина написал(а):
ну давайте начнем

Спустя 16 минут, 56 секунд (21.02.2012 - 19:56) Каролина написал(а):
чо молчим

Спустя 22 минуты, 21 секунда (21.02.2012 - 20:18) Nikitian написал(а):

Спустя 2 часа, 52 минуты, 42 секунды (21.02.2012 - 23:11) walerus написал(а):
Nikitian - взял весь кайф обломил mad.gif , мы так ждали этого момента, а ты biggrin.gif

Спустя 7 часов, 9 минут, 5 секунд (22.02.2012 - 06:20) Игорь_Vasinsky написал(а):
Каролина
1. сформировать случайную строку из 5 символов

<?php
//Сформировать случайное число
$digits = rand(11, 9999);
//Получить его хеш - md5 или sha1 - 32 и 40 символов соответственно
$string = sha1($digits);
//Получить кусок из хеша случайного числа из 5ти символов
//$string = substr($string, 14, 5);
//Можно выбирать рандомый кусок из этой 40 символьной строки - выбирать начало отсчёта в случайном порядке - максим старт до 35 позиции,
//т.к. строка нам нужна в 5 символов, а в хеше их 40

$string = substr($string, rand(1, 35), 5);
//Теперь ещё больше рандомизировать
echo $string = str_shuffle($string);
?>


а когда разберём пример и поймём что происходило каждом шаге - то можно записать одной строкой
echo $digits = str_shuffle(substr(sha1(rand(11, 9999)), rand(1, 35), 5));

Спустя 9 часов, 11 минут, 13 секунд (22.02.2012 - 15:31) Каролина написал(а):
можно пример как рисовать их даже самый тупой пример
спс зарание

Спустя 1 минута, 14 секунд (22.02.2012 - 15:33) Каролина написал(а):
Цитата (walerus @ 21.02.2012 - 20:11)
Nikitian - взял весь кайф обломил mad.gif , мы так ждали этого момента, а ты biggrin.gif

я все ровно тем не могу пользоваться не переживай то не возьму

Спустя 10 минут, 54 секунды (22.02.2012 - 15:44) walerus написал(а):
Каролина - та я за тебя переживаю, если "тем" не смогла воспользоваться, зачем тогда вообще браться за капчу ? "Там" - все готово как бы - бери да пользуйся, а у тебя какие причины появились, по которым ты не смогла воспользоваться ?


Спустя 5 минут, 58 секунд (22.02.2012 - 15:50) Каролина написал(а):
я не захотела там брать и все закрыли тему про тот сайт

Спустя 21 минута, 44 секунды (22.02.2012 - 16:11) Каролина написал(а):
ну так че пример дадите

Спустя 33 минуты, 14 секунд (22.02.2012 - 16:45) walerus написал(а):
Ну так че, может возьмешь с того сайта пример и переделаешь его под себя?? или че ? не хватает скорости скачать архив? или может архиватора нет, или че - может не знаешь какие функции смотреть ?, вообще непонятно че ты хошь...

Спустя 18 минут, 34 секунды (22.02.2012 - 17:03) Каролина написал(а):
давайте возьмем это что дальше сделаем

Спустя 5 минут, 10 секунд (22.02.2012 - 17:08) walerus написал(а):
laugh.gif

Спустя 1 минута, 2 секунды (22.02.2012 - 17:09) Каролина написал(а):
ну я там взяла терь что я потом сама переделаю


Спустя 10 минут, 13 секунд (22.02.2012 - 17:19) Каролина написал(а):
а фон таким будет интересно чето будет видно

Спустя 7 минут, 4 секунды (22.02.2012 - 17:27) walerus написал(а):
Каролина - будет видно, если в установках цвет выставишь светлее чем фон., там готовый скрипт, с кучей настроек под себя - пользуйся.

Спустя 34 секунды (22.02.2012 - 17:27) killer8080 написал(а):
Каролина
почитай статью на ирбисе, там разжованный пример. Ты же хочешь понять как это работает, раз готовое решение тебя не интересует?

Свернутый текст
PS Николай, правда там уязвимость так и не прикрыл ph34r.gif

Спустя 5 минут, 10 секунд (22.02.2012 - 17:32) Каролина написал(а):
я хочу с форумом делать

Спустя 5 минут, 46 секунд (22.02.2012 - 17:38) Игорь_Vasinsky написал(а):
<?php
//Создаём "чистый" холст для рисования шириной 200 пикселей и высотой 300 пикселей
$i = imageCreate(200, 300);
//Делаем белый фон
$color = imageColorAllocate($i, 255, 255, 255);
//Устанавливаем красный цвет
$color = imageColorAllocate($i, 255, 0, 0);
//Рисуем горизонтальный текст
imageString($i, 5, 80, 150, "капча", $color);
//Рисуем вертикальный текст
imageStringUp($i, 5, 80, 150, "капча", $color);
//Отправляем заголовок с mime-type
Header("Content-type: image/jpeg");
//Выводим изображение
imageJpeg($i);
//Уничтожаем идентификатор и освобождаем ресурсы сервера
imageDestroy($i);
?>

Спустя 23 минуты, 42 секунды (22.02.2012 - 18:02) Каролина написал(а):
спс проверила скриптик воще не видно букв но и на том спс вы мне очень помогаете

Спустя 2 минуты (22.02.2012 - 18:04) Каролина написал(а):
я чуть чуть поправила
<?php
//Создаём "чистый" холст для рисования шириной 200 пикселей и высотой 300 пикселей
$i = imageCreate(200, 300);
//Делаем белый фон
$color = imageColorAllocate($i, 300, 300, 300);
//Устанавливаем красный цвет
$color = imageColorAllocate($i, 0, 0, 0);
//Рисуем горизонтальный текст
imageString($i, 5, 80, 150, "капча", $color);
//Рисуем вертикальный текст
imageStringUp($i, 5, 8, 15, "капча", $color);
//Отправляем заголовок с mime-type
Header("Content-type: image/jpeg");
//Выводим изображение
imageJpeg($i);
//Уничтожаем идентификатор и освобождаем ресурсы сервера
imageDestroy($i);
?>

тут немного видно

Спустя 1 минута, 30 секунд (22.02.2012 - 18:05) Игорь_Vasinsky написал(а):
ну его можно ест-но модифицировать есть-но под себя

Спустя 4 минуты, 29 секунд (22.02.2012 - 18:10) Каролина написал(а):
а буквы которые я кинула как там прекрепить

Спустя 33 минуты, 24 секунды (22.02.2012 - 18:43) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 22.02.2012 - 16:38)
//Делаем белый фон
$color = imageColorAllocate($i, 255, 255, 255);
//Устанавливаем красный цвет
$color = imageColorAllocate($i, 255, 0, 0);

чё за фигня? blink.gif
Цитата (Каролина @ 22.02.2012 - 17:04)
//Делаем белый фон
$color = imageColorAllocate($i, 300, 300, 300);

Каролина
откуда ты взяла 300? Там не может быть больше 255 smile.gif

Спустя 11 минут, 42 секунды (22.02.2012 - 18:55) Игорь_Vasinsky написал(а):
Этот кусок скопипастен, вообще где то с использованием шрифта код валяется, но найти не могу .

да - цвета не в RGB три пары цифер не более 255

Цитата
//Делаем белый фон
$color = imageColorAllocate($i, 255, 255, 255);
//Устанавливаем красный цвет
$color = imageColorAllocate($i, 255, 0, 0);


я в сам озадачен - но по фату если не ошиьаюсь так и работает - фон и текст

Спустя 1 минута, 21 секунда (22.02.2012 - 18:56) killer8080 написал(а):
Игорь_Vasinsky
там у тебя одна переменная для двух цветов :)

Нужно было как то так
//Делаем белый фон
$white = imageColorAllocate($i, 255, 255, 255);
//Устанавливаем красный цвет
$red = imageColorAllocate($i, 255, 0, 0);

Спустя 13 минут, 59 секунд (22.02.2012 - 19:10) Каролина написал(а):
я вас выслушала терь можно ктото один кинет весь код

Спустя 8 минут, 13 секунд (22.02.2012 - 19:18) killer8080 написал(а):
Цитата (Каролина @ 22.02.2012 - 18:10)
я вас выслушала терь можно ктото один кинет весь код

user posted image

Спустя 4 минуты, 16 секунд (22.02.2012 - 19:23) Каролина написал(а):
ну вас непонять то одного слушать или второго

Спустя 10 минут, 44 секунды (22.02.2012 - 19:33) inpost написал(а):
Кто-то вас жестко троллит, а вы повелись.
laugh.gif laugh.gif laugh.gif

Спустя 30 минут, 49 секунд (22.02.2012 - 20:04) Игорь_Vasinsky написал(а):
user posted image

мадмуазель, может обсудим стоимость работ?

папиков здесь не встречал, а ваш настрой напрочь отбивает что то вам показывать - вы тупо хотите готовый результат, а так как я временно не принимаю заказы - обратитесь к моим товарищам из группы "ЛжеЭксперт"

Спустя 4 дня, 22 часа, 39 минут, 5 секунд (27.02.2012 - 18:43) Каролина написал(а):
я хочу делать дружно

Спустя 1 минута, 57 секунд (27.02.2012 - 18:45) Каролина написал(а):
я сделала форму но она не высвечуется почемуто

<?php

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

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

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

// Строим пустое изображение. К высоте добавляется 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 - 22),
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);
}
?>
<?

echo'<form>
<input type="text" name="nomer" size="20"></td></tr>
</form>'

?>

Спустя 6 минут, 12 секунд (27.02.2012 - 18:51) Visman написал(а):
Каролина, зачем мучаться с созданием велосипеда, если он лежит тут http://www.captcha.ru/

Спустя 1 минута, 51 секунда (27.02.2012 - 18:53) Каролина написал(а):
я хочу свою создать

Спустя 3 минуты, 21 секунда (27.02.2012 - 18:57) shmali написал(а):
Цитата
я вас выслушала терь можно ктото один кинет весь код



Цитата
я хочу свою создать


biggrin.gif

ПС: Простите , прочитал всю тему , настроение отличное )) спасибо за тему!!!

Спустя 14 часов, 40 минут, 5 секунд (28.02.2012 - 09:37) redreem написал(а):
Каролина

кооперируйтесь с dilfin smile.gif

Спустя 1 день, 10 часов, 15 минут, 4 секунды (29.02.2012 - 19:52) Каролина написал(а):
помогите

Спустя 2 минуты, 4 секунды (29.02.2012 - 19:54) inpost написал(а):
Каролина
За деньги любой каприз smile.gif Ты согласна?

Спустя 3 минуты, 2 секунды (29.02.2012 - 19:57) Visman написал(а):
Как она высветится, если ты в одном файле формируешь картинку и тут же выдаешь форму юзеру.
Посмотри как это делается в kCaptcha.

Спустя 3 минуты, 6 секунд (29.02.2012 - 20:00) Каролина написал(а):
а вот так
<?php
session_start();
?>
<form action="" method="post">
<p>Enter text shown below:</p>
<p><img src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}
unset($_SESSION['captcha_keystring']);
?>

Спустя 8 минут, 13 секунд (29.02.2012 - 20:08) inpost написал(а):
Да хоть так, хоть по разному, у кого деньги, тот и правила читает smile.gif

Спустя 3 дня, 14 часов, 16 минут, 55 секунд (4.03.2012 - 10:25) Каролина написал(а):
прравльно






Спустя 1 день, 4 часа, 26 минут, 22 секунды (5.03.2012 - 14:51) Каролина написал(а):
это не получается

<?php

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

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

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

// Строим пустое изображение. К высоте добавляется 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 - 22),
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);
}
?>
<?php

session_start();
?>
<form action="" method="post">
<
p>Enter text shown below:</p>
<
p><img src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<
p><input type="text" name="keystring"></p>
<
p><input type="submit" value="Check"></p>
</
form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}

unset($_SESSION['captcha_keystring']);
?>

Спустя 12 минут (5.03.2012 - 15:03) Visman написал(а):
Каролина, зачем два разных файла у тебя объедены в один?
Получается идет вывод картинки, а потом туда же пихается html!

Это один файл
<?php
/**
* Генерирует строку случайных символов
*
*
@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);
}

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

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

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

// Строим пустое изображение. К высоте добавляется 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 - 22),
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);


А это второй

<?php
session_start();
?>
<form action="" method="post">
<
p>Enter text shown below:</p>
<
p><img src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<
p><input type="text" name="keystring"></p>
<
p><input type="submit" value="Check"></p>
</
form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}

unset($_SESSION['captcha_keystring']);
?>

в котором вызывается первый как картинка
<p><img src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p>

Спустя 3 часа, 41 минута, 1 секунда (5.03.2012 - 18:45) Каролина написал(а):
спс user posted image

Спустя 14 минут, 57 секунд (5.03.2012 - 18:59) Rigel написал(а):
Хм, интересно, если я так попрошу помощи, мне тоже все напишут? smile.gif

Спустя 1 час, 19 минут, 9 секунд (5.03.2012 - 20:19) killer8080 написал(а):
Цитата (Rigel @ 5.03.2012 - 17:59)
Хм, интересно, если я так попрошу помощи, мне тоже все напишут?

Свернутый текст
Если назовешься женским именем, а чтоб наверняка, на аватарку фотку топ модели laugh.gif

Спустя 1 час, 10 минут, 16 секунд (5.03.2012 - 21:29) inpost написал(а):
Rigel
Конечно! Женское имя, и, главное, не забывай писать "была", а не "был". А то просекут и не напишут за тебя всё!!! smile.gif

Спустя 8 часов, 18 минут, 51 секунда (6.03.2012 - 05:48) Visman написал(а):
Ну, блин!
Трансвеститов тут развели, понимаешь biggrin.gif

Спустя 3 дня, 12 часов, 15 минут, 14 секунд (9.03.2012 - 18:03) Каролина написал(а):
но как они соединяться

Спустя 10 минут, 28 секунд (9.03.2012 - 18:13) Visman написал(а):
Тут
<p><img src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p>

укажи имя первого файла, который картинку выводит, вместо ./

Спустя 57 минут, 38 секунд (9.03.2012 - 19:11) Каролина написал(а):
а терь попонятней


_____________
wmu (U398141202367)
wmr (R321962242752)[SIZE=7][COLOR=purple]
Быстрый ответ:

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