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

Неверно введена капча


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

Даже не знаю баг это или такая техническая реализация, но все же напишу.

 

1. Открывает страницу с товаром

2. Открываем в новой вкладке еще одну страницу с товаром

3. Переходим на первую страницу с товаром и пишем комментарий

4. Получаем Неверно введена капча

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

Судя по тому, что форум не заполнен подобными сообщениями, такое практически встречается редко.

Если хотите, чтоб работало в описанной ситуации, то дорабатывать надо, и совсем непросто...

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

Капча самостоятельная и независимая.

Если на странице поставить ДВЕ капчи (иногда бывает такая потребность), то правильно работает лишь одна.

Если открыть несколько страниц сайта на разных вкладках, то опять правильно работает капча только на одной из страниц.

Предлагаемая доработка исправляет указанные недостатки.

Создавалось для версии 2.3.6.

Скорее всего, годится и для других версий 2.x.

http://simpla-tuning.com/products/kapcha-samostoyatelnaya-i-nezavisimaya

20$

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

Корс как всегда на высоте... За 5 строк - 20$
 
1) Там где выводится капча

<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></div>

Меняем на:

<div class="captcha"><img src="captcha/image.php?cap={math equation='rand(10,10000)' assign=capnum}{$capnum}" alt='captcha'/></div>
<input type="hidden" name="capnum" value="{$capnum}">

 

2) captcha/image.php меняем:

$_SESSION["captcha_code"] = $code;

на:

if(!empty($_GET['cap']))
  $_SESSION["captcha"][$_GET['cap']] = $code;
else
  $_SESSION["captcha_code"] = $code;

 

3) И там где идет проверка на php (к примеру view/ProductView.php) меняем

if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

на:

$captcha_key =  $this->request->post('capnum', 'string');
if (empty($captcha_code) || empty($_SESSION['captcha'][$captcha_key]) || $_SESSION['captcha'][$captcha_key] != $captcha_code)

 

Это так, самая примитивная реализация. Но я думаю вполне достаточно...

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

Если Вы пишете решение, делайте предварительно хотя бы минимальные проверки.
Например, Ваш метод совершенно не работает, если задействованы две капчи, одна с captcha/image.php?cap=, другая - обычная. В таких случаях Ваш код

if(!empty($_GET['cap']))
  $_SESSION["captcha"][$_GET['cap']] = $code;
else
  $_SESSION["captcha_code"] = $code;

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

Это так, самая примитивная реализация.

Согласен с оценкой. Но даже примитивная реализация должна работать правильно...

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

Если Вы пишете решение, делайте предварительно хотя бы минимальные проверки.

Например, Ваш метод совершенно не работает, если задействованы две капчи, одна с captcha/image.php?cap=, другая - обычная. В таких случаях Ваш код





if(!empty($_GET['cap']))
  $_SESSION["captcha"][$_GET['cap']] = $code;
else
  $_SESSION["captcha_code"] = $code;

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

 

Да хоть 10 капч! И что будет? Где будет портится? Если нет GET cap то пишется в captcha_code, а не captcha. Это я специально оставил что бы не ломались старые проверки....

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

Ваша правда. Виноват, недосмотрел.

 

Тогда остаются более мелкие замечания:

 

1. В view/ProductsView.php есть строки

                // Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую
                unset($_SESSION['captcha_code']);
Этот момент, видимо, тоже надо доработать...

 

2. Ваш пункт 1 - не могли бы Вы ТОЧНО написать, для какого файла это?

 

3. Аналогично пункт 2 весьма неточный- не могли бы Вы ТОЧНО написать, для какого файла это? От того, какие файлы затрагиваются в Ваших пп. 1,3, существенно зависит результат.

 

4. "Это я специально оставил что бы не ломались старые проверки." При таком подходе  остаются недостатки капчи. Например, открыли две вкладки страницы со  старой капчей, и уже одна из них не работает.

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

2-4) Я вроде не писал что инструкция изменяет все капчи на сайте... Я просто показал примеры как это можно сделать.

2 - любой шаблон где выводится капча

3 - любой php где эта капча проверяется

4 - ну я сомневаюсь что кто то будет открывать 15 форм обратной связи... Ну в любом случае все зависит от пользователя. Хочет - пусть заменяет все 

 

По поводу 1-го не критично но вполне достойно внимания:

на примере view/ProductView.php заменяем строку:

unset($_SESSION['captcha_code']);

на

unset($_SESSION['captcha'][$captcha_key]);
Ссылка на сообщение
Поделиться на другие сайты

Вот Вы сначала написали:

Корс как всегда на высоте... За 5 строк - 20$

А теперь говорите:

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

Судя по первой цитате, Вы заявляете, что решение Корса простенькое на пять строк, и ВЫ бесплатно предоставляете аналог.
А по второй цитате - это уже не решение полноценное, а так себе - "показал примеры" (может, делать было нечего).

Вот Корс своими замечаниями пытается из Вас вытянуть ПОЛНОЦЕННОЕ решение - чтобы было для всех бесплатно и качественно.
И это не получается, Вы упираетесь - должно, Вы чувствуете, что качественное решение потребует от Вас не 5 строк, а усилий побольше.
Даже не можете толком написать, в каких файлах ТОЧНО надо проводить изменения - смех...

И еще вопрос маленький - Вы сами тестировали свой метод?

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

Я решение что не написал? Его нельзя применить ко всем капчам что есть на сайте?

Решение не работает? Или я чего то не понимаю? 

 

Написанное мной решение в 5 посту действительно занимает 5 строк.

И там находится вся необходимая информация! Ее можно применить к любой капче на симпле. 

Больше расписывать я не вижу смысла.

 

А Вы бы лучше чем разводить длинную спорную дискуссию - написали бы какие файлы править. Быстрее было бы...

view/BlogView.php

view/CartView.php

view/FeedbackView.php

view/ProductView.php

view/RegisterView.php

и шаблоны в папке design/ваш_шаблон/html/:

cart.tpl

feedback.tpl

post.tpl

product.tpl

register.tpl

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

Вот теперь уже лучше - с полным-то списком.

 

Повторю:

И еще вопрос маленький - Вы сами тестировали свой метод?

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

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

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

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

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

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

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

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

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

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