Domanda

$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);

sto usando arricciarsi il mio progetto. Sto diventando codice HTTP di siti web. Ma quando provo "asdasd" ($ url = "asdasd"), è tornato HTTP codice è 200. Ma "asdasd" non è un sito web. Perchè HTTP codice è 200?

È stato utile?

Soluzione

Si potrebbe voler controllare il valore restituito da curl_exec prima. Si dice nel manuale :

  

I ritorni TRUE in caso di successo o FALSE in caso di fallimento. Tuttavia, se la CURLOPT_RETURNTRANSFER opzione è impostata, verrà restituito il risultato in caso di successo, FALSE in caso di fallimento.

Per curl_getinfo c'è una nota a margine :

  

Le informazioni raccolte da questa funzione viene mantenuta se il manico è ri-utilizzato. Ciò significa che, a meno che una statistica è sottoposto a override internamente da questa funzione, l'info precedente viene restituito.

In modo che HTTP 200 potrebbe anche essere il risultato di una precedente invocazione CURL.

Altri suggerimenti

Un altro errore possibile può accadere se si sviluppano nel locale e si utilizza gestite personalizzate servizi DNS, allora probabilmente possibile ottenere alcune pagine di errore gestiti come OpenDNS sta facendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top