使用Curl(ZF2)进行会话

时间:2013-06-18 07:39:12

标签: php rest session curl zend-framework2

我在Zend Framework 2应用程序中使用REST。为了测试我的其余调用,我使用Curl发送REST请求,如下所示:

$client = new Http\Client();
$client->setAdapter(new Http\Client\Adapter\Curl());

$request = new Http\Request();
$request->setUri($url);
$request->setMethod($method);

$response = $client->dispatch($request);
$jsonString = $response->getContent();

除了Curl请求似乎忽略会话外,Everthing工作正常。我需要在我的休息请求处理中访问登录用户,例如让Acl工作。当我使用AngularJS发送REST请求时,会话实际上有效。以下是我设置会话的方式:

$storage = new SessionArrayStorage();
$manager = new SessionManager($config, $storage);
$session = new Session('surveylab', $manager);

如何将会话信息传递给Curl,以便我可以访问Curl请求中的会话?

2 个答案:

答案 0 :(得分:1)

查看cURL选项:

CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR

查找cURL用法的示例:

curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie.txt");

答案 1 :(得分:0)

将您的登录凭据作为帖子发送到您的登录URL,从结果中提取Cookie并在下次请求时发送。我不知道您的应用程序是否会随着时间的推移更新cookie,但您应该在必要时更新它们。 一些示例代码:

curl_setopt_array($ch, array(
    CURLOPT_URL => "http://your/url",
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_HTTPHEADER => array('Cookie: ' . $cookies . '"'),
    CURLOPT_HEADER => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_POST => count($postData),
    CURLOPT_POSTFIELDS => $post_string
));