在guzzle中,我们可以使用cookiejar来持久化会话。但是如何创建会话变量?这是我的phpunit guzzle代码
use Guzzle\Http\Client; use Guzzle\Plugin\Cookie\CookiePlugin;
use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
$cookiePlugin = new CookiePlugin(new ArrayCookieJar());
$client = new Client('http://somewhere.com/');
$client->addSubscriber($cookiePlugin);
//I want to set some session variable here
// $_SESSION['foo'] = 'bar';
$client->get('http://somewhere.com/test.php')->send();
$request = $client->get('http://somewhere.com/');
$request->send();
这是服务器上的test.php文件
session_start();
error_log(print_r($_SESSION, true));
答案 0 :(得分:0)
会话变量的本质是它们无法从外部访问,并且不受客户端的影响(在这种情况下:Guzzle)。影响会话的唯一方法是发送会话cookie。
因此,如果您需要测试来设置会话变量,并且服务器上的生产代码不允许客户端直接设置值,那么您必须提供一种测试方法来执行此操作。请注意这样做的安全隐患,以防此代码逃逸到生产中。
你可以走捷径。如果测试代码与服务器代码在同一台机器上运行,您可以通过客户端预先定义会话ID,将一些数据保存到其中,然后session_write_close()
它并使用会话id作为请求的cookie值。它应该将会话数据写入文件并从那里读回来。如果您可以直接访问其他会话存储,也可以使用它。这些方法不会影响安全性。
如果所有其他方法都失败,请创建一个允许两个参数的文件:会话密钥和值。如果发布,脚本将把它们输入$ _SESSION。