0

Webサイトのステータスコードを調べるためにCurlを使用しています。これは、ユーザーがフォームにURLを入力した場合の応答です。基本的には、URLが有効かどうかを確認したいだけなので、問題がない可能性が高い特定のコードのみを許可するのが最善の方法だと思いました。しかし、これは期待どおりに機能していません。EG tescoは503を返し、Marks&Sparksは405を返します。したがって、実際には問題ないが、私には問題がないように思われるステータスコードがもっとたくさんある可能性があります。

だから...私の質問は、どのhttpステータスコードを信頼すべきかということです。または、これを逆に実行して、特定のステータスコードを除くすべてを渡す必要がありますか?

完全を期すために、そしてそれが誰かを助ける場合に備えて、これが私がステータスコードを取得する方法です:

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_NOBODY, true);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
if ($statusCode == 200 || $statusCode == 300 || $statusCode == 301 || $statusCode == 302 || $statusCode == 303 || $statusCode == 307 || $statusCode ==) {
    $ret = true;   
}
4

1 に答える 1

2

CURLを介してURLの存在を確認する
参照:http ://www.php.net/manual/en/function.file-exists.php#74469

<?php
function url_exists($url) {
    if (!$fp = curl_init($url)) return false;
    return true;
}
?>

あなたの疑問によるいくつかのステータスコードと参照

200 OK

リクエストは成功しました。応答とともに返される情報は、要求で使用されるメソッドによって異なります。次に例を示します。

要求されたリソースに対応するGETエンティティが応答で送信されます。

HEAD要求されたリソースに対応するエンティティヘッダーフィールドは、メッセージ本文なしで応答で送信されます。

アクションの結果を説明または含むエンティティをPOSTします。

エンドサーバーが受信した要求メッセージを含むエンティティをトレースします。

201 Created

リクエストが実行され、新しいリソースが作成されました。新しく作成されたリソースは、応答のエンティティで返されるURIによって参照できます。リソースの最も具体的なURIは、Locationヘッダーフィールドによって指定されます。

202 Accepted

リクエストは処理のために受け入れられましたが、処理は完了していません。リクエストは、実際に処理が行われるときに許可されない可能性があるため、最終的に処理される場合とされない場合があります。このような非同期操作からステータスコードを再送信する機能はありません。

203 Non-Authoritative Information

エンティティヘッダーで返されるメタ情報は、オリジンサーバーから利用できる最終的なセットではなく、ローカルまたはサードパーティのコピーから収集されます。提示されたセットは、元のバージョンのサブセットまたはスーパーセットである可能性があります。たとえば、リソースに関するローカルアノテーション情報を含めると、オリジンサーバーが認識しているメタ情報のスーパーセットが生成される可能性があります。この応答コードの使用は必須ではなく、応答が200(OK)の場合にのみ適切です。

204 No Content

サーバーは要求を実行しましたが、エンティティ本体を返す必要はなく、更新されたメタ情報を返したい場合があります。応答には、エンティティヘッダーの形式で新しいまたは更新されたメタ情報が含まれる場合があります。これらのメタ情報が存在する場合は、要求されたバリアントに関連付ける必要があります。

205 Reset Content

サーバーはリクエストを実行し、ユーザーエージェントはリクエストが送信される原因となったドキュメントビューをリセットする必要があります。この応答は、主に、ユーザー入力を介してアクションの入力を実行できるようにすることを目的としています。その後、ユーザーが別の入力アクションを簡単に開始できるように、入力が行われるフォームをクリアします。応答にはエンティティを含めてはなりません(MUSTNOT)。

これを読む

http://www.seocentro.com/articles/apache/http-status-codes.html
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
http://www.w3.org/Protocols/rfc2616/rfc2616- sec10.html

于 2013-03-23T01:47:20.523 に答える