Форум сайта python.su
Хотел бы узнать Ваше мнение о приемуществах и недостатках использования каптч с приминением сохранения в базе контрольных значений и без баз. (например в сессиях)
Спасибо
Офлайн
можно и без сохранения, добавлять в форму скрытое поле с хэшем ответа на капчу + выводить картинку, в POST анализировать введённый текст и сравнивать с хешем.
Как все, впрочем, и делают.
зачем что-то где-то сохранять?)
Офлайн
slav0nicНу например на гугл коде лежит app “simple-captcha” где в коде ее используется база
можно и без сохранения, добавлять в форму скрытое поле с хэшем ответа на капчу + выводить картинку, в POST анализировать введённый текст и сравнивать с хешем.
Как все, впрочем, и делают.
зачем что-то где-то сохранять?)
from captcha.models import CaptchaStore
from django.http import HttpResponse, Http404
from django.shortcuts import get_object_or_404
import Image,ImageDraw,ImageFont,ImageFilter,random
from captcha.conf import settings
def captcha_image(request,key):
store = get_object_or_404(CaptchaStore,hashkey=key)
text=store.challenge
tmpimage = Image.new('RGB', (10,10), settings.CAPTCHA_BACKGROUND_COLOR)
if settings.CAPTCHA_FONT_PATH.lower().strip().endswith('ttf'):
font = ImageFont.truetype(settings.CAPTCHA_FONT_PATH,settings.CAPTCHA_FONT_SIZE)
Офлайн
например на срвере icq.com капча генерируется и сохраняется на фс в файл, а не прямо вьюшкой, и после удачного разгадывания - удаляется с фс, при таком подходе можно и в базе писать, а так - не вижу смысла.
а по помоду кода - смотри что в CaptchaStore происходит
Офлайн
lorienА что есть threadlocals хак? Спрашиваю так как гугление не помогло.
А сделал я это затем, чтобы не протаскивать request через threadlocals хак.
Офлайн