0

以下のコードでは、ユーザー名とパスワードを投稿しようとしていますが、postを使用してCookieを作成できません。getメソッドで同じことを行うと、Cookieが作成されます。

    $BASEURL="http://localhost/openx/www/api/json/index.php/main/authenticate/";

    $POSTFIELDS='username="'.$username.'"&password="'.$password.'"';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_FAILONERROR, 0);
    curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
    curl_setopt ($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);
    curl_setopt($ch, CURLOPT_URL, $BASEURL);


    $returned = curl_exec($ch);

curl_getinfo($ ch)は200 OK httpコードを返します。上記のコードの何が問題になっているのか、誰かアドバイスしてください。

前もって感謝します。

4

2 に答える 2

3

cookiejarは、curl_close($ ch)を使用してcurlハンドルを閉じた場合にのみ保存されます。

マニュアルから:

CURLOPT_COOKIEFILECookie データを含むファイルの名前。Cookieファイルは、Netscape形式にすることも、ファイルにダンプされた単なるHTTPスタイルのヘッダーにすることもできます。名前が空の文字列の場合、Cookieは読み込まれませんが、Cookieの処理は引き続き有効です。

CURLOPT_COOKIEJAR ハンドルが閉じられたとき(たとえば、curl_closeの呼び出し後)にすべての内部Cookieを保存するファイルの名前。

http://www.php.net/manual/en/function.curl-setopt.php

于 2012-07-09T07:36:40.633 に答える
0

コードを以下に変更し、現在は作業中です。

$ckfile = tempnam ("/tmp/", "CURLCOOKIE");
        $BASEURL='http://localhost/openx/www/api/json/index.php/main/authenticate/';
        $POSTFIELDS='username='.$username.'&password='.$password.'';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName");
        curl_setopt($ch, CURLOPT_URL,'http://localhost/openx/www/api/json/index.php/main/authenticate/');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);

        ob_start();      // prevent any output
        $result=curl_exec ($ch); // execute the curl command
        ob_end_clean();  // stop preventing output

        $result = curl_exec($ch);
            curl_close($ch);
于 2012-07-09T10:35:17.563 に答える