2010-12-28 13 views
3

ここに私のジレンマがあります... 私は基本的にCURLを使ってサードパーティのウェブサイトにログインして、そのログインセッションに基づいてユーザーの詳細を更新する別の投稿を作成するスクリプトを用意しています。今では私のサイトが忙しくなっているので、私は同じことをやっている複数のユーザーがいますし、カールが混乱し、異なるユーザー情報でユーザーの詳細を更新しているようです。これは本当の問題を引き起こしています。 ログイン後にユーザーが使用しているCookieが他のユーザーと共有されているため、同じCookieでログインすると、サードパーティのシステムが混乱することがあります。私のコードは以下に掲載されています。私は、必要な作業を行うためにphpセッションを維持するために、cookiefileとcookiejarを使用する必要があります。しかし、同じCookieがすべてのユーザーによって再利用されているようです。 それは意味がありますか?これを変えるために私ができることはありますか?助けてください.... ありがとう!以下はphp CURL - 複数の独立したセッション - 助けが必要です!

あなたは、セッションごとに同じcookies.txtファイルを使用しているので、共有クッキーの問題がどこから来ていることだ、私は両方のログインに使用したコードで、ユーザーの更新

function hitForm($postURL, $postFields, $referer="", $showerr = FALSE, $ispost = TRUE) { 
    global $islocal, $path_escape; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); 

    curl_setopt($ch, CURLOPT_URL, $postURL); 
    if ($ispost) 
     curl_setopt($ch, CURLOPT_POST, 1); 
    else 
     curl_setopt($ch, CURLOPT_HTTPGET, 1); 
    curl_setopt($ch, CURLOPT_REFERER, $referer); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    $ret = curl_exec($ch); 
    if ($error = curl_error($ch)) { 
     if ($showerr) 
      echo 'ERROR: ' . $error; 
     return -1; 
     exit; 
    } 
    $CU_header = curl_getinfo($ch); 
    $CU_header["err"] = curl_errno($ch); 
    $CU_header["errmsg"] = curl_error($ch); 
    curl_close($ch); 

    $returnout = $ret; 

    //for debugging purposes for now we are logging all form posts 
    SaveLog("hitform", "F[".$this->curruserid." - ".$this->currfunc." - ".date("d-m-y h:i:s")."]".$postFields); 

    return $ret; 
} 

答えて

2

を投稿してください。実行する並列セッションごとに個別のファイルを指定する必要があります。

2

すべてのユーザーに共有Cookie jarを使用しています。各ユーザーには個別のCookie jarが必要です。

0

私が問題を理解する限り、あなたのスクリプトは間違ったユーザー情報を取得しています。とにかくユーザー情報をどのように保存しますか?

私はそれが問題の原因だと言うだろう - あなたはユーザー情報に固有の識別子を割り当てないと、それは厄介な取得する場所それはだ;)

ので、最初にすべての、私はセッションを関連付けたいですユーザー情報を持つID(または、すべてのユーザーに固有のセッションにユーザー情報を格納します)をロードし、そこからロードします。そして、私はそれがトリックを行うべきだと思う;)

2

あなたはそれぞれのユーザーのために異なるクッキーファイルを使用する必要があります。私はあなたのpostFieldsを想定

は、(ユーザID、またはユーザ名など)、ユーザーごとにいくつかのユニークな識別子を含む、そのような何かしてみてください:

$cookie_file = 'cookies_' . $postFields['user_id'] . '.txt'; 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
+0

感謝を - これは試してみるう! – Gotts

関連する問題