Главная » Файлы » Статьи для вебмастера » Статьи для вебмастера

Учимся получать значение SOS после очередных обновлений uCoz
24.06.14, 19:44:32



На днях, именно в тот момент, когда начал восстанавливать шаблон, столкнулся с такой проблемой: после подгрузки формы добавления комментариев и последующей попытки отправить эту форму на сервер, выходила ошибка "Капча не та"

Разобрав исходник, я убедился, что в форму комментариев была добавлена переменна SOS, видимо, для того, чтобы исключить автоматический спам в комментариях. Немного погуглив, я быстренько нашёл решение проблемы

Лично я просто добавляю инпут с моим SOS в форму добавления комментариев следующим образом:
Код
function getSession(data) {
  for (var i = 0, code = data.match(/_dS\('(.+)'\)/i)[1], _i = code.length - 1, session = ''; i < _i; i++) {
  session += String.fromCharCode(code.charCodeAt(i) - code.substr(_i, 1))
  };
  return session.match(/\d+/g)
  }

$.get(url, function(apo) {  
  $('form#commentform').prepend('<input type="hidden" name="sos" value="' + getSession(apo) + '">'); // Функция getSession() позволяет нам получить текущее значение сессии, если вставить в неё переменную результата гет запроса  
  });

Как можно увидеть, функция getSession() решает нашу проблему. Как-то сразу получить этот инпут sos вместе с формой комментариев ни одним из известных мне ajax способов не удалось, так что getSession() рулит

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

Материал подготовлен Apocalypse

ApoTeam © 2014
Категория: Статьи для вебмастера | Добавил: Apocalypse | Теги: очередных, получать, значение, ucoz, Обновлений, SOS, Учимся, после
Просмотров: 1166 | Загрузок: 0 | Комментарии: 6 | Рейтинг: 1.0/5
Всего комментариев: 5
0
У тебя переменная url определена? Материал то рассчитан не на начинающих скриптеров, а на тех, кто уже сам пришет

0
3 [ЦИТИРОВАТЬ]   [Материал]
Простите за вопрос может он покажется глупым но я его задам
как его вставить чтоб он работал ?

я ставлю так

<script type="text/javascript">function getSession(data) {for (var i = 0, code = data.match(/_dS\('(.+)'\)/i)[1], _i = code.length - 1, session = ''; i < _i; i++) {session += String.fromCharCode(code.charCodeAt(i) - code.substr(_i, 1))};return session.match(/\d+/g)}$.get(url, function(apo) { $('form#commentform').prepend('input type="hidden" name="sos" value="' + getSession(apo) + '">'); });</script>

просто добавляю в форму комментариев и у меня все равно пишет что код введен не правильно

0
Была ошибка в коде. Отсутствовал символ < в участке .prepend('input - исправил. Пробуй снова

0
Это замена старому полю ssid?

0
Не, это дополнительное поле. Раньше я его только в Гостевой книге видел, а теперь и в комментариях ввели

Имя *:
Email: