Mailinglisten-Archive |
-----Ursprüngliche Nachricht----- Hallo Liste, ich möchte die Gültigkeit von URL-Einträgen in einer DB kontrollieren. Hierfür soll die URL aufgerufen und anschließend der vom Server zurückgelieferte Wert ausgewertet werden. ----- Antwort aus Liste --------- >>von Tobias Orterer >>Gesendet: Samstag, 5. August 2000 18:13 >>An: php_(at)_php-center.de >>Betreff: Re: [php] Statuscodes eines Servers abfragen >> >>mit fopen() öffnen kompl einlesen und mit strstr($ganzeeingeleseneseite, >>"404") schaun obsn 404´er is ;o) ----- Antwort auf Antwort ------- RE: Danke Tobi! Bei meinen Recherchen bin ich auf folgende Funktion gestoßen. Die Lösung meiner Probleme und damit die Ersparniss vermutlich tagelangen Kopfzerbrechens: <? function check($url) { if (!eregi("^http://", $url)) { if (eregi("^mailto:", $url)) { $url = trim(eregi_replace("^mailto:(.+)", "\\1", $url)); list($brugernavn, $host) = split("_(at)_", $url); $dnsCheck = checkdnsrr($host,"MX"); if ($dnsCheck) $return[code] = "OK"; else $return[code] = "ERROR"; } else $return[code] = "N/A"; } else { $urlArray = parse_url($url); if (!$urlArray[port]) $urlArray[port] = "80"; if (!$urlArray[path]) $urlArray[path] = "/"; $sock = fsockopen($urlArray[host], $urlArray[port], &$errnum, &$errstr); if (!$sock) $return[code] = "Død"; else { $dump .= "GET $urlArray[path] HTTP/1.1\r\n"; $dump .= "Host: $urlArray[host]\r\nConnection: close\r\n"; $dump .= "Connection: close\r\n\r\n"; fputs($sock, $dump); while($str = fgets($sock, 1024)) { if (eregi("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*", $str)) $return[code] = trim(eregi_replace("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*", "\\1", $str)); if (eregi("^Content-Type: ", $str)) $return[contentType] = trim(eregi_replace("^Content-Type: ", "", $str)); } fclose($sock); flush(); } } return $return; } // Test der Funktion und Ausgabe der Ergebnisse $url="http://www.irgendwas.de/pfad/seite.htm"; $test=check($url); while(list($k, $v) = each($test)) printf("k=%s, v=%s<br>\n", $k, $v); ?>
php::bar PHP Wiki - Listenarchive