Небольшой совет по авторизации пользователя из внешнего скрипта

Главные вкладки

Аватар пользователя axel axel 23 октября 2008 в 1:27

Сначала это был вопрос, но по ходу сам разобрался и вопрос превратился в совет Smile Задача: залогинить пользователя из внешнего скрипта. Скрипт может находиться не только в корне сайта, а например в поддиректории. Из корня сайта всё получается:

<?php

// ...что-нибудь делаем

include('./includes/bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

user_authenticate(array('name' => 'admin', 'pass' => '*****'));

// ...теперь мы залогинены на сайте, можно делать что-нибудь ещё
?>

Конструкция выше, помещённая в сторонний скрипт производит инициализацию друпала, логин юзера, возвращает куки - всё ок. Но когда скрипт находится во вложенной директории, это не срабатывает, даже если сделать chdir() в корень сайта. На самом деле, чтобы это работало нужно явно указать $base_url друпала! Указать его можно либо в settings.php, раскомментировав строку $base_url, или во внешнем скрипте, как удобней:

<?php

include('./includes/bootstrap.inc');
$conf['base_url'] = 'http://example.com';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

user_authenticate(array('name' => 'admin', 'pass' => '*****'));

?>

Комментарии