Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Test URL-a przez PHP (środowisko linux)
ahold
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.05.2009

Ostrzeżenie: (0%)
-----


Witam,

Potrzebuję funkcję która sprawdzi czy podany adres URL jest poprawny, i czy nie odpowiada pod nim 404.

Wziąłem taki kod, na oko wydaje się poprawny

Kod
function is_valid_url ( $url )
{
        $url = @parse_url($url);

        if ( ! $url) {
            return false;
        }

        $url = array_map('trim', $url);
        $url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
        $path = (isset($url['path'])) ? $url['path'] : '';

        if ($path == '')
        {
            $path = '/';
        }

        $path .= ( isset ( $url['query'] ) ) ? "?$url[query]" : '';

        if ( isset ( $url['host'] ) AND $url['host'] != gethostbyname ( $url['host'] ) )
        {
            if ( PHP_VERSION >= 5 )
            {
                $headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
            }
            else
            {
                $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);

                if ( ! $fp )
                {
                    return false;
                }
                fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
                $headers = fread ( $fp, 128 );
                fclose ( $fp );
            }
            $headers = ( is_array ( $headers ) ) ? implode ( "\n", $headers ) : $headers;
            return ( bool ) preg_match ( '#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers );
        }
        return false;
}


Próbuję go oszukać:

$adres=('http://onet');


Kod
if(!is_valid_url($adres))
{
    print('Nie można pobrąć pliku, podany adres URL jest nie poprawny...');
    exit();
}
else
{
    print('Poprawny');
}


Kretyn daje się jednak zrobić w konia i wywala
Cytat
Poprawny


Jakiś pomysł ?
Nie ma takiej domeny, więc nie powinno prawa zwrócić true :/

Ten post edytował ahold 23.06.2009, 14:13:31
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 12:05