-1

サイトと cURL リクエストの間でセッション データの受け渡しに問題があります。

コード:
このコードは demo.xyz.com にあり、www.abc.com の DB からユーザーを認証し、ログインが成功した場合にセッション変数 '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...");

get-rem-page.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;
}
?>

www.abc.com の dashboard.php のコードは次のとおりです。

<?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 =


ようこそ会員番号

問題:
dashboard.php のセッション変数が空です。dashboard.php を変更せずに、このセッション値を渡す必要があります。CURLOPT_COOKIE ..でたくさんのオプションを試しましたが、どれもうまくいかないようです。専門家のオープンが必要です。

4

1 に答える 1

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()));
于 2012-06-28T07:36:30.323 に答える