【发布时间】:2016-05-29 07:01:12
【问题描述】:
我有一个 php 脚本,它将在服务器上发出一系列请求。第一个请求将是登录请求。
问题是file_get_contents 似乎每次都会创建一个新会话,那么我怎样才能让它知道会话呢?
这是我需要让它记住会话的函数:
function request($method, $data, $url){
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n"."Cookie: ".session_name()."=".session_id()."\r\n",
'method' => $method,
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
session_write_close();
$result = file_get_contents($url, false, $context);
return $result;
}
【问题讨论】:
-
应该很明显:通过传递现有会话 id ... // 如果您使用 cURL 代替,这可能会更容易,因为这意味着已经可以跨请求正确处理 cookie。
-
付出了很多努力。保留并提取
$http_response_header以使用相应的会话 cookie 重新填充请求 context。 -
@mario 但这是一个 html 页面而不是 api
-
这有什么关系?为什么您的代码假定本地 session_id() 和名称与远程相同?
-
不,请自己去研究。