Автор Тема: Безопасность в prestashop  (Прочитано 2321 раз)

07 Сентября 2011, 10:42:23
  • Фрилансер
  • *
  • Сообщений: 140
  • Репутация: +0/-0
    • Просмотр профиля
Проблема с входом в магазин. Покупатели жалуются, что если они не выходят из магазина после покупки, то потом еще долго можно входить без ввода пароля. Если пользоваться не своим комп., то есть риск, что кто-то может воспользоваться этой дырой.
Как устранить это ? Может есть модуль prestashop, чтобы через определенное время отключать пользователя ?
07 Сентября 2011, 10:53:01
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105581
  • Репутация: +39547/-0
    • Просмотр профиля
    • Webstudio UwK
Время сессии регулируется  в конструкторе класса Cookie.
Измените на меньшее значение. Например,
$this->_expire = isset($expire) ? intval($expire) : (time() + 3600); 
Cоздание интернет сайтов Webstudio UwK
07 Сентября 2011, 10:59:35
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 140
  • Репутация: +0/-0
    • Просмотр профиля
Это хорошо, но как узнать, что покупатель уже ушел, вдруг он раздумывает купить или нет, можно как-то определить не активность ? Как можно отключать клиента, если он не активный в течении 10мин ?
07 Сентября 2011, 11:03:01
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1255
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Уже писали об этом,  поищи на форуме.

07 Сентября 2011, 11:09:07
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86180
  • Репутация: +25412/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не нашел обсуждения такой проблемы на форуме.
Можно попробывать так,
if (время_неактивности > значение, которое нужно){
  //все значения в сек.
  //закрываем сессию, если истекло время
   $this->_expire = isset($expire) ? intval($expire) : time();
}
else {
  $this->_expire = isset($expire) ? intval($expire) : (time() + время_продолжения_сессии);
}
07 Сентября 2011, 11:14:38
Ответ #5
  • Фрилансер
  • *
  • Сообщений: 140
  • Репутация: +0/-0
    • Просмотр профиля
"время_неактивности" - где это можно проставить ? Можете помощь, сильно нужно, покупатели давно жалуются на эту проблему.
07 Сентября 2011, 11:18:41
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 140
  • Репутация: +0/-0
    • Просмотр профиля
"Конструктор класса Cookie" - в каком файле ? Что-то не нахожу у себя.
07 Сентября 2011, 11:51:28
Ответ #7
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102470
  • Репутация: +34217/-0
    • Просмотр профиля
Цитировать
"время_неактивности" - где это можно проставить ?
можно определить время последнего действия :
$cookie->last_action;добавить к нему кол-во времени в сек., для 10 мин - 600, это и будет время не активности.
Цитировать
"Конструктор класса Cookie" - в каком файле ? Что-то не нахожу у себя.
Какую версию prestashop вы используете? Различие между версиями можно посмотреть в другой теме.
Если 1.4, то дополнение нужно вносить в файл:
prestashop/classes/FrontController.php
07 Сентября 2011, 17:07:26
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 140
  • Репутация: +0/-0
    • Просмотр профиля
Код постаил в конце файла FrontController.php:
if ($cookie->last_action > 600){
  $this->_expire = isset($expire) ? intval($expire) : time();
}
else {
  $this->_expire = isset($expire) ? intval($expire) : (time() + 600);
}
только ничего не изменилось
07 Сентября 2011, 18:11:42
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105581
  • Репутация: +39547/-0
    • Просмотр профиля
    • Webstudio UwK
/*
 * prestashop/classes/FrontController.php
 * после - $cookie = new Cookie('ps');
*/
if (!isset($cookie->last_action))
    $cookie->last_action = time();
if ((time() - $cookie->last_action) > 600)
    $cookie->logout();
else
    $cookie->last_action = time();
Cоздание интернет сайтов Webstudio UwK