Перейти к содержанию
Официальный форум поддержки Simpla

Капча - ошибки обработки / Буквенная капча


Рекомендуемые сообщения

Начиная с версии 2.2.5, капча состоит из 5 цифр, раньше было 4 цифры.

В разных местах в шаблонах, например, в файле post.tpl, при выводе поля для ввода контрольного кода используется  маска  data-format="\d\d\d\d".  Маска неправильная сразу по нескольким причинам:

1. сразу видно, что маска позволяет ввести только 4 цифры, что, конечно же, неправильно,

2. более тонкое наблюдение показывает, на самом деле маска ввода позволяет ввести и ЛЮБОЙ текст, содержащий 4 подряд идущих цифры, например  13877454, 1234test,  ppp1111mm.

3. наконец, маска позволяет ввести первую цифру 0, в то время как в контрольном  коде такого не бывает.

 

Следовало бы использовать data-format="^[1-9]\d\d\d\d$".

 


 

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

Начиная с версии 2.2.5, капча состоит из 5 цифр, раньше было 4 цифры.

В разных местах в шаблонах, например, в файле post.tpl, при выводе поля для ввода контрольного кода используется  маска  data-format="\d\d\d\d".  Маска неправильная сразу по нескольким причинам:

1. сразу видно, что маска позволяет ввести только 4 цифры, что, конечно же, неправильно,

2. более тонкое наблюдение показывает, на самом деле маска ввода позволяет ввести и ЛЮБОЙ текст, содержащий 4 подряд идущих цифры, например  13877454, 1234test,  ppp1111mm.

3. наконец, маска позволяет ввести первую цифру 0, в то время как в контрольном  коде такого не бывает.

 

Следовало бы использовать data-format="^[1-9]\d\d\d\d$".

 

 

 

изменил цифровой рандом на буквенный, как правильно теперь использовать data-format и учесть регистр букв.

         //$code = rand(10000, 99999);
         $code = "";
         for ($i = 0; $i < 5; $i++)
         $code .= chr(mt_rand(65, 90));

         $_SESSION["captcha_code"] = $code;
Изменено пользователем star
Ссылка на сообщение
Поделиться на другие сайты

в дефолтном шаблоне капча выводится для цифр вот так

	<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}"/></div>
	<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>

вот работоспособный вариант для букв, надо сделать чтобы валидными были ТОЛЬКО буквы верхнего регистра

	<div class="captcha"><img src="captcha/image.php?"/></div>
	<input id="comment_captcha" type="text" name="captcha_code" data-notice="Введите капчу"/>
Изменено пользователем star
Ссылка на сообщение
Поделиться на другие сайты

Может немного изменить заголовок поста и в готовые решения?) Отличный тутор получился ведь ;)

Ссылка на сообщение
Поделиться на другие сайты

Kors можно б и красивее сделать...

 

цифры:

data-format="^\d{5}$"

Буквы в верхнем регистре (для поста #3):

data-format="^[A-Z]{5}$"

 

буквенно-цифровой вариант (все цифры и буквы и _):

data-format="^\w{5}$"
Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

 

Kors можно б и красивее сделать...

 

цифры:

data-format="^[1-9]{5}$"

Буквы в верхнем регистре (для поста #3):

data-format="^[A-Z]{5}$"

 

буквенно-цифровой вариант (все цифры и буквы):

data-format="^\w{5}$"

 

Да, выглядит покрасивее.

Если бы еще было ПРАВИЛЬНО во всех случаях, совсем отлично было бы.

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

Ссылка на сообщение
Поделиться на другие сайты

Новый первый вариант тоже неверный. Подробно написано в первом посте, пункт 3.

Третий вариант пропускает символ подчеркивания, а в капче таких символов не применяют, специфика такая...

Ссылка на сообщение
Поделиться на другие сайты

по п3 - видел. Но считаю что это не особо важно для данной капчи.

Но если не знаете как сделать что бы 1 символ был от 1 до 9 то вот:



data-format="^[1-9]\d{4}$"

по 3й регулярке - это был лишь пример (может кому пригодится)

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Но если не знаете как сделать что бы 1 символ был от 1 до 9 то вот:

 

А если знаю, то какой вариант в этом случае?

 

Старый одесский анекдот:

- Если я пойду по этой улице, там будет вокзал?

- Вокзал будет, даже если Вы не пойдете...

 

Первый вариант теперь правильный. Осталось третий поправить.

Ссылка на сообщение
Поделиться на другие сайты

А если знаете - то думаю догадаетесь куда идти... Может вокзал найдете!

 

Что править в 3 варианте? Он что не работает? 

Ссылка на сообщение
Поделиться на другие сайты

Что править в 3 варианте? Он что не работает?

 

Третий вариант пропускает символ подчеркивания, а в капче таких символов не применяют, специфика такая...

Ссылка на сообщение
Поделиться на другие сайты

в капче можно применять спецсимволы в том числе и символ _

         $code = "";
         for ($i = 0; $i < 5; $i++)
         $code .= chr(mt_rand(91, 96));

 

было бы желание

Изменено пользователем star
Ссылка на сообщение
Поделиться на другие сайты

в капче можно применять спецсимволы в том числе и символ _

 

Применять можно. Будет ли это хорошо?

В капче частенько применяется шум в виде точек или отрезков. И использовать при этом символ подчеркивания - несерьезно...

Ссылка на сообщение
Поделиться на другие сайты

А если знаете - то думаю догадаетесь куда идти... Может вокзал найдете!

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

 

Результат оказался весьма неожиданным. Обнаружилось, что работает совершенно неправильно и первоначальный и последующие варианты от yr4ik из #8, #12.

Вот что значит не проверять....

 

Если будете писать новые варианты своего красивого решения, то настоятельная просьба все предварительно проверять. Иначе есть риск оказаться в ситуации "поспешишь - людей насмешишь".

Ссылка на сообщение
Поделиться на другие сайты

 

Опубликовано Сегодня, 08:38

 

Вот ты встал наверное с утра 8 марта и думаешь... Никто не поздравляет, значит нужно поза**вать кого то....

 

Давай пиши... Кого я насмешил? И главное чем?!

Ссылка на сообщение
Поделиться на другие сайты

Давай пиши... Кого я насмешил? И главное чем?!

 

Вопросы некорректные. Я не писал, что Вы кого-то насмешили. Читайте хоть немного внимательно.

 

Я писал о том, что методы, предложенные Вами в #8 и #12, не работают. Хотите знать детали - не ленитесь, попробуйте сделать свои изменения на практике и увидите результат.

Изменено пользователем Kors
Ссылка на сообщение
Поделиться на другие сайты

Я в посте #8 все  описал что и как проверяет каждая регулярка.

Если ты не согласен с тем что там написано - то иди нахер!

Мозги мне выносить не нужно....

Ссылка на сообщение
Поделиться на другие сайты

Я в посте #8 все  описал что и как проверяет каждая регулярка.

 

Это так.

Но Вы не видите разницу:

1. Вы описали то, что и как проверяет каждая регулярка.

2. А моя мысль совсем другая:  предложенный Вами в #8 метод НЕ работает на странице сайта.

 

Похоже, Вы зациклились на регулярке не видите разницу между частным вопросом 1 и общим для темы вопросом 2.

Полагаю, что не видите эту разницу потому, что ленитесь затратить пару минут и  проверить свой метод на практике. Думаю, что если бы проверили, сразу бы поняли  и не писали бы массу глупостей в теме.

Самоуверенность - не лучшее качество...

 

У меня уже был опыт

http://forum.simplacms.ru/topic/2368-%D1%81%D0%BC%D0%B5%D0%BD%D0%B0-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%BC-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%BE%D0%B2-%D1%88%D0%B0%D0%B1/page-4?do=findComment&comment=54281

Там два уважаемых специалиста никак не могли понять тривиальную ошибку в своем методе. Обсуждать реальные аргументы и делать секундные проверки они не желали,  а вместо этого соревновались в потоке грязных ругательств в мой адрес. Дошло до них что-то примерно через год.

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

Ссылка на сообщение
Поделиться на другие сайты

Ставлю data-format="^[1-9]\d\d\d\d$" и все равно можно вводить сколько угодно чисел.

<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></div>     
<input style="height:32px" class="input_captcha" id="comment_captcha" type="number" name="captcha_code" data-format="^[1-9]\d\d\d\d$" data-notice="Введите капчу" required />
 
Ссылка на сообщение
Поделиться на другие сайты

На демо сайте

1. В админке создаю копию шаблона

2. В копии в файле cart/tpl изменяю на data-format="^[1-9]\d\d\d\d$"

3. Пытаюсь ввести в качестве капчи 1 цифру - не пускает

4. Пытаюсь ввести в качестве капчи 10 цифр - не пускает

5. Пытаюсь ввести в качестве капчи 5 цифр - проходит дальше.

 

То есть стандартно работает. Видимо, у Вас ошибка индивидуальная, связанная с Вашими изменениями...

Ссылка на сообщение
Поделиться на другие сайты

Если аналогично опробовать метод yu4ik из #8, то не работает во ВСЕХ вариантах. Просто не дает оформить заказ при правильной капче.

Ужасно интересно, сам yu4ik свой способ проверял?

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...