Auf viele Webseiten finden sich Formulare. Seien es Formulare zur Kontaktaufnahme, Nutzerregistrierung oder was auch immer. In den meisten dieser Formulare besteht die Möglichkeit die Adresse seiner eigenen Webseite zu hinterlassen.
Für den Programmierer ergibt sich daraus immer die Notwendigkeit die Daten zu prüfen, also zu schauen, ob die Eingaben in den Feldern auch gültige Werte enthalten. Zu validieren, ob in einen Datumsfeld auch ein Datum steht, oder in einen E-Mailfeld auch eine E-Mail. Datum und E-Mail kann man an Hand eines Regulären Ausdruckes erkennen, Webseiten auch. Nur bietet sich hier nicht die Möglichkeit zu prüfen ob der angegebene Link überhaupt existiert.
Um dies zu validieren, habe ich mich von einem Post bei phpsnippets.info inspirieren lassen. Genauer gesagt habe ich dort den Artikel “Test existence of a given url with cURL” gefunden, in dem eine Möglichkeit vorgestellt wird, wie man mittels cURL prüfen kann, ob die angegebene URL auch zu einem Ziel führt.
Das dort vorgestellte Codesnippet hat allerdings einen kleinen Schönheitsfehler. Ein 404 wird nicht erkannt und als valide ausgegeben. Dies war für mich Grund genug, das etwas zu optimieren und eine eigene Funktion zu erstellen, welche auch diesen Fall abfängt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /** * Checks existing of an given Hyperlink * (c) 10.08.2010 by: * H.-Peter Pfeufer * inspired by: * http://www.phpsnippets.info/test-existence-of-a-given-url-with-curl * @param string $var_sURI */ function checkURI($var_sURI) { if (!$var_sURI) { return; } $check = curl_init(); curl_setopt($check, CURLOPT_URL, $var_sURI); curl_setopt($check, CURLOPT_HEADER, true); curl_setopt($check, CURLOPT_NOBODY, true); curl_setopt($check, CURLOPT_RETURNTRANSFER, true); $var_sData = curl_exec($check); curl_close($check); if (preg_match('/HTTP\/1.1 200 OK/', $var_sData)) { return true; } else { return false; } } |
Diese Funktion kann nun in Kontaktformularen oder der Gleichen verwendet werden, um die Existenz der angegebenen URL zu testen. Die Anwendung ist denkbar einfach, eine simple if-Abfrage genügt.
1 2 3 4 5 | if (checkURI('http://blog.ppfeufer.de')) { echo 'existiert'; } else { echo 'existiert NICHT'; } |



