Avatar billede walkie84 Nybegynder
14. marts 2009 - 21:21 Der er 19 kommentarer og
1 løsning

Tjek aktivt link

Hej Eksperter,

Er det muligt at lave et script som kan tjekke om en specifik url er oppe? Altså online.

Jeg har nemlig brug for at kunne gå ind på én side, og så tjekker den om forskellige sider, som jeg har defineret, ikke er nede - og derefter udskrive resultatet.

Venligst
Morten
Avatar billede jakobdo Ekspert
14. marts 2009 - 21:25 #1
Du kunne kigge på funktionen: http://dk.php.net/manual/en/function.get-headers.php

Og så tjekke om array element 1 indeholder 200 OK.
Avatar billede walkie84 Nybegynder
14. marts 2009 - 21:29 #2
Ok, smart.

Og hvis den returnerer: [0] => HTTP/1.1 200 OK
Så betyder det at siden er oppe?
Avatar billede jakobdo Ekspert
14. marts 2009 - 21:33 #3
Det betyder siden er oppe ja. :o)
og du bør så få 4XX eller 3XX ved fejl.
Avatar billede walkie84 Nybegynder
14. marts 2009 - 21:34 #4
Genialt.

Tusind tak for hjælpen, og de hurtige svar Jakob.

Skriv et svar, så får du dine point.

Mvh Morten
Avatar billede walkie84 Nybegynder
14. marts 2009 - 21:36 #5
Lige et andet spørgsmål.

Kan man skrive noget så den kun udskriver den første linje så?
Dvs.
[0] => HTTP/1.1 200 OK
Avatar billede jakobdo Ekspert
14. marts 2009 - 21:38 #6
Du kunne måske genbruge min kode herfra: http://www.codebreaker.dk/exp/spm.php?spm=817921

Og hvis du laver:

$noget = get_headers('http://www.exp.dk');
kan du udskrive "linje 1" med:

echo $noget[0];
Avatar billede jakobdo Ekspert
14. marts 2009 - 21:41 #7
Svar!
Avatar billede walkie84 Nybegynder
14. marts 2009 - 21:42 #8
Perfekt..

Igen, tusind tak :o)
Avatar billede jakobdo Ekspert
14. marts 2009 - 21:47 #9
Takker for point og selv tak.
Avatar billede walkie84 Nybegynder
14. marts 2009 - 23:03 #10
Hej igen jakob,

Jeg har lige prøvet med nedenstående (din kode), men nu returnerer den alle som OFFLINE ?!? Any idea?


function check_web($url, $status='200'){
    $respons = get_headers($url);
    if($respons !== false){
        if(strpos($respons[0],$status)){
            return true;
        }
    }
    return false;
}

$qlist = mysql_query("SELECT * FROM tabel") or die(mysql_error());

while ($chk = mysql_fetch_array($qlist)) {
    if(check_web('$chk[link]')){
        echo "$chk[link] - ONLINE<br />";
    }else{
        echo "$chk[link] - OFFLINE<br />";
    }
}



Mvh Morten
Avatar billede jakobdo Ekspert
15. marts 2009 - 08:16 #11
Sikker på dine links er korrekt ?
Avatar billede walkie84 Nybegynder
15. marts 2009 - 08:29 #12
Ja, jeg har prøvet forskellige links, som f.eks. http://www.eksperten.dk og http://www.google.com :-)
Avatar billede jakobdo Ekspert
15. marts 2009 - 09:02 #13
I denne linje:
if(check_web('$chk[link]')){

bør du rette til:

if(check_web($chk['link'])){
Avatar billede walkie84 Nybegynder
15. marts 2009 - 09:07 #14
Ja, det hjalp tak :o)

Nu har jeg lige et andet spørgsmål.

Det ser ud som om, at hvis den url man efterspørger redirecter til en anden side, så kommer den til at stå som offline. Er det korrekt?

F.eks. http://www.google.com
Avatar billede jakobdo Ekspert
15. marts 2009 - 09:32 #15
True...
Den redirecter dig nemlig til .dk.
Så det skal der lige leges lidt med.
Avatar billede walkie84 Nybegynder
15. marts 2009 - 09:41 #16
Godt nok.

Tak for hjælpen endnu engang!
Avatar billede jakobdo Ekspert
15. marts 2009 - 09:49 #17
Jeg har forsøgt at rette lidt i scriptet.
Måske det kan laves bedre...

function check_web($url, $status='200'){
    $respons = get_headers($url);
    if($respons !== false){
        if(strpos($respons[0],$status)){
            return true;
        }elseif(strpos($respons[0],' 30')){
            for($i = 0; $i < count($respons); $i++){
                if (preg_match('/Location: (.+)/i', $respons[$i],$match)){
                    return check_web($match[1],$status);
                }
            }
        }
    }
    return false;
}
Avatar billede walkie84 Nybegynder
15. marts 2009 - 09:54 #18
Lækkert, så hvis indtastede url redirecter, så fanges den nye adresse og testes igen?
Avatar billede jakobdo Ekspert
15. marts 2009 - 09:57 #19
Nemlig.
Avatar billede walkie84 Nybegynder
15. marts 2009 - 10:12 #20
Perfekt, så lærte jeg også det :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester