Edgar Ehritt: foreach zu schnell Browser absturz....

Beitrag lesen

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.