3

リダイレクトのためにphp file_get_contentsを使用できないため、次のコードを試していますが、何も返されません:

function file_get_contents_curl($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    $data = curl_exec($ch);

    curl_close($ch);

    return $data;
}


$url = 'http://www1.macys.com/shop/product/michael-michael-kors-wallet-jet-set-monogram-ziparound-continental?ID=597522&CategoryID=26846&RVI=Splash_5';
$html = file_get_contents_curl($url);
echo "html is ".$html;
4

3 に答える 3

9

次の出力をすばやく確認します。

curl --max-redirs 3 -L -v $urlCookieの設定中に、302リダイレクトが同じURLにリダイレクトされることを示しています..

Cookie jar を設定すると、「修正」されるようです。

curl -c /tmp/cookie-jar.txt --max-redirs 3 -L -i $url

だから.. Cookie(jar)を有効にする

編集:

既存のコードに行を追加して、機能させることができます。

curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).DIRECTORY_SEPERATOR.'c00kie.txt');
于 2012-09-13T06:49:54.537 に答える
2

オプションを使用CURLOPT_VERBOSEしてリクエストをデバッグできます。

出力を STDERR、または CURLOPT_STDERR を使用して指定されたファイルに書き込みます。

$curl_debug_file = __DIR__.DIRECTORY_SEPARATOR.'curl.log';
$fh = fopen($curl_debug_file, "w+");
curl_setopt($handle, CURLOPT_STDERR, $fh);
curl_setopt($ch, CURLOPT_VERBOSE, true);
于 2012-09-13T06:46:46.400 に答える
0

あなたが実行する場合

echo curl_error($ch);

curl_exec の直後に、次のように表示されます。

最大 (20) 回のリダイレクトが続きました

リダイレクトの理由と場所を調べる

于 2012-09-13T06:45:15.290 に答える