2012-06-28 114 views
-1

我有問題在我的網站和cURL請求之間傳遞會話數據。傳遞PHP會話信息到cURL

代碼:
此代碼是上demo.xyz.com,它從autenticates DB用戶在www.abc.com並創建在全成登錄的情況下,會話變量「SESSION_USER_ID」。
登錄後,它會使用jQuery .load()函數向「www.abc.com/dashboard.php」發起cURL請求。

$("#dash").load("get-rem-page.php?p=http://www.abc.com/dashboard.php").html("Loading..."); 

一開始REM-page.php文件有以下代碼:

上www.abc.com dashboard.php的
<?php 
$url = $_REQUEST['p']; 

$curl_handle=curl_init(); 
curl_setopt($curl_handle,CURLOPT_URL,$url); 
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); 
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl_handle, CURLOPT_COOKIESESSION, true); 

curl_setopt($curl_handle, CURLOPT_COOKIE,session_name().'='.session_id()); 
curl_setopt($curl_handle, CURLOPT_COOKIEFILE, 'cookies.txt'); // set cookie file to given file 
curl_setopt($curl_handle, CURLOPT_COOKIEJAR, 'cookies.txt'); 


$buffer = curl_exec($curl_handle); 
curl_close($curl_handle); 

if (empty($buffer)) 
{ 
    print "<p>Unable to load remote page</p>"; 
} 
else 
{ 
    print $buffer; 
} 
?> 

代碼是根據:在

<?php 
session_start(); 
include "classes/local_info.php"; 

$objCon = new cD; 
$objFun = new cF; 

$link=$objCon->connectMYSQL(); 
$vCon = $objCon->connectDB($link); 
if($vCon==false){ 
    echo "DB Error"; 
    exit; 
} 
echo "i am in dashboard.php & sessionid = ".$_SESSION["SESSION_USER_ID"]."<hr />"; 
$id = $_SESSION["SESSION_USER_ID"]; 
?> 
<p>Welcome member number <?php echo $_SESSION["SESSION_USER_ID"];?></p> 

輸出DIV(id:dash)是

我在dashboard.php & sessionid =


歡迎構件nmber

問題:
在dashboard.php會話變量是空的。需要傳遞此會話值,而不會對dashboard.php進行任何更改。已經嘗試了與CURLOPT_COOKIE噸選項..但似乎沒有工作。專家開放是必需的。

回答

0

我用捲曲和餅乾打一次頗多,最終工作的代碼是這樣的:

$ch = curl_init(); 

    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_VERBOSE, 0); 

    curl_setopt($ch, CURLOPT_COOKIEJAR, session_name().'='.md5(session_id())); 
    curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.md5(session_id())); 
+0

這接壤貨物邪教編碼。 'CURLOPT_COOKIEJAR'接受一個文件名,還有「一個文件的名字,以保存所有內部cookie到句柄關閉時,例如在curl_close調用之後。」它對請求沒有任何影響,這是如此。 – chx

+0

可能。我沒有興趣嘗試改變任何東西后,我終於得到它的工作:) –