Scripts

remote file exists

Ik heb heel lang gezocht naar een functie die controleerd of externe bestanden bestaan. "Vroeger" werd dit voornamelijk met fopen() gedaan, echter deze functie wordt steeds vaker op servers geblokkeerd ivm veiligheid. CURL kan ook gebruikt worden, maar geeft een html waarschuwing, dit is vaak niet gewenst. Na lang zoeken, heb ik deze functie gevonden, heb ik dus niet zelf geschreven. Ik post hem omdat, denk ik, meer mensen hem goed kunnen gebruiken. (bron http://www.php.net/manual/en/function.fsockopen.php#39948)

remote-file-exists
[code]
<?php
    /*
    * @return boolean
    * @param  string $link
    * @desc   &#65533;berpr&#65533;ft die angegeben URL auf Erreichbarkeit (HTTP-Code: 200)
    */
    function url_validate( $link )
    {        
        $url_parts = @parse_url( $link );

        if ( empty( $url_parts["host"] ) ) return( false );

        if ( !empty( $url_parts["path"] ) )
        {
            $documentpath = $url_parts["path"];
        }
        else
        {
            $documentpath = "/";
        }

        if ( !empty( $url_parts["query"] ) )
        {
            $documentpath .= "?" . $url_parts["query"];
        }

        $host = $url_parts["host"];
        $port = $url_parts["port"];
        // Now (HTTP-)GET $documentpath at $host";

        if (empty( $port ) ) $port = "80";
        $socket = @fsockopen( $host, $port, $errno, $errstr, 30 );
        if (!$socket)
        {
            return(false);
        }
        else
        {
            fwrite ($socket, "HEAD ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n");
            $http_response = fgets( $socket, 22 );
            
            if ( ereg("200 OK", $http_response, $regs ) )
            {
                return(true);
                fclose( $socket );
            } else
            {
//                echo "HTTP-Response: $http_response<br>";
                return(false);
            }
        }
    }
?> 
[/code]

Reacties

0
Nog geen reacties.