2011-01-07 9 views
1
$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; 
$ch=curl_init(); 
    curl_setopt ($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch,CURLOPT_VERBOSE,false); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch,CURLOPT_SSLVERSION,3); 
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE); 
    $page=curl_exec($ch); 
    //echo curl_error($ch); 
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 

私のプロジェクトではcUrlを使用しています。私はWebサイトのHTTPコードを取得しています。しかし、 "asdasd"($ url = "asdasd")を試してみると、返されるHTTPコードは200です。しかし、 "asdasd"はウェブサイトではありません。 HTTPコードが200の理由200 URL以外の文字列でのHTTPコード

+0

「curl_error」についてはどうですか?それは何かを返しますか? – Gumbo

答えて

1

最初にcurl_execの戻り値を確認したい場合があります。それはthe manualで述べている:成功または失敗のFALSE

戻りTRUE。ただし、CURLOPT_RETURNTRANSFERオプションが設定されている場合は、正常に結果が返されます。FALSEが失敗しました。 curl_getinfoについては

side noteがあります:

ハンドルが再利用されている場合、この機能によって収集された情報が保存されています。つまり、この関数によって統計が内部的にオーバーライドされない限り、前の情報が返されます。

HTTP 200が以前のcURL呼び出しの結果である可能性があります。

+0

だから、CURLOPT_RETURNTRANSFERをFALSEに設定する必要があります。右?または私は誤解した? – Eray

+0

@Eray Um ...いいえ、必ずしもそうではありません。私の答えは、実際のリクエストが成功したかどうかを知ることです。どちらの場合でも(** 'CURLOPT_RETURNTRANSFER' **が設定されているかどうか)、curl_exec()は失敗した場合に' FALSE'を返します。 –

0

ローカルで開発してカスタムの管理DNSサービスを使用すると、OpenDNSのような管理エラーページが表示される可能性があります。

関連する問題