2013-07-05 29 views
0

我跑隨後測試,以驗證我的代碼正常工作:

捲曲-L -i -X POST -d 'JSON = { 「ORDERBY」:0 「的maxResults」:50}' http://mysite.com/ctlClient/

我打電話:http://mysite.com/ctlClient/index.php

 session_unset(); 
     session_start(); 

     //pass data to _SESSION 
     foreach($_POST as $key => $value){ 
      $_SESSION[$key] = $value; 
     } 
     // redirect to `/fwf/online/index.php` 
     ctlGotoSameDomain("/fwf/online/"); 

重定向後,我打電話/fwf/online/index.php

<?php 

session_start(); 

.... 

class fwfOnline { 


    public function __construct() { 

     msqLogFile('test/test_max',$_SESSION); 

     // here is my problem, $_SESSION is empty, :(

     $this->json = isset($_SESSION['json']) ? $_SESSION['json'] : null; 
     global $gConfig; 
     if ($gConfig['soapDebug']) 
      msqLogFile("fwf/post", Array('post' => 'Request: '.$this->json)); 
     $this->response = $this->getResponse(); 
     echo $this->response; 
    } 

.... 

mysite.com/ctlClient/index.php我看到$ _SESSION有數據 但在/fwf/online/index.php其空。

有人能告訴我我錯過了什麼?

謝謝

[編輯] 從@ RR-

我印這兩個會話ID並獲得差異:

"2013-07-05 09:44:31","Session ID: ihpfs1skrp792gncgancb02516" 
"2013-07-05 09:44:31","Session ID: tp6ejtl1tj9bigrgsi3jt6h9a1" 

爲什麼它的發生?

[修復]

問候@rr-答案我發現這個問題,

我需要添加-b給我的腳本,使餅乾。默認情況下,CURL不會使用它們,並導致會話ID問題。

謝謝rr-

+0

你「在session_start」中的重定向到網頁? – Paul

+0

你確定你正在重定向到完全相同的域名(沒有'www.domain.com'與'domain.com')嗎? –

+0

@Paul是的,我試圖添加它,但仍然無法正常工作。我編輯了mt後 –

回答

1

確保您已在目標頁面開始會話:/fwf/online/index.php

您也可以在兩頁上檢查返回值session_id()。該值應該是相同的,如果不是,即使你已經調用兩個頁面上session_start,這可能意味着三件事情:

  1. 要麼你打電話session_write_close有效地導致創建新的會話,而忘記以前的所有數據,
  2. PHP無法訪問它應該在服務器上存儲會話數據的目錄(發生這種情況!),
  3. ...或用戶已禁用Cookie,從而使他的瀏覽器無法保留會話ID。

我覺得第三個選項是最有可能的問題的原因。

+0

我打印了兩個會話ID並獲得了不同的名稱:「會話ID:ihpfs1skrp792gncgancb02516」 「會話ID:tp6ejtl1tj9bigrgsi3jt6h9a1」 –

+0

我根據此信息編輯了答案。 –

+0

是的,從Android客戶端它的工作原理,但從我的腳本 - 不,也許在餅乾問題 –