Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] poprawnośc adresu www
Forum PHP.pl > Forum > PHP
mdx
zadam pytanie wprost jak zprawdzić poprawność wpisanego adresu strony internetowej, nie chodzi mi tylko o poszątek ale o zawartość tylko poprawnych znaków i rozszezenia domeny szukałem chyba wszędzie ale bezskutecznie sam próbowałem napisac ale nic nie wychodziłowięcpytam was jakoprofesjonalistów jak to zrobić ?
spenalzo
Zainteresuj się funkcją [manual:157a2f4fa7]parse_url[/manual:157a2f4fa7] i posprawdzaj przy jej pomocy.
Omega
Albo zastosuj wyrażenia regularne...

[php:1:f88848f96e]<?php
eregi("^(http://)w*.?w.w+.*$", $adres);
?>[/php:1:f88848f96e]

Powinno działać...
GeoS
A nie prosciej pingowac podany przez usera adres i jesli jest jakas odpowiedz to uznac za prawidlowy :?:

Mozna tez pobawic sie z whois'em, ... aaevil.gif
g0blin
Pingowanie nie za bardzo chyba wchodzi w gre bo na czesci serwerow www sa wyciete odpowiedzi na icmp. Chyba najlepiej sprawdzacczy z danej nazwy otrzymamy ip hosta
wojtek
Kiedys napisalem cos takiego, moze sie komus przyda:

[php:1:51f7d75263]<?php
function sprawdz_url($url) { // SPRAWDZA CZY DANA STRONA ISTNIEJE

if (!eregi("/",$url)) {
$url = $url."/";
}

$adres[0] = substr($url, 0,strpos($url,"/"));
$adres[1] = substr($url, strpos($url,"/"));
$f=@fsockopen($adres[0], "80");
$odp="";
if ($f) {
fputs($f, "HEAD " . $adres[1] . " HTTP/1.0rnrn");
while(!feof($f)) {$odp .= fgets($f,1024); }
fclose($f);
}
if (eregi("HTTP/1.. 200",$odp)) { // je¶li naglowek zawiera 200
return true;
}
else { // nadal blad

$host=str_replace("http://","",$url);
$host=str_replace("www.","",$host);
$host=split("/",$host);

$host=split(".", $host[0]);
$ile=count($host);
$host=$host[$ile-2].".".$host[$ile-1];

if (@checkdnsrr($host, MX)) { // jesli sprawdzil dns'a i jest ok
return true;
}
else { // jesli nadal stronki nie ma
$otworz = @fopen($url, "r");
if ($otworz) {
return true;
}
else {
return false;
}
}
}
}
?>[/php:1:51f7d75263]

Najpierw sprawdza odpowiedz serwera przez fsockopen (tutaj chyba wykorzystalem fragment z webreportera), potem sprawdza wpis w DNSie (jesli wynik fsockopen byl negatywny), na koniec (jesli nie bylo wpisu w DNSie) probuje otworzyc strone przez fopen (dalem na koniec, bo to troche moze potrwac). To bylo pisane jakies 8 miesiecy temu, od tego czasu z tego nie korzystalem takze nie wiem czy ciagle dziala ;)
mdx
wow dzięki, ale i tak pewnie zostanę przy sprawdzaniu przez eregi() i wyrażenia regularne tak będzie najszybciej i dla mojego celu wystrczy
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.