We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31444
    • 33 Posts
    добрый день, я встраивал скрипт мини phpmyadmin в модекс как модуль через конструкцию header("Location:
    + заменил все вводы данных типа хоста логина и пароля на переменные из модекса.
    Потом подумал,что таким образом файл может быть запущен из вне и это огромный косяк. Пытаюсь придумать как определить выполняется скрипт в админке модекса как модуль или запущен напрямую. Пробовал через isBackend() isFrontend(), insideManager() если запущен из модекса и если из вне значения одинаковы.
    Вот думаю может сделать как модекс при входе в админ панель проверяет пользователя? Там видимо берется значение из сессии и сравнивается с значением из базы и мы либо получаем сообщение,что нужно авторизоваться либо доступ в админку. Подскажите пожалуйста где порыться и как определить авторизирован ли человек или может какие-то варианты получше
      • 26744
      • 157 Posts
      $_SESSION[’mgrValidated’] - менеджер
      $_SESSION[’webValidated’] - веб-пользователь.
      Проверяется через сессию.
      Т.е.
      <?
      if (isset($_SESSION[’mgrValidated’])) { echo "Ты авторизован как администратор";}
      ?>
        • 785
        • 2,113 Posts
        В принципе достаточно определить, что вызов произошел из административной части:
        if (IN_MANAGER_MODE!="true") die ("<b>INCLUDE_ORDERING_ERROR</b>

        Модуль работает только в административной части сайта.");
        при этом имя и пароль лучше передавать через глобальные переменные:
        global $database_server, $database_user, $database_password;

        А определить, подключен ли менеджер, как уже выше сказано, тоже просто:
        if(!isset($_SESSION[’mgrValidated’]) || !$_SESSION[’mgrValidated’]) die ("Необходимо войти как менеджер.");
          Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
          Статьи о MODx, регулярно новые публикации
          • 31444
          • 33 Posts
          вот в том-то и дело,что в сессии у меня нету такого значения. Вот,что у меня в сессии (print_r($_SESSION))
          Array
          (
              [usernames] => Array
                  (
                      [] => 
                  )
          
              [passwords] => Array
                  (
                      [] => 
                  )
          
              [databases] => Array
                  (
                      [] => Array
                          (
                              [0] => information_schema
                              [1] => mysite
                              [2] => mysql
                              [3] => phpmyadmin
                          )
          
                  )
          
              [tokens] => Array
                  (
                      [] => 157532
                  )
          
          )

          может быть то,что я подключаю файл так играет роль?
            • 31444
            • 33 Posts
            дело в том,что для использования переменных я подключил вот так
            require_once("../../../manager/" . "includes/config.inc.php");
            require_once("../../../manager/" . "includes/protect.inc.php");
            define("MODX_API_MODE", true);
            require_once("../../../manager/"."includes/document.parser.class.inc.php");
            $modx = new DocumentParser;

            по скольку файл внешний в нем небыло никаких модексовских переменных и если я создам IN_MANAGER_MODE,то он будет доступен опять же из обоих вызовов
              • 785
              • 2,113 Posts
              Quote from: versoul at Feb 15, 2010, 09:56 AM

              вот в том-то и дело,что в сессии у меня нету такого значения.
              phpminiadmin.php начинает новую сессию.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 785
                • 2,113 Posts
                Надо наоборот – создать модуль в MODx, который подключает файл, а не подключать MODx из внешнего файла:
                include_once($modx->config[’base_path’].’assets/modules/и так далее’);
                  Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                  Статьи о MODx, регулярно новые публикации
                  • 31444
                  • 33 Posts
                  если я include в модуль скрипт,то сыпятся ошибки,а посылка хедера это в принципе равносильно работе напрямую и вс енормально.

                  ошибки вот такого типа

                  Fatal error: Call to a member function name() on a non-object in Z:\home\mysite\www\assets\modules\adminer\adminer.php on line 235
                    • 785
                    • 2,113 Posts
                    Quote from: versoul at Feb 17, 2010, 06:48 AM

                    если я include в модуль скрипт,то сыпятся ошибки,а посылка хедера это в принципе равносильно работе напрямую и вс енормально.
                    Вряд ли нормальна ситуация, когда любой может войти в базу. Если же требуется вводить пароль, то фактически программа не включена в MODx. Надо разбираться с Аdminer, но это занятие для фанатов… Лично мне вполне хватает phpMyAdmin, который установлен на хостинге…
                      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                      Статьи о MODx, регулярно новые публикации