am 4. Mai 2009
Heute mal wieder was aus der Praxis, mal wieder etwas mit Code. Da ich derzeit im Qualitätsmanagement arbeite hat man natürlich eine ganz andere Sicht auf Projekte. Viel Code kommt da nicht mehr zusammen. Letzte Woche hatte ich aber mal wieder ein Anliegen, das ich in PHP verpacken wollte. Meine Anforderungen kann man ja schon aus dem Titel erkennen, ich fasse sie aber trotzdem schnell zusammen.
Ich habe eine Reihe von Webseiten, die für mich eine Black Box sind. Jetzt würde ich gerne rausfinden, ob sie den richtigen HTTP Status Code zurückliefern, denn auch wenn man im Browser alles korrekt eingezeigt bekommt, kann es sein, dass ein 404er im Header angezeigt wird. Für uns Anwender ist das eigentlich ziemlich egal, die Suchmaschinen oder besser die Suchmaschine wird diese Seite aber nicht in den Index mit ausnehmen. Das Testen auf den richtigen Status kann also relativ wichtig sein, wenn man seine Seiten gut positionieren will.
Die meisten PHP Methoden, wie fgets, file oder file_get_contens, kümmern sich nur um den Content eines Http Requests, der Header bleibt hierbei außen vor. Zusätzlich ist es meistens auch nicht erlaubt diese für den Zugriff auf externe Dateien zu verwenden. Hier hilft uns aber ein immer wieder gern verwendetes PHP Modul cURL. cURL ist eigentlich ähnlich zu wget, das ihr wohl alle kennt. Ich kann Dateien aus dem Internet laden, ohne dabei einen Browser verwenden zu müssen.
Gehen wir also davon aus, dass wir cURL installiert haben und es verwenden können. Dann würde unsere Funktion wie folgt aussehen.
public static function getHttpCode( $url )
{
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
return $info['http_code'];
}
Kein Hexenwerk würde ich mal sagen, trotzdem habe ich in meiner $info Variablen alle Informationen, die ich brauche, um meine Anfrage auf Korrektheit zu überprüfen. Ihr könnt auch diesen Array ja mal genauer ansehen, vielleicht braucht ihr das ein oder andere Element noch an einer anderen Stelle.
Diese Funktion solltet ihr einfach einmak täglich über eure Sitemap laufen lassen, in der Hoffnung, dass ihr kaputte Dateien vor Google findet.