Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 22, 2011 12:01:35

alexandre
От:
Зарегистрирован: 2010-11-16
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

captcha bottle

Понадобилось сделать каптчу функция получает jpeg:

f = StringIO.StringIO()
img.save(f, "JPEG")
raw = f.getvalue()
И передает её далее шаблону:
captcha = get_captcha()
return templ('aaa', captcha=captcha)
шаблон
<div> {{captcha}}</div>
Шаблон выводит большую строчку я так понимаю картинка преобразованная в строку. Как мне в шаблоне получить картинку а не строчку?



Офлайн

#2 Апрель 22, 2011 15:33:58

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Офлайн

#3 Апрель 22, 2011 16:21:55

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

captcha bottle

обычно делают так:

<div>
<img src="http://mysite.com/captcha" />
</div>
По адресу, указанному в src сидит скрипт, который генерирует “большую строчку я так понимаю картинка преобразованная в строку” и отдает ее в качестве ответа. При этом скрипт записывает правильный ответ в сессию, а в http-заголовке Content-Type указывает правильный тип данных, например “image/jpeg” или “image/png”.



Офлайн

#4 Апрель 22, 2011 20:49:59

alexandre
От:
Зарегистрирован: 2010-11-16
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

captcha bottle

Почитал выше озвученную ссылку теперь не понимаю чем эти две отличаются:

<img src="data:image/jpeg;base64,{{captcha}}" alt="aaa">

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
одна из примера работающая другая не так и выводит длинную строчку.



Офлайн

#5 Апрель 22, 2011 20:58:09

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

captcha bottle

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

То что предложил slav0nic штука хорошая, но не всеми браузерами поддерживается.

И ещё вопрос, а оно вам надо? спам боты атакуют популярные движки, а тут самоделка. Думаю достаточно сделать лимит по времени для приема даных от клиента и запись его ип + текущего времени (что-б легко потом вычистить если что).
А так, эта капча только будет мешать хорошим пользователям.

Офлайн

#6 Апрель 22, 2011 21:23:00

alexandre
От:
Зарегистрирован: 2010-11-16
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

captcha bottle

Собственно я эту реализацию и пытаюсь как то вывести правда я её изначально с другого места сдирал)) капча та генерируется ну выводится куча цыфр и все в jinja)).
А по поводу надобности боты постоянно регистрируются у меня для регистрации много данных водить не надо а после регистрации создается куча всего потом удалять, во общем так бы я капчей заморачивался.



Офлайн

#7 Апрель 22, 2011 21:45:53

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

captcha bottle

Как вариант можно использовать, например, вот это - http://opencaptcha.com/



Офлайн

#8 Апрель 24, 2011 11:02:46

alexandre
От:
Зарегистрирован: 2010-11-16
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

captcha bottle

o7412369815963
Благодарю за описание, все заработало.
Исправте в предпоследней строчке ‘Content-Encoding’ на ‘Content-Type’.



Офлайн

#9 Апрель 24, 2011 11:29:38

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

captcha bottle

alexandre
o7412369815963
Благодарю за описание, все заработало.
Исправте в предпоследней строчке ‘Content-Encoding’ на ‘Content-Type’.
спс, этот кусок кода писал прямо в браузере, не тестируя.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version