我正在尝试通过 curl 登录 drupal。我收到消息:'logged' 使用命令:echo "logged"; 这是在一个 if 语句中,它告诉我一切都很好。
运行脚本后,我打开主页,不幸的是我没有登录。
我认为我的 cookie 有问题。
<?php
ob_start(); // Initiate the output buffer
function mymodule_get_csrf_header() {
$curl_get = curl_init();
curl_setopt_array($curl_get, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://will.sx/services/session/token',
));
$csrf_token = curl_exec($curl_get);
curl_close($curl_get);
return 'X-CSRF-Token: ' . $csrf_token;
}
$username = 'test';
$password = 'TEST';
$request_url = 'http://will.sx/rests/user/login';
$user_data = array(
'username' => $username,
'password' => $password,
);
$user_data = http_build_query($user_data);
$curl = curl_init($request_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json')); // Accept JSON response
curl_setopt($curl, CURLOPT_POST, 1); // Do a regular HTTP POST
curl_setopt($curl, CURLOPT_POSTFIELDS, $user_data); // Set POST data
curl_setopt($curl, CURLOPT_HEADER, FALSE); // Ask to not return Header
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_FAILONERROR, TRUE);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookie.txt");
$response = curl_exec($curl);
$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($http_code == 200) {
$logged_user = json_decode($response);
echo 'logged';
}
else {
$http_message = curl_error($curl);
die('Unable to connect to Basic CMS Engine!
Username or password incorrect!
Please enter valid username and password!');
}
//setcookie(name,value,expire,path,domain,secure)
setcookie($logged_user->session_name,$logged_user->sessid,time() + 10000,'/');
ob_end_flush(); // Flush the output from the buffer
?>
欢迎各种帮助。提前致谢。