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
 
Start new topic
Odpowiedzi
ahold
post
Post #2





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

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


Witam,

Przepraszam za komentarze, nie tylko ja edytuję kod (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)



Faktycznie, o tę flagę mi chodziło.
Jak ustawię na 2 sekundy, to jak ją zinerpretuje ?

Jak pobierze w 2 sekundy 100% = ok, a jak nie pobierze $data = 0 ?
Czy jak nie pobierze w 2 sekundy, to przerywa, i $data = połowa strony ? [do momentu pobierania] ?





Kompresowanie strony jest nierozsądne, ciągnie procesor, no chyba że prowadzimy stronę typu Wikipedia gdzie 90 % contentu to tekst.

Poza tym zamierzasz przez PHP kompresować, fragmenty tekstu który bedzie dynamicznie pobierany z bazy SQL ?
To było fajne 5 lat temu, kiedy witryny były w HTML.
Teraz witryna to PNG + dynamiczny content
Go to the top of the page
+Quote Post
pyro
post
Post #3





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(ahold @ 24.06.2009, 18:50:07 ) *
Kompresowanie strony jest nierozsądne, ciągnie procesor, no chyba że prowadzimy stronę typu Wikipedia gdzie 90 % contentu to tekst.

Poza tym zamierzasz przez PHP kompresować, fragmenty tekstu który bedzie dynamicznie pobierany z bazy SQL ?
To było fajne 5 lat temu, kiedy witryny były w HTML.
Teraz witryna to PNG + dynamiczny content


Właśnie miałem na myśli sytuacje typu wikipedia. Wtedy kompresowanie poprawia wydajność.

Co do flagi: o ile dobrze pamiętam $content == false gdy potrwa to więcej niż wskazany czas, ale od kiedy ktoś Ci zabronił tego osobiście sprawdzić (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
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: 12.10.2025 - 07:14