2017-02-24 11 views
0

私はこの質問が何度もStack-Overflowで尋ねられていることを知っていますが、答えのどれもが私の問題を解決しませんでした。私は、リモートでJSPサイトを閲覧するためにカール使用してPHPスクリプトを書いていますcurl phpでセッションを維持するには?

:ここ は私のコードです:

<?php 
$loginUrl = 'http://ccc.hyundai-motor.com/servlet/ccc.login.CccLoginServlet'; 

$sh = curl_share_init(); 
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SHARE, $sh); 
curl_setopt($ch, CURLOPT_URL, $loginUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,'the post data including my username and password and other hidden fields'); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_exec($ch); 

$ch2 = curl_init(); 
curl_setopt($ch2, CURLOPT_SHARE, $sh); 
curl_setopt($ch2, CURLOPT_URL,'http://ccc.hyundai-motor.com/servlet/ccc/admin/user/UserInfoServlet?cmd=myUserInfo'); 
curl_setopt($ch2, CURLOPT_COOKIEFILE,'cookie.txt'); 
curl_setopt($ch2, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch2, CURLOPT_VERBOSE, true); 
$result = curl_exec($ch2); 
print $result; 
curl_share_close($sh); 
curl_close($ch); 
curl_close($ch2); 
?> 

私はクッキーファイルが作成されたコードを実行するが、私はエラー「セッションが失わ取得する場合、再ログインしてください。 "

+0

http://stackoverflow.com/questions/13020404/keeping-session-alive-with-curl-and-php#13020494 – JustOnUnderMillions

+0

あなたは私のコードの問題についてより具体的になりますか? –

+0

あなたは最初の呼び出しでこれらの 'CURLOPT_COOKIEJAR | CURLOPT_COOKIEFILE'と' CURLOPT_COOKIEJAR'と第2の部分で 'CURLOPT_COOKIEFILE'のうちの1つだけを使うべきですか?http://stackoverflow.com/a/13020460/4916265 – JustOnUnderMillions

答えて

0

curl_share_initでハンドルを作成し、それを各cURLインスタンスに渡す必要があります。それ以外の場合、インスタンスは別々に存在し、必要なセッションCookieを共有できません。

PHPマニュアルからの例:私はすでに読んだことが

// Create cURL share handle and set it to share cookie data 
$sh = curl_share_init(); 
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); 

// Initialize the first cURL handle and assign the share handle to it 
$ch1 = curl_init("http://example.com/"); 
curl_setopt($ch1, CURLOPT_SHARE, $sh); 

// Execute the first cURL handle 
curl_exec($ch1); 

// Initialize the second cURL handle and assign the share handle to it 
$ch2 = curl_init("http://php.net/"); 
curl_setopt($ch2, CURLOPT_SHARE, $sh); 

// Execute the second cURL handle 
// all cookies from $ch1 handle are shared with $ch2 handle 
curl_exec($ch2); 

// Close the cURL share handle 
curl_share_close($sh); 

// Close the cURL handles 
curl_close($ch1); 
curl_close($ch2); 
+0

それでも同じエラーが出るので、私はそれに応じて質問のコードを更新しました。見てください。 –

関連する問題