Angegebene Webadressen in Formularen prüfen

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';
}
Werbung

WordPress SEO Plugin

Über H.-Peter Pfeufer

Ich bin Webentwickler/ -programmierer aus Leidenschaft, WordPressbegeistert und ab und an auch mal ein netter Mensch.
Vor allen schreibe ich über alles was mit den Themen Webentwicklung/ -programmierung und WordPress zu tun hat. Nebenher auch mal einige Gedanken zu allgemeineren Themen.

Kategorie(n): PHP
Tags: , , ,
Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

 

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>