#11 2011.09.20 09:50

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Скажем нет капче!

Я вот подумал и надумал вот что. Видел один демотиватор, как там типа человек может читать слова, даже если буквы кроме первой и последней (вроде или 2х первых и последних) в нем разбросаны/переставлены/не на своих местах. Думаю сделать такую каптчу. Давать слова разбросанные, а вводили чтоб нормальные или числа (чтеыре=4).
Пока не знаю как реализовать, но думаю стоит попробовать. smile
- - - -
Ну может быть сначала нормальное слово в мд5 заширить, потом в input hidden. И после перемещать исходное и показать пользователю.
Вот эта тема: habrahabr.ru/blogs/programming/122163/
а там до меня уже додумались big_smile

Отредактировано tipsun (2011.09.20 10:18)

Неактивен

#12 2011.09.20 10:30

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Скажем нет капче!

интересная идея.
вот только md5 хэш нельзя светить, иначе просто переставляя буквы и сверяя хэш, можно получить правильное слово.
тут нужен просто массив соответствий array('чтеыре' => 'четыре');

Неактивен

#13 2011.09.20 11:01

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Скажем нет капче!

Цифры будет легко разгадать. Там всего то: 1, 4-20, 30-90-1000 ну одно слово чтоб было.

Неактивен

#14 2011.09.20 11:36

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Скажем нет капче!

С телефона писал, может че неправильно. Уже забыл код smile

Код:

1
span style="color: #0000BB"><?php$random = 'vosem';$len = strlen($random);$toMix = substr($random, 1, $len-2);$mixed = str_shuffle($toMix);echo $random{0}.$mixed.$random{$len-1};?>

Отредактировано tipsun (2011.09.20 12:10)

Неактивен

#15 2011.09.20 12:27

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Скажем нет капче!

нет, так не получится с мультбайтовой кодировкой.

Неактивен

#16 2011.09.20 12:31

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Скажем нет капче!

Ну я вспомнил сейчас smile
Там mb_substr(), mb_strlen(). А вот суффле нет sad
Добавлено спустя   1 минуту  56 секунд:
С php.net

Код:

1
span style="color: #0000BB"><?phpfunction unicode_shuffle($string, $chars, $format = 'UTF-8'){ for($i=0; $i<$chars; $i++) $rands[$i] = rand(0, mb_strlen($string, $format)); $s = NULL; foreach($rands as $r) $s.= mb_substr($string, $r, 1, $format); return $s;}?>

Неактивен

#17 2011.09.20 20:45

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Скажем нет капче!

Чет у меня пока нет хороших мыслей как реализовать: первую и последнюю не трогая перемещать буквы.

Код:

1
2
3
4
preg_split('//u', 'слово') дает [0]=null, [1]='c' ... [last]=null
 
unset($array[0], $array[последний ключ/знач])
можно...

Отредактировано tipsun (2011.09.20 20:48)

Неактивен

#18 2011.09.20 21:36

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Скажем нет капче!

Код:

1
span style="color: #0000BB"><?php$captchaLib = array('один' => 1,'четыре' => 4,'пять' => 5,'шесть' => 6,'семь' => 7,'восемь' => 8,'девять' => 9,'десять' => 10,'одиннадцать' => 11,'двенадцать' => 12,'тринадцать' => 13,'четырнадцать' => 14,'пятнадцать' => 15,'шестнадцать' => 16,'семнадцать' => 17,'восемнадцать' => 18,'девятнадцать' => 19,'двадцать' => 20,'тридцать' => 30,'сорок' => 40,'пятьдесят' => 50,'шестьдесят' => 60,'семьдесят' => 70,'восемьдесят' => 80,'девяносто' => 90,'двести' => 200,'тристо' => 300,'четыресто' => 400,'пятьсот' => 500,'шестьсот' => 600,'семьсот' => 700,'восемьсот' => 800,'девятьсот' => 900,'тысяча' => 1000);function captcha($lib=0) { if(!is_array($lib)) return false; $word = array_rand($lib); preg_match_all('/.{1}/u', $word, $letters); $letters = $letters[0]; $count = sizeof($letters); define('LLN', $count-1); define('FL', $letters[0]); define('LL', $letters[LLN]); unset($letters[0], $letters[LLN]); shuffle($letters); return FL.implode($letters).LL; }echo captcha($captchaLib);?>

Отредактировано tipsun (2011.09.20 22:23)

Неактивен

#19 2011.09.20 22:05

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Скажем нет капче!

Я уже знаю что ответят: "Сделай класс!" big_smile
Да и так все класс big_smile
Ну а по делу, да надо бы.
Сразу там же проверку сделать.
- - - -
Можно было бы просто массив со словами >3 букв.

Код:

1
span style="color: #0000BB"><?php//Проверкаif(in_array($_GET['captcha'], $captchaLib)) { echo 'All right!'; }//Бред, не смотрите =)?>

Отредактировано tipsun (2011.09.21 19:41)

Неактивен

#20 2011.09.20 22:38

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Скажем нет капче!

ну если знаешь, то почему не делаешь?)

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.010 s