Logo2017
ukenplru

Сайти

Створенн сайтів: сайт-візитка, сайт-каталог, лендінг пейдж, корпоративний сайт, інформаційний портал, інтернет-магазин і ін..

Копірайтинг

Створення публікацій для сайтів.

Просування

СЕО-оптимізація сайтів, реєстрація в пошукових системах, контекстна реклама і ін...

Мультимедіа

Фото, відео, аудіо для сайтів.

Якщо ви уже засвоїли виробництво інтернет-магазинів, дана публікація буде для Вас корисною. Зокрема мова піде про популярне розширення joomshopping для CMS Joomla 2.5.  Днями довелося мати спрау з наступною проблемою: При спробі залишити відгук про товар зявлялося біле вікно з повідомленням Invalid token. Доречі в налаштуваннях магазину увімкнено "коментарі без реєстрації". У даному проекті використовували за основу шаблон  It_theshop2.

 Звідкіля береться повідомлення Invalid token

Invalid token був впроваджений ще у  joomla 1.5, як захист від спаму. Інколи для уникнення даної проблеми допомагало увімкнення плагіна Joomla Cach. Хоча цього не рекомендуємо робити адже при його роботі суттєво знижується швидкість завантаження сайту.

Як вирішити проблему Invalid token програмним методом

Якщо Ви уже спроможні працювати з програмним ядром, в такому випадку насамперед визначаємо файл, який необхідно виправити. Для цього переглядаємо шлях сторінки, на якій зявляється злощасне повідомлення  Invalid token.

У нас ось такий шлях:

назва сайту/index.php/ua/component/jshopping/product/reviewsave

 

Відповідно нам необхідно знайти файл reviewsave з папки product. Така папка може бути розміщена або в компоненті, або в шаблоні. Отож шукаємо. Для цього з допомогою ФТП-менеджера заходимо в шаблон і знаходимо шлях: /component/jshopping/product

путь к файлу с  invalid token

Потрібного файлу там немає, проте є цікавий файл з дуже потрібною назвою: commentmail.php. Варто його відкрити, адже у ньому може бути підказка де шукати "наш файл". І справді бачимо у ньому в останьому рядку наступне:

<?php print nl2br($this->review)?>

Даний запис веде на файл review, отож проблема саме в цьому файлі. Ми не помилилися.

 

Далі відкриваємо  файл review.php,  а у ньому дуже багато букв. Проте нас цікавить рядок з формою та перевіркою.

Отож як знайти рядок, який надсилає повідомлення Invalid token? Згадуємо, що шлях з Invalid token направляв нас до файлу  reviewsave. Отож пробуємо знайти у файлі review рядок "reviewsave".  Заходимо в пошук редактора і в формі пошуку вказуємо reviewsave і потрапляємо на потрібне місце:

        <form style="margin-top:30px;" action="<?php print SEFLink('index.php?option=com_jshopping&controller=product&task=reviewsave');?>" name="add_review" method="post" class="form-horizontal" on-submit="return validateReviewForm(this.name)">

Щоб уникнути проблем з Invalid token, користаємось вмонтованим класом joomla JHTML. Даний клас вміє присвоювати кожному користувачу унікальний ідентифікатор, що дає змогу захистити сайт від атак зловмисників .  token- це і є унікальний ID.

Залишилось для форми додати наступний рядок

// вставляємо приховане поле у форму

<?php echo JHTML::_( 'form.token' );?>

 

Ось і все. Зберігаємо зміни у файлі review.php і дивимось як усе працює.

У нашому випадку такі маніпуляції допомогли. Ще раз нагадаємо вихідні дані:

joomla: Version Joomla! 2.5.17

joomshopping: Version 3.16.0

Шаблон: it_theshop2

 

 

Контакти

+38 096 814 02 84

+38 067 794 80 61

Ми Вам зателефонуємо

Ми Вам зателефонуємо

Неверный ввод
Невірно вказані дані. Впмшіть лише цифри.
Невірно вказані символи
Free visitor tracking, live stats, counter, conversions for Joomla, Wordpress, Drupal, Magento and Prestashop

Яндекс-метрика