Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как правильно обновить капчу ajax-сом?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Как правильно обновить капчу ajax-сом?

Страниц (1): [1]
 

1. zypikov - 13 Декабря, 2012 - 16:46:39 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $('#update').click(function() {
  3.   $.ajax({
  4.   url: 'php/capt.php',
  5.   success: function(data) {
  6.     $('#cap').html(data);
  7.   }
  8. });
  9. });
  10.  


capt.php
PHP:
скопировать код в буфер обмена
  1.  
  2.  $captch = "<img src=\"../php/captcha_zdr/captcha_img.php?<?=session_name()?>=<?=session_id()?>\" border=\"0\">";
  3.  echo $captch;
  4.  


В такое способ обновляется всего один раз, при щелчке на update.
Пробовал так

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $('#update').click(function() {
  3. $.ajax({
  4.   url: '../php/captcha_zdr/captcha_img.php?<?=session_name()?>=<?=session_id()?',
  5.   success: function(data) {
  6.     $('#cont').append(data);
  7.     alert('Load was performed.');
  8.   }
  9. });
  10. });
  11.  

т.е. непосредственно запрос к скрипту генер-щим картинку капчи. Появляются артефакты. Как-будто браузер не знает заголовок content-type.
Вообщем как правильно обновить с помощью jQuery капчу?
2. esterio - 13 Декабря, 2012 - 16:56:12 - перейти к сообщению
А зачем AJAX. Капча - ето картинка которая находиться в теге img с атрибутом src. Что мешает на JS заменяь src изображения.
3. DeepVarvar - 13 Декабря, 2012 - 19:20:21 - перейти к сообщению
esterio, если вы не знаете, то лучше не советуйте, лучше промолчите.

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

В кратце расскажу и немного покажу принцип работы.
PHP, как вы знаете, умеет генерировать живые картинки, сам, на лету.
По этой теме достаточно информации и тут на форуме, и в сети.
Общая структура файла капчи:
1) Старт сессии
2) Генерация строки, которая будет на картинке
3) Запись этой строки в сессию
4) Генерация картинки на основе этой строки

Проверить капчу можно сравнив введенное значение пользователем с значением хранящемся в сессии, в любом скрипте на вашем сайте.

Теперь о вашем главном вопросе, как правильно обновить капчу по клику на саму картинку капчи.
Вот так будет вполне достаточно:
CODE (html):
скопировать код в буфер обмена
  1. <img src="/captcha/index.php" onclick="this.src = '/captcha/index.php?' + Math.random();" />
4. esterio - 14 Декабря, 2012 - 03:44:18 - перейти к сообщению
DeepVarvar
Простите но я не то самое ответил
DeepVarvar пишет:
<img src="/captcha/index.php" onclick="this.src = '/captcha/index.php?' + Math.random();" />

esterio пишет:
на JS заменяь src изображения.

Только забил сказать что надо добавлять случайную строку чтоб не кешировалось
5. zypikov - 14 Декабря, 2012 - 12:43:28 - перейти к сообщению
DeepVarvar пишет:
Теперь о вашем главном вопросе, как правильно обновить капчу по клику на саму картинку капчи.
Вот так будет вполне достаточно:
CODE (html):
скопировать код в буфер обмена

<img src="/captcha/index.php" onclick="this.src = '/captcha/index.php?' + Math.random();" />

DeepVarvar, вот этого вполне было достаточно)) в карму + 1 вам добавил

esterio пишет:
А зачем AJAX. Капча - ето картинка которая находиться в теге img с атрибутом src. Что мешает на JS заменяь src изображения.

Ну так код бы написали)
6. IllusionMH - 14 Декабря, 2012 - 13:17:10 - перейти к сообщению

zypikov пишет:
Ну так код бы написали)

может и весь сайт сразу? ;) Вам дали отличный совет как это сделать, этого должно быть достаточно

 

Powered by ExBB FM 1.0 RC1