如何在Mink(Behat)中访问php $ _SESSION变量?

时间:2013-10-24 09:32:45

标签: selenium-webdriver behat mink

我正在尝试编写代码来登录用户,这是该方案的先决条件。我不想让浏览器访问登录页面,填写字段并提交,这似乎浪费了每个场景的时间。我想我会使用登录用户的幕后代码并设置他的会话变量。像这样......

$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浏览器窗口中发生了单独的会话?我如何让他们进行交流?

由于

1 个答案:

答案 0 :(得分:1)

我不是肯定的,但我认为您正在尝试从客户端访问$ _SESSION变量数据。该变量只能从服务器端代码访问。

session_id来回传递给浏览器,但实际数据不是。

如果您希望在客户端访问数据,则需要使用服务器端的函数setcookie()将$ _SESSION值转换为原始cookie。