Likes Likes:  0
Resultaten 1 tot 9 van de 9
Geen
  1. #1
    E. Spaanbroek
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [PHP] Bestaan van URL checken

    Voor een pagina met externe links heb ik een functie die checkt of een
    url nog bestaat. Zo niet dan verandert een status in een database en
    wordt de url niet meer getoond. Dit werkt voor de meeste urls's.

    Nu heb ik een aantal url's waarbij het php-script een 404 - Not Found
    geeft, terwijl de url toch bestaat. Tik ik in een console HEAD `url` in,
    krijg ik inderdaad een 200 - OK terug voor die url's. Dat snap ik dus
    niet. Hoe kan een url benaderd via PHP 404 geven en via de command line
    200?

    Dit is de functie uit mijn script:
    <?
    function checkurl($url)
    {
    $url_parsed = parse_url($url);
    $host = $url_parsed["host"];
    $port = $url_parsed["port"];
    if ($port==0) {
    $port = 80;
    }
    $path = $url_parsed["path"];
    if ($url_parsed["query"] != "") {
    $path .= "?".$url_parsed["query"];
    }

    $fp = @fsockopen($host, $port, $errno, $errstr, 15);

    if($fp)
    {
    fputs($fp, "HEAD http://".$host.$path." HTTP/1.0\r\n\r\n");

    while(!feof($fp))
    {
    $check = $check.fgets($fp);
    }
    $checkstat = strpos(strtolower($check), '404 not found');
    if ($checkstat === false) {
    return 1;
    } else {
    return 0;
    }
    } else {
    return 0;
    }
    }
    ?>

    Is de input bijvoorbeeld http://www.mandarintools.com/chinesename.html,
    dan wordt een 0 teruggegeven. De inhoud van $check is dan: HTTP/1.1 404
    Not Found Date: Wed, 12 Jan 2005 20:15:10 GMT Server: Apache/1.3.26
    Connection: close Content-Type: text/html.

    Open ik een console en type HEAD
    http://www.mandarintools.com/chinesename.html, dan krijg ik:
    200 OK
    Connection: close
    Date: Wed, 12 Jan 2005 20:17:39 GMT
    Accept-Ranges: bytes
    ETag: "26ebd9-1f60-41e4b68b"
    Server: Apache/1.3.26
    Vary: Host
    Content-Length: 8032
    Content-Type: text/html
    Last-Modified: Wed, 12 Jan 2005 05:32:59 GMT
    Client-Date: Wed, 12 Jan 2005 20:17:40 GMT
    Client-Peer: 207.172.16.151:80
    Client-Response-Num: 1

    Iemand enig idee hoe dit kan, en beter nog, hoe dit op te vangen?

    Alvast bedankt voor het meedenken,

    Emile.

  2. #2
    Wimjan
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Bestaan van URL checken

    E. Spaanbroek schreef:

    > Voor een pagina met externe links heb ik een functie die checkt of een
    > url nog bestaat. Zo niet dan verandert een status in een database en
    > wordt de url niet meer getoond. Dit werkt voor de meeste urls's.
    >
    > Nu heb ik een aantal url's waarbij het php-script een 404 - Not Found
    > geeft, terwijl de url toch bestaat. Tik ik in een console HEAD `url` in,
    > krijg ik inderdaad een 200 - OK terug voor die url's. Dat snap ik dus
    > niet. Hoe kan een url benaderd via PHP 404 geven en via de command line
    > 200?
    >

    Dat heb ik ook wel eens gezien bij perl-scriptjes die iets vergelijkbaars
    doen. Daar blijkt het te liggen aan de gebruikte versie van HTTP: perl
    gebruikt blijkbaar achter de schermen HTTP/1.0, terwijl jouw 'head'-
    programma wellicht 1.1 gebruikt.

    > Dit is de functie uit mijn script:
    > <?
    > function checkurl($url)
    > {

    [...]
    > fputs($fp, "HEAD http://".$host.$path." HTTP/1.0\r\n\r\n");
    >

    Ah, inderdaad 1.0.

    [...]

    > Is de input bijvoorbeeld http://www.mandarintools.com/chinesename.html,
    > dan wordt een 0 teruggegeven. De inhoud van $check is dan: HTTP/1.1 404
    > Not Found Date: Wed, 12 Jan 2005 20:15:10 GMT Server: Apache/1.3.26
    > Connection: close Content-Type: text/html.
    >
    > Open ik een console en type HEAD
    > http://www.mandarintools.com/chinesename.html, dan krijg ik:
    > 200 OK

    [...]

    > Iemand enig idee hoe dit kan, en beter nog, hoe dit op te vangen?
    >

    Zeker. Ik heb net even gekeken en dit lijkt inderdaad een 1.0 versus 1.1
    probleem te zijn: je krijgt een 404 als je 'HEAD <url>/1.0' gebruikt en
    een 200 als je 'HEAD <url>/1.1' gebruikt.

    Dit is makkelijk te controleren met een tool als SamSpade, zie
    <http://www.samspade.org/ssw/> (voor Windows trouwens). En misschien
    heeft jouw 'head'-programma ook wel een mogelijkheid om de gebruikte
    HTTP-versie te specificeren.

    > Alvast bedankt voor het meedenken,
    >

    Graag gedaan.


    Groet,

    Wimjan

    --
    Sleet is van vroeger, tegenwoordig gaat alles kapot.

  3. #3
    Daniel Tryba
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Bestaan van URL checken

    Wimjan <news@inventio.nl> wrote:
    > Dit is makkelijk te controleren met een tool als SamSpade, zie
    > <http://www.samspade.org/ssw/> (voor Windows trouwens). En misschien
    > heeft jouw 'head'-programma ook wel een mogelijkheid om de gebruikte
    > HTTP-versie te specificeren.


    IPV HTTP 1.1 te gebruiken zou ik ervoor kiezen om 1.0 te gebruiken _met_
    de 1.1 Host header.


  4. #4
    Rene Pijlman
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Bestaan van URL checken

    Daniel Tryba:
    >IPV HTTP 1.1 te gebruiken zou ik ervoor kiezen om 1.0 te gebruiken _met_
    >de 1.1 Host header.


    Waarom?

    --
    René Pijlman

    Wat wil jij leren? http://www.leren.nl

  5. #5
    Daniel Tryba
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Bestaan van URL checken

    Rene Pijlman <reply.in.the.newsgroup@my.address.is.invalid> wrote:
    >>IPV HTTP 1.1 te gebruiken zou ik ervoor kiezen om 1.0 te gebruiken _met_
    >>de 1.1 Host header.

    >
    > Waarom?
    >


    De meeste kans op zinnige antwoorden.


  6. #6
    Rene Pijlman
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Bestaan van URL checken

    Daniel Tryba:
    >Rene Pijlman:
    >>>IPV HTTP 1.1 te gebruiken zou ik ervoor kiezen om 1.0 te gebruiken _met_
    >>>de 1.1 Host header.

    >>
    >> Waarom?

    >
    >De meeste kans op zinnige antwoorden.


    Hoezo? Er zijn toch niet of nauwelijks servers die struikelen over HTTP
    1.1?

    --
    René Pijlman

    Wat wil jij leren? http://www.leren.nl

  7. #7
    Daniel Tryba
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Bestaan van URL checken

    Rene Pijlman <reply.in.the.newsgroup@my.address.is.invalid> wrote:
    >>>>IPV HTTP 1.1 te gebruiken zou ik ervoor kiezen om 1.0 te gebruiken _met_
    >>>>de 1.1 Host header.
    >>>
    >>> Waarom?

    >>
    >>De meeste kans op zinnige antwoorden.

    >
    > Hoezo? Er zijn toch niet of nauwelijks servers die struikelen over HTTP
    > 1.1?


    Die paar die er wel zijn worden dan wel bereikt met http/1.0


  8. #8
    Daniel Tryba
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Bestaan van URL checken

    Rene Pijlman <reply.in.the.newsgroup@my.address.is.invalid> wrote:
    >>> Hoezo? Er zijn toch niet of nauwelijks servers die struikelen over HTTP
    >>> 1.1?

    >>
    >>Die paar die er wel zijn worden dan wel bereikt met http/1.0

    >
    > Daar staan de servers tegenover die bezwaar hebben tegen de Host header in
    > 1.0. Maar dat zijn er waarschijnlijk ook geen :-)


    Ik zou de specs even moet nalezen maar als ze ook maar enigszin zinnig
    zijn opgezet worden niet gedefineerde headers in http/1.0 genegeerd (ik
    kan met wel herinneren dat in de http 1.1 RFC vermeldt wordt dat het
    prettig zou zijn indien http 1.0 servers support zouden bieden voor de
    Host header (min of meer de ontwikkelaars die deze legacy servers
    onderhouden/implementeren poogt hiertoe te motiveren))

  9. #9
    E. Spaanbroek
    [PHP] Bestaan van URL checken
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Bestaan van URL checken

    Wimjan wrote:

    > E. Spaanbroek schreef:
    >
    >> Voor een pagina met externe links heb ik een functie die checkt of een
    >> url nog bestaat. Zo niet dan verandert een status in een database en
    >> wordt de url niet meer getoond. Dit werkt voor de meeste urls's.
    >>
    >> Nu heb ik een aantal url's waarbij het php-script een 404 - Not Found
    >> geeft, terwijl de url toch bestaat. Tik ik in een console HEAD `url` in,
    >> krijg ik inderdaad een 200 - OK terug voor die url's. Dat snap ik dus
    >> niet. Hoe kan een url benaderd via PHP 404 geven en via de command line
    >> 200?
    >>

    > Dat heb ik ook wel eens gezien bij perl-scriptjes die iets vergelijkbaars
    > doen. Daar blijkt het te liggen aan de gebruikte versie van HTTP: perl
    > gebruikt blijkbaar achter de schermen HTTP/1.0, terwijl jouw 'head'-
    > programma wellicht 1.1 gebruikt.
    >
    >> Dit is de functie uit mijn script:
    >> <?
    >> function checkurl($url)
    >> {

    > [...]
    >> fputs($fp, "HEAD http://".$host.$path." HTTP/1.0\r\n\r\n");
    >>

    > Ah, inderdaad 1.0.
    >
    > [...]
    >
    >> Is de input bijvoorbeeld http://www.mandarintools.com/chinesename.html,
    >> dan wordt een 0 teruggegeven. De inhoud van $check is dan: HTTP/1.1 404
    >> Not Found Date: Wed, 12 Jan 2005 20:15:10 GMT Server: Apache/1.3.26
    >> Connection: close Content-Type: text/html.
    >>
    >> Open ik een console en type HEAD
    >> http://www.mandarintools.com/chinesename.html, dan krijg ik:
    >> 200 OK

    > [...]
    >
    >> Iemand enig idee hoe dit kan, en beter nog, hoe dit op te vangen?
    >>

    > Zeker. Ik heb net even gekeken en dit lijkt inderdaad een 1.0 versus 1.1
    > probleem te zijn: je krijgt een 404 als je 'HEAD <url>/1.0' gebruikt en
    > een 200 als je 'HEAD <url>/1.1' gebruikt.
    >
    > Dit is makkelijk te controleren met een tool als SamSpade, zie
    > <http://www.samspade.org/ssw/> (voor Windows trouwens). En misschien
    > heeft jouw 'head'-programma ook wel een mogelijkheid om de gebruikte
    > HTTP-versie te specificeren.
    >
    >> Alvast bedankt voor het meedenken,
    >>

    > Graag gedaan.
    >
    >
    > Groet,
    >
    > Wimjan
    >
    > --
    > Sleet is van vroeger, tegenwoordig gaat alles kapot.

    Inmiddels is het gelukt dmv http1.1 te gebruiken het script beter
    werkend te krijgen.

    Bedankt!

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics