Проверка авторизации из внешнего скрипта
Прислано: Yevgen
сб, 21/04/2007 - 15:41
У меня есть внешний скрипт, который работает сам по себе, без участия Друпала. Но я хочу сделать так, чтобы все команды скрипта работали только, если человек залогинен к Друпалу. Если гость, то скрипт дожен выдавать сообщение "Нет доступа". Возможно ли это реализовать? Пробовал для теста в начале скрипта писать:
@include_once './includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); global $user; print $user->uid;
Однако после запуска скрипта мне выдается ошибка:
Fatal error: Call to undefined function: drupal_bootstrap() in z:\home\mob2\www\price\upload_price.php on line 4
Подскажите советом.
- Yevgen's blog
- Для комментирования войдите или зарегистрируйтесь
Можно создать материал, например, "страница" (page или story), в который вставить ваш скрипт (не забудьте только поставить формат ввода PHP). В скрипте поставить проверку, является ли пользователь зарегистрированным пользователем.
- Для комментирования войдите или зарегистрируйтесь
Дело в том, что мой внешний скорипт состоит из формы с кнопокй "обзор" для указания файла на винте, и непосредственно программы, которая обрабатывает эту форму. Я так понимаю, в этой ситуации способ с созданием ноды не подойдет.
- Для комментирования войдите или зарегистрируйтесь
Ваш скрипт на PHP? Насколько я понимаю, Drupal лишь создает интерфейсное оформление для PHP-скриптов в теле материала.
- Для комментирования войдите или зарегистрируйтесь
Да, скрипт на PHP. Я пробовал так. Создаю ноду, вставляю туда форму, сохраняю. Создаю еще одну ноду, вставляю туда скрипт-обработчик формы на PHP, сохраняю. Открываю ноду с формой, вбиваю туда данные, нажимаю кнопку "Submit". Нода с PHP скриптом окрывается, скрипт начинает работу, однако сыпятся ошибки потому что из формы данные в ноду со скриптом не передались.
Сейчас сделал немного по дуратски, однако по другому пока не выходит. Формы я вставил в друпаловские ноды, а скрипты оставил в отдельных php-файлах. Доступ к нодам с формами мне удалось настроить. Формы видят только зарегистрированные пользователи. А вот внешние php-файлы со скриптами-обработчиками форм вроде как беззащитные. Если никак по другому не получится сделать, то попробую запаролить директорию со скриптами. Не знаю, правда, сохранится ли в таком случае работоспособность моих скриптов.
- Для комментирования войдите или зарегистрируйтесь
> однако сыпятся ошибки потому что из формы данные в ноду со скриптом не передались.
в свое время помогло вместо глобальных переменных - использовать класс.
Кстати, ща создал файл test.php в корневой директории друпала. В нем то, что написано первом сообщении + error_reporting(7);
Зашел - пишет "1" (админ). Зашел на сайт друпала, разлогинился, потом на тест - пишет 0 (гость).
Руки? ;) На чистом друпале попробовать советую.
- Для комментирования войдите или зарегистрируйтесь
прошу прощения, не то и не туда набрал =)
- Для комментирования войдите или зарегистрируйтесь
На чистом уже нет возможности. Слишком много сделано на "грязном". ;) А делать заново нет времени.
Сделал так, как писал выше. Запаролил директорию со скриптами. Теперь при первом обращении к внешнему скрипту, юзеру нужно будет ввести пароль, но в принципе, может это даже и хорошо. Типа двойная защита. Скрипты там админские и светить их нельзя.
- Для комментирования войдите или зарегистрируйтесь
Спасибо Yevgen. Короткое, простое и эффективное решение.
- Для комментирования войдите или зарегистрируйтесь



Комментарии