Сначала это был вопрос, но по ходу сам разобрался и вопрос превратился в совет Задача: залогинить пользователя из внешнего скрипта. Скрипт может находиться не только в корне сайта, а например в поддиректории. Из корня сайта всё получается:
<?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' => '*****'));
?>
Комментарии
что то последний код не хочет работать