5

昔のカール関数を再利用していますが、今は覚えているのとは違う動作をしています。この特定のケースでは、ユーザーの Twitter 資格情報を認証しています。現在のコードは次のとおりです。

$cred = $_POST['twitter_username'].':'.$_POST['twitter_password'];
$url = "http://twitter.com/account/verify_credentials.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_GET, 0);
curl_setopt($ch, CURLOPT_USERPWD, $cred);
$result = curl_exec ($ch);
curl_close ($ch);

これは認証に対しては正常に機能していますが、JSON 応答全体をブラウザーに出力しています。これはやりたくないことです。

私はカールにあまり詳しくありません。CURLOPT_VERBOSE を 0 と false に設定しようとしましたが、どちらも機能しませんでした。これはどこかでかなり単純な変更だと確信していますが、それが何であるかはわかりません。

ありがとう

4

2 に答える 2

23

このオプションが必要です:

curl_setopt(CURLOPT_RETURNTRANSFER, true);

カールのドキュメントから:

CURLOPT_RETURNTRANSFER: 転送を直接出力するのではなく、curl_exec() の戻り値の文字列として返す場合は TRUE。

于 2009-04-23T19:33:32.073 に答える
3

CURLリクエストを簡素化するためにこの関数を書きました

function curl_http_request ($url, $options)
{
    $handle = curl_init($url);
    curl_setopt_array($handle, $options);
    ob_start();
    $buffer = curl_exec($handle);
    ob_end_clean();
    curl_close($handle);
    return $buffer;
} 

使用例

$options = array(
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_USERPWD => $cred
);

curl_http_request($url, $options);
于 2009-05-08T19:45:04.987 に答える