【发布时间】:2016-03-15 23:11:51
【问题描述】:
我正在尝试进行我的第一个站点回归测试。站点后端由几个 PHP 脚本组成。因此,我只是使用 cURL 一个接一个地调用所有 PHP 文件,并使用各种有效和无效输入并检查结果。在我达到基于会话的身份验证管理之前,一切正常。我看到使用 cURL 时,_SESSION 的工作方式与从浏览器对 PHP 的正常调用不同(见下文)。如果我理解正确,这是因为会话功能需要在客户端有一个 cookie,在我这样使用 cURL 的情况下会丢失(我有点希望它会自动发生)。那么如何让 cURL 处理 cookie 并像被浏览器调用一样调用 php-files?
在下面的示例中,我希望看到“test”,但我看到的是“SESSION not set”。
调用文件:
<?php
session_start();
$_SESSION["test"] = "test";
echo sendPost('https://rodichi.net/sandbox/php/test_curl_session_called.php', null);
function sendPost($url, $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
if ($result === false) {
die(curl_error($ch));
}
curl_close($ch);
return $result;
}
调用文件:
<?php
session_start();
if (isset($_SESSION['test'])) {
echo($_SESSION['test'].'<br>');
} else {
echo 'SESSION not set<br>';
}
【问题讨论】:
标签: curl session-state regression-testing