Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Balandin
phpBB 1.0.0
Сообщения: 5
Стаж: 13 лет 3 месяца
Благодарил (а): 1 раз

Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение Balandin »

Добрый день. Использую последнюю версию phpbb 3.0.11 совместно с модулем Portal. Хочу на главной странице разместить голосование, которое добавлено в одной из тем на форуме (только одного голосование, т.к. на главной странице будет что-то типа голосование месяца).
Решил взять (другое ничего в голову не пришло) статический html-код голосования из предварительно созданной темы и прописать в html-файле шаблонов этот код (периодически раз в месяц готов вручную его менять, когда это будет необходимо). Всё практически получилось... пока я не наткнулся на следующий код в голосовании:

<input name="form_token" value="5f321a9162bf924208d2b44a292d7ccaedfd0d68" type="hidden">

С неправильным (пустым) form_token система, конечно же, говорит об ошибке передаваемых параметров... оно и понятно!

Перерыл весь код, никак не смог выцепить место как формируется этот form_token, - при отладке всё промежуточные переменные пустые, и нигде не получилось выяснить, как этот form_token формируется. Создатели, конечно, неплохо защитили от таких вещей свой форум, но всё же хотелось бы решить данную проблему. Может кто сталкивался? Поиск по форуму и в Интернете ничего не дал. Заранее спасибо за внимание!
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Re: Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение rxu »

Balandin
includes/functions.php function add_form_key()
Изображение
Balandin
phpBB 1.0.0
Сообщения: 5
Стаж: 13 лет 3 месяца
Благодарил (а): 1 раз

Re: Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение Balandin »

Я эту add_form_key вдоль и поперёк перелопатил!!! Не пойму, что это за параметр формы такой - $form_name???
В комментариях формы написано, что : $form_name The name of the form;
И как узнать имя моей формы?
Я же говорю, отлаживал обычное голосование, как разработчики сделали, я не знаю, но даже на обычном голосовании в теме этот form_name ПУСТОЙ!!!
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Re: Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение rxu »

Balandin писал(а):Не пойму, что это за параметр формы такой - $form_name?
Вообще, он задается вами, его же надо использовать для проверки в функции check_form_key() (см. описание). Стандартное имя формы голосования - 'posting'. Оно в принципе и не надо, достаточно скопировать лексемы из viewtopic_body.html: {S_FORM_TOKEN} и {S_HIDDEN_FIELDS}, если код, генерирующийопрос, соответствует стандартному из viewtopic.php.
Изображение
Balandin
phpBB 1.0.0
Сообщения: 5
Стаж: 13 лет 3 месяца
Благодарил (а): 1 раз

Re: Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение Balandin »

Я PHPBB стал пользоваться недавно, поэтому, возможно, я что-то не так понимаю... поправьте ход моих мыслей, пожалуйста, если мой действия не верны. HTML-код голосования, который сформировал phpbb (http://www.xxx.ru/viewtopic.php?t=20&f= ... c53ddb3079) я скопировал и вставил в файл мода портала (разместил в файле шаблона /www/styles/prosilver/template/portal/portal_body.html нижестоящий код ):

Код: Выделить всё

<form method="post" action="./viewtopic.php?f=23&t=20&sid={SID}">
			<h2>тест голосвания</h2>
					<dt><label for="vote_1">вариант 1</label></dt>
					<dd style="width: auto;"><input name="vote_id[]" id="vote_1" value="1" type="radio"></dd>
				
					<dt><label for="vote_2">вариант 2</label></dt>
					<dd style="width: auto;"><input name="vote_id[]" id="vote_2" value="2" type="radio"></dd>
				
					<dt><label for="vote_3">вариант 3</label></dt>
					<dd style="width: auto;"><input name="vote_id[]" id="vote_3" value="3" type="radio"></dd>
			
					<dd class="resultbar"><input name="update" value="Проголосовать" class="button1" type="submit"></dd>
					<dd class="resultbar"><a href="./viewtopic.php?f=23&t=20&sid={SID}&view=viewpoll">Результаты голосования</a></dd>

		<input name="creation_time" value="1370189529" type="hidden">
               <input name="form_token" value="038b47997e28cff75b4c79184a8a6987131386c0" type="hidden">		
</form>
Соответственно вместо

Код: Выделить всё

		<input name="creation_time" value="1370189529" type="hidden">
               <input name="form_token" value="038b47997e28cff75b4c79184a8a6987131386c0" type="hidden">	
я должен был разместить {S_FORM_TOKEN} {S_HIDDEN_FIELDS}, но при открытии и просмотре сформировавшегося html-кода, там ПУСТО. Хотя, если посмотрите код, {SID} сформировался, а вот {S_FORM_TOKEN} {S_HIDDEN_FIELDS} нет.

Из-за чего это могло произойти?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Re: Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение rxu »

Надо в основном скрипте (portal.php, или какой он там, который использует шаблон portal_body.html) вызвать функцию, генерирующую S_FORM_TOKEN - add_form_key('posting'), чтобы значение было заполнено.
Изображение
Balandin
phpBB 1.0.0
Сообщения: 5
Стаж: 13 лет 3 месяца
Благодарил (а): 1 раз

Re: Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение Balandin »

Я тоже так думал, добавил как раз строку заполнения:

Код: Выделить всё

$template->set_filenames(array(
    'S_FORM_TOKEN' => add_form_key('posting'),
    'body' => 'portal/portal_body.html'

));
но система при обновлении страницы там где голосование выдаёт ошибку:

Общая ошибка
template->set_filenames: Empty filename specified for S_FORM_TOKEN


Мне кажется очень близко подошёл к решению вопроса... но всё никак. rxu, спасибо за участие в решении вопроса, что ещё попробовать?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Re: Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение rxu »

Balandin писал(а):'S_FORM_TOKEN' => add_form_key('posting'),
Это нонсенс, посмотрите на код функции.
Просто добавьте add_form_key('posting'); перед $template->set_filenames.
Изображение
Balandin
phpBB 1.0.0
Сообщения: 5
Стаж: 13 лет 3 месяца
Благодарил (а): 1 раз

Re: Как добавить СТАТИЧЕСКОЕ голосование, помогите!!!

Сообщение Balandin »

Не знаю как Вас и благодарить :) Тема закрыта, всё работает!!! Спасибо большое!

Вернуться в «Поддержка phpBB 3.0.х»