0

このサイトから郵便番号を取得しようとしています。

http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce

私のコードは単純です:

 <?php
    $postalCode = $_GET['code'];

    $httpAddr = 'http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce/Okr%C4%99g_'.$postalCode[0].'_'.$postalCode[0].$postalCode[1].'-xxx';

    file_get_contents($httpAddr);
    ?>

しかし、$ postalCodeを03-000に設定すると(01-000、05-000ですが、07-000、61-000、62-000は機能しています)、エラーが発生します。

Warning: file_get_contents(http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce/Okr%C4%99g_0_03-xxx): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /var/www/clients/client1/web4/web/ofix/test.php on line 5 

ページアドレスは正しく、Webブラウザにコピーして貼り付けることができ、機能します。何か案は?

4

1 に答える 1

0

OrbitでのLightnessRacesが疑われるように、WebサーバーがPHPの要求をブロックしているようです。

代わりにcURLを使用するとfile_get_contents()、詳細が明らかになります。

HTTP/1.0 403 Forbidden
スクリプトは、連絡先情報を含む有益なUser-Agent文字列を使用する必要があります。そうしないと、通知なしにIPブロックされる可能性があります。

Webブラウザーは、その要求で有効なUser-Agentヘッダーを送信します。そのため、ページはブラウザーでは正常にロードされますが、PHPではロードされません。

このURLをPHPにロードするテストでは、HTTPステータスコード200で成功する場合と、403で失敗する場合があります。エラーメッセージに、スクリプトブロックされている可能性がある(つまり、ブロックされていない場合がある)ことが示されていることに注意してください。

編集

詳細については、この質問を参照してください:PHPを使用してウィキペディアAPIから結果を取得するにはどうすればよいですか?

于 2012-11-25T21:05:36.400 に答える