Hallo Sneap (alias DiamondDog?),
######################################################
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if (stripos($result, '404 Not Found') !== false){}
######################################################
das kann schon falsch sein. [curl_exec()](http://de2.php.net/manual/en/function.curl-exec.php) gibt so keine Informationen der HTTP-Schicht zurück. Die Abfrage kann also scheitern, denn sie durchsucht den völlig falschen Kontext der Ressource. Aber auch wenn Du `curl_setopt($ch, CURLOPT_HEADER, TRUE);`{:.language-php} hier nur ausgelassen hast, ist diese Abfrage fehleranfällig. Dazu drei Response-Beispiele:
> HTTP/1.1 200 OK
> Date: Fri, 17 Jul 2009 13:12:51 GMT
> Content-Type: text/html; charset=ISO-8859-1
>
> ~~~html
<html>
> <head>
> <title>Was tun bei HTTP-Status 404 Not Found</title>
> </head> <!-- restlicher Inhalt -->
Da $result
, jedenfalls aus Deinem Auszug nicht anders ersichtlich, zwei Kontexte als MIME "message/http" haben wird, schlägt hier Deine Scriptlogik fehl.
HTTP/1.1 200 OK
Date: Fri, 17 Jul 2009 13:12:51 GMT
Content-Type: text/html; charset=ISO-8859-1
X-Interredirect-from: 404 Not Found
Hier hast Du einen Fall innerhalb des HTTP-Kontexts, wo die Scriptlogik fehlschlagen wird.
HTTP/1.1 404 Nicht gefunden
Date: Fri, 17 Jul 2009 13:15:06 GMT
Content-Type: text/html; charset=ISO-8859-1
Auch in diesem, zugestandener Maßen sehr unwahrscheinlichen aber RFC-konformen, Fall verfehlt die Scriptlogik.
Was suchst Du also? Den Status des HTTP-Response: Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
Du musst also die aller erste Suchen, und kannst Dich nur auf den Status-Code (im Beispie $status
) verlassen:
##########################################################################################
$ch=curl_init($host);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
[link:http://de2.php.net/manual/en/function.list.php@title=list]($header, $result) =[link:http://de2.php.net/manual/en/function.explode.php@title=explode]("\r\n\r\n",curl_exec($ch),2);
list($statusline, $header) =explode("\r\n",$header,2);
list($httpversion,$status,$rest)=explode(' ',$statusline,3);
if($status!=404){
echo '<div font-size:14px;"><b>Fehler</b>: Fehler 404 Seite nicht gefunden!</div><br>';
}
curl_close($ch);
##########################################################################################
Es ist eben das Bedauerliche an diesem Forum, dass manche, die mit Artikeln winken, statt zu helfen, sich dünnpfiffiger Konversation hingeben.
Gruß aus Berlin!
eddi
Man(n) lernt nie aus:
Diven steigen unter all_gemeinen_ Erstaunen und Bewundern auf. Tragisch ist nur, wenn sie dort als Blindgänger hängenbleiben, statt in einem Feuerwerk wieder herunter zu kommen.