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://ppfeufer.de')) {
    echo 'existiert';
} else {
    echo 'existiert NICHT';
}
Artikel / Seite weiterempfehlen

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>