Добрый день.
Сейчас отлаживаю php-скрипт, который бы обращался к REST-серверу на drupal-сайте.
Вот функция, которая логинится на сервер и возвращает пару "имя сессии - ID сессии"
{
if (isset($_COOKIE['drupal_session_name']) && isset($_COOKIE['drupal_session_id']))
{
return $_COOKIE['drupal_session_name'].' = '.$_COOKIE['drupal_session_id'];
}
else
{
$u_data = array(
'username' => $username,
'password' => $password,
);
$user_login_data = array(
'http' => array(
'header' => "Content-Type: application/json",
'method' => 'POST',
'content' => json_encode($u_data)
)
);
$context = stream_context_create($user_login_data);
$res = file_get_contents('http://dexam/rtest/user/login', false, $context);
if ( $res!== FALSE )
{
$result = json_decode($res);
setcookie('drupal_session_name', $result->session_name);
setcookie('drupal_session_id', $result->sessid);
return ''.$result->session_name.'='.$result->sessid.'';
}
else
return false;
};
}
А вот непосредственно код программы, которая должна создавать ноду с использованием Session Authentification
$node_title = 'Узел создан '.date('c');
$node_body = 'Содержимое ewwer werr нового узла !!!!';
$node_format = 'filtered_html';
$node_create_data = array(
'type' => $node_type,
'title' => $node_title,
'body' => array(
'und' => array(
'0' => array(
'value' => $node_body,
'format' => $node_format,
)
)
)
);
$sess = test_login('admin', '123456');
$context_data = array(
'http' => array(
'header' => "content-type: application/json".PHP_EOL.
"cookie: ".$sess.PHP_EOL,
'method' => 'POST',
'content' => json_encode($node_create_data),
)
);
$context = stream_context_create($context_data);
$res = file_get_contents('http://dexam/rtest/node', false, $context);
И почему-то возвращается следующее:
HTTP request failed! HTTP/1.0 403 : Access denied for user anonymous
Объясните, пожалуйста, что я делаю не так ...
Заранее благодарен.