yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Überprüfen, ob ein Link online ist

Häufig stellt man Links oder Downloads zur Verfügung, muss aber damit rechnen, dass dieser Link down geht.
Dieses Script schafft genau diesem lästigen Problem Abhilfe...


PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function checklink($url){
    if(
$url) {
        
$dat = @fopen ($link"r");
    if(
$dat){
        return 
true;
        
fclose($dat);
    } else {
        return 
false;
    }
}
?>


Was macht diese Funktion?
Als erstes wird überprüft, ob überhaupt eine URL eingetragen wurde. Denn wenn keine eingetragen wurde, dann kann man sich den Traffic ja sparen...

Dann wird mittels fopen() überprüft, ob die Datei existiert. Wenn sie existiert, dann liefert die Funktion TRUE zurück und schließt die Verbindung mit fclose(). Wenn die Datei nicht existiert (nicht lesbar ist), dann wird FALSEzurückgegeben. Die Verbindung muss nicht geschlossen werden, da das fopen() automatisch macht, wenn die Datei nicht existiert.

Anwendungsbeispiele
PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$link 
"http://www.coolklicks.de";
if(
checklink($link)){
    echo 
$link." existiert und ist erreichbar";
} else {
    echo 
$link." existiert nicht oder ist nicht erreichbar";
}

echo 
"<br/>";
$link "http://www.coolklicks.de/test/test/test/file.html";
if(
checklink($link)){
    echo 
$link." existiert und ist erreichbar";
} else {
    echo 
$link." existiert nicht oder ist nicht erreichbar";
}
?>



Eine Modifikationsmöglichkeit der obigen Funktion ist Folgende:
PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function checklink($url$alt=""){
    if(empty(
$alt)) {
        
$alt $urL;
    }

    if(
$url) {
        
$dat = @fopen ($link"r");
    if(
$dat){
        
fclose($dat);
        echo(
"<a href=\""$url ."\" target=\"_blank\" title=\""$alt ."\">"$alt ."</a>");
    } else {
        echo 
$alt;
    }
}
?>


Wenn die Seite hier erreichbar ist, dann wird ein Link ausgegeben. Wenn die Seite nicht erreichbar ist, wird nur die URL ohne Verlinkung dorthin ausgegeben. Alternativ kann man sich auch $alt ausgeben lassen, dazu muss man in der Funktion den Parameter setzen.

Die Anwendung sähe dann so aus:
PHP-Datei:
1
2
3
4
5
6
7
<?php
checkurl
("http://www.coolklicks.de");
//würde die Domain ausgeben

checkurl("http://www.coolklicks.de/download/file.exe""Download");
//würde Download ausgeben mit Link zu der URL
?>



Wenn unverständlich in den Comments posten, dann werde ich es nochmal überarbeiten...

Geschrieben von michi am 18.06.2004 (5992x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

Mir gefällt es und ist gut verständlich
Geschrieben von Phil Marx
Ganz gut zum prüfen :)



Mach noch, ob ein Server online ist (also anpingen)
Geschrieben von LLCoolDannY
1. Funktion muss mit checklink, nicht mit checkurl aufgerufen werden
2. bei der Modifikationsmöglichkeit url immer klein schreiben (nicht urL)
3. bei der Modifikationsmöglichkeit muss die variabel $url, nicht $link verwendet werden

ansonsten ganz gutes script
Geschrieben von fourfingers
Vielen dank

geht das denn auch mit images ? ich kriegs nämlich nicht hin, bei images...
Geschrieben von StarTrekMarc
Wäre es nicht korrekter, statt if($url) if(isset($url)) oder if($url != "") oder if(!empty($url)) zu benutzen? immerhin ist $url ein String und keine boolsche Variable...
Funktioniert natürlich alles ;) Die Frage ist nur, was davon der "beste/geeignetste" Code ist :)
Geschrieben von Madman-Maniac
<?php
function checklink($url){
if($url) {
$dat = @fopen ($link, "r");
if($dat){
return true;
fclose($dat);
} else {
return false;
}
}
?>

das ist falsch es muss so heißen

<?php
function checklink($url){
if($url) {
$dat = @fopen ($link, "r");
}
if($dat){
return true;
fclose($dat);
} else {
return false;
}
}
?>

da beim 1. if die geschweifte klammer nicht zugemacht wurde
Geschrieben von Sunjo