Создание сессии при запуске по крону скриптов из админки

Тема в разделе "OpenCart", создана пользователем cherkas, 26 ноя 2016.

  1. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Верно, это он самый. Но я, к сожалению, не нашел такой команды или чего-то подобного. На форуме в ветке разработчика на мой вопрос не ответили...

    Сделал всё выше описанное Вами, но пока эффекта нет.

    Я не программист, и не понимаю где что и т.д. могу тупо следовать написанному :(

    На сайте фрилансеров kWork писал "разработчикам" скриптов для РНР, но не один не смог мне в этом помочь.
    Был бы рад, если бы кто-то из Вас, за умеренную плату довёл скрипты до рабочего состояния.
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    В классе Cart\User в конструкторе есть проверка залогинен ли уже пользователь, так что при повторной инициализации класса пользователь останется залогиненным.



    Это защита от несанкционированного запуска, а тут задача практически обратная - запускать без токена.
    Защиту от несанкционированного запуска сделать полезно, а ещё лучше вообще запускать только через cli, но это всё отдельный вопрос.
     
  3. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    Хм.. Как я этого не заметил... То есть возвращаемся сюда
    Только добавляем во framework перед преэкшенами?
    PHP:
    $registry->set('user', new Cart\User($registry));
    $registry->get('user')->login(__username____password__);
    $registry->get('session')->data['token'] = md5(mt_rand());
     
  4. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Можно ли подробно и пошагово (если не сложно) расписать что и куда (в какой файл) вписать чтобы был постоянный токен ?
    т.е. у меня получится ссылка _/admin/index.php?route=catalog/suppler/load&token=12412413412341234124124134123412&form_id=1&page=1
    и будет примерно такой запрос Крона 3 0-5 * * 7 (если я правильно понял то, каждые 3 минуты с 0 часов до 5 часов каждое воскресенье) _/admin/index.php?route=catalog/suppler/load&token=12412413412341234124124134123412&form_id=1&page=1
     
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Да.
    Но на 2.3 я это не испытывал, так что надо тестировать.
     
  6. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    У меня не получилось, прописал, но не заработало...
     
  7. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    "Не заработало" - не бывает! Бывают ошибки, кторые надо исправлять. Что в логе?
     
  8. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Я не мастер программист, я могу только следовать советам - указаниям, сделал как на писано, не работает, где логи смотреть не представляю...
     
  9. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Если вы не знаете о Журнале ошибок в ОК, то лучше вам таки бросить пытаться что-то сделать самостоятельно и кому-то заплатить.
     
  10. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Я предлагал сделать за деньги, только желающих нет.

    В ИМ в "Журнале Ошибок" пусто.(Очистил журнал и заново кликал по ссылке) При переходе по ссылке открывается ИМ с информацией "Запрашиваемая страница не найдена!"

    Может быть подскажете, желательно пошагово, как сделать постоянный токен как предполагал "Baco" . Я думаю, это решит вопрос с запуском модуля по расписанию.
     
    Lasted edited by : 7 фев 2018
  11. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Внимательно прочитайте, что я ответил на его предложение.

    Вам не кажется, что у вас ссылка непавильная? Вы же обращаетесь к админке, почему у вас витрина открывается?
     
  12. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Возможно.
    Всё выше написанное делалось чтобы запустить модуль по ссылке без токена, тогда получится ссылка _/admin/index.php?route=catalog/suppler/load&form_id=1&page=1
    Собственно я её и запускал.
    --- Добавлено, 8 фев 2018 ---
    Мне вообщем то без разницы, будет ссылка без токена или с постоянным токеном, главное чтобы работало. А как это реализовано, дело 3-е.
     
  13. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    без токена модуль не запустится

    лично для себя нашел решение - ЗДЕСЬ

    с небольшими танцами получилось настроить и всё работает.

    P.S. решение для опенкарт 2
     
    Master2KAZ нравится это.
  14. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Спасибо большое, буду вникать.
     
  15. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Вы писали на другом форуме :
    Можно ли как то получить релиз для ocStore 2.3.0.2.3 ?
     
  16. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
     
    Master2KAZ и ChipZip нравится это.
  17. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
  18. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Добрый день и с Праздником Всех.

    Устанавливал версию Cron 1.0.1 для Opencart 2.x
    Задаю в admin/cron_tasks.php

    <?php
    $cron->call(".../admin/my_cron.php", array ("minute" => "*", "hour" => "*", "day" => "*", "dayofweek" => "*", "dayofmonth" => "*"), array("param" => ""));
    ?>

    задание для запуска скрипта my_cron.php

    <?php
    $fd = fopen("c:\\inetpub\\vhosts\\u123456.plsk.regruhosting.ru\\...\\admin\\my_cron.txt","a");
    fwrite($fd, "Обращение к файлу - ".date("d.m.Y H:i")."\r\n");
    fclose($fd);
    ?>
    который в файл my_cron.txt должен делать отметку.

    Прописываю задание в Планировщике

    После запуска Планировщик ошибок не выдаёт. "Задача ".../admin/cron.php" успешно выполнена за 1 секунд."
    а, в журнале логов запись: "PHP Warning: is_file(): open_basedir restriction in effect. File(config.php) is not within the allowed path(s): (C:/inetpub/vhosts//u123456.plsk.regruhosting.ru\;C:\Windows\Temp\) in C:\inetpub\vhosts\u123456.plsk.regruhosting.ru\...\admin\cron.php on line 6"

    Судя по информации от Гугла: не хватает каких то прав. Хотя все доступы выставлены максимально.
    Подскажите, как исправить ?
    (Делалось для того чтобы проверить и понять, работает ли вообще Крон. Далее буду менять задание на выполнение нужного скрипта.)
    --- Добавлено, 23 фев 2018 ---
    Такая же ситуация с версией ocstore_cron_1_0_2_for_opencart_2_3
     
  19. ChipZip

    ChipZip

    Регистрация:
    1 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Решение нашлось с помощью ТП Хостинг провайдера.
    в самом файле cron.php нужно было прописать полный адрес где находятся файлы:
    Было :
    PHP:
    require_once(DIR_SYSTEM.'library/cron.php');
    Стало :
    PHP:
    require_once('C:/inetpub/vhosts/u123456.plsk.regruhosting.ru/.../system/library/cron.php');
    Теперь не могу правильно прописать задание в cron_tasks.php

    Для запуска дополнения используется ссылка .../admin/index.php?route=catalog/suppler/load&token=4LaYiIjLWREH7aD7tTOgvQMDbh5qKvXQ&form_id=1&page=1
    PHP:
    $cron->call(
        
    "module/ocstore_badges/cron",
        array (
            
    "minute" => "*",
            
    "hour" => "*",
            
    "day" => "*",
            
    "dayofweek" => "*",
            
    "dayofmonth" => "*"
        
    ),
        array(
            
    "param1" => "value1",
            
    "param2" => "value2",
            ...
            
    "paramN" => "valueN"
        
    )
    );
    в примере вызывается метод cron() в файле admin/controller/module/ocstore_badges.php

    т.е. получается нужно
    PHP:
    $cron->call(
        
    "catalog/suppler/load",
        array (
            
    "minute" => "*",
            
    "hour" => "*",
            
    "day" => "*",
            
    "dayofweek" => "*",
            
    "dayofmonth" => "*"
        
    ),
        array(
            
    "form_id" => "1"
        
    )
    );
    После тестового запуска Планировщика выдаёт ошибку:
    Код:
    <b>Notice</b>: Undefined index: form_id in <b>C:\inetpub\vhosts\u123456.plsk.regruhosting.ru\...\admin\controller\catalog\suppler.php</b> on line <b>224</b>
    <b>Notice</b>: Undefined index: token in <b>C:\inetpub\vhosts\u123456.plsk.regruhosting.ru\...\admin\controller\catalog\suppler.php</b> on line <b>408</b>
    т.е. ругается на Параметр "form_id" и на token

    Может кто подскажет как правильно прописать эти параметры ?
    Писал автору, но к сожалению он не появляется на форуме.
     
    Lasted edited by : 24 фев 2018
  20. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Плохо у поддержки вашего хостера с php. Не надо было прописывать полные адреса, вместо этого есть chdir(), через который устанавливается текущая рабочая директория.

    И научитесь уже пользоваться кнопкой вставки кода!

    Никак! Этот крон модуль передаёт параметры напрямую в вызываемый контроллер в виде локальных переменных, а вам нужно их передать один в сессию (token), другой в $_GET (form_id).
    Наверное, самый простой вариант для вас будет - сделать копию suppler.php и в указанных строках заменить вызов этих параметров на использование одноименных локальных переменных.
     
    ChipZip нравится это.