200 codice HTTP a stringhe non url
-
30-09-2019 - |
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?
Soluzione
Si potrebbe voler controllare il valore restituito da curl_exec
prima. Si dice nel manuale :
I ritorni
TRUE
in caso di successo oFALSE
in caso di fallimento. Tuttavia, se laCURLOPT_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.