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
21.07.2003, 23:52:16
Zainteresuj się funkcją [manual:157a2f4fa7]parse_url[/manual:157a2f4fa7] i posprawdzaj przy jej pomocy.
Omega
22.07.2003, 07:50:44
Albo zastosuj wyrażenia regularne...
[php:1:f88848f96e]<?php
eregi("^(http://)w*.?w.w+.*$", $adres);
?>[/php:1:f88848f96e]
Powinno działać...
GeoS
22.07.2003, 08:32:40
A nie prosciej pingowac podany przez usera adres i jesli jest jakas odpowiedz to uznac za prawidlowy :?:
Mozna tez pobawic sie z whois'em, ...
g0blin
22.07.2003, 10:26:54
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
22.07.2003, 11:11:09
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 ;)
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