我正在尝试编写代码来登录用户,这是该方案的先决条件。我不想让浏览器访问登录页面,填写字段并提交,这似乎浪费了每个场景的时间。我想我会使用登录用户的幕后代码并设置他的会话变量。像这样......
$fr_user = new User();
$user_id = 0;
$fr_user->loginUser($email,$pwd);
$user_id = $_SESSION['fr_id'];
$user = new User($user_id);
<some checks to make sure the $user_id set properly...>
$this->getSession()->visit($url."?".SID);
如果我在步骤定义中执行$ _SESSION变量的var_dump,我可以看到它工作得很好,fr_id已经设置好了。
我甚至让它将php会话ID发送到我正在访问的网页,但是当我在实际网页上执行var_dump时,会话完全空白,即使具有相同的会话ID。 (中间没有代码可以删除任何内容)
那么,我错过了什么?是否在behat代码和selenium浏览器窗口中发生了单独的会话?我如何让他们进行交流?
由于
答案 0 :(得分:1)
我不是肯定的,但我认为您正在尝试从客户端访问$ _SESSION变量数据。该变量只能从服务器端代码访问。
session_id来回传递给浏览器,但实际数据不是。
如果您希望在客户端访问数据,则需要使用服务器端的函数setcookie()将$ _SESSION值转换为原始cookie。