2013-10-24 69 views
1

我正在嘗試編寫代碼來登錄用戶,這是該場景的先決條件。我不想讓瀏覽器訪問登錄頁面,填寫字段並提交,這似乎是浪費每一個場景的時間。我想我只會使用登錄用戶的幕後代碼並設置他的會話變量。像這樣...

$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

我不積極,但我認爲你正試圖從客戶端訪問$ _SESSION變量數據。該變量只能從服務器端代碼訪問。

session_id來回傳遞給瀏覽器,但實際數據不是。

如果您希望在客戶端訪問數據,您需要使用服務器端的函數setcookie()將$ _SESSION值轉換爲原始cookie。