validare url

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
una domanda
con filter_var($url, FILTER_VALIDATE_URL) valido l'url proveniente da un form
e sin qui non ci sono problemi.
però filter_var mi valida solo la correttezza formale della stringa
è possibile con php verificare anche l'esistenza del sito corrispondente?
vorrei fare (se possibile), scrivo in php + pseudo codice)
PHP:
<?php
$url=$_POST['url'];
if(!filter_var($ur_2,FILTER_VALIDATE_URL)){//verifica della corretetzza formale
	//messaggio di errore e ritorno al form
}
if(!ESISTE $url){// qui in psedudo codice
	//messaggio di errore e ritorno al form
}
//.....
?>
si riesce o chiedo l'impossibile
 
ciao
se a qualcuno interssa googlando ho trovato questo, che (devo provarlo) sembra funziare.
@ alex: ora do un occhio anche al tuo link
PHP:
<?php
function contolla_url($url){
    $url = @parse_url($url);
    $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'])){
           $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, 4096);
            fclose($fp);
        $headers = (is_array($headers)) ? implode("\n", $headers) : $headers;
        return (bool)preg_match('#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers);
    }
    return false;
}
?>
quindi il mio controllo dopo la verifica formale potrebbe essere

PHP:
<?php
if (contolla_url($url)){
        //messaggio e ritorno al form
}
?>
trovato su
http://www.sastgroup.com/tutorials/verificare-se-un-url-esiste-online

p.s.
se qualcuno ha delle migliorie postate, postate gente...
 
ciao
non avevo notato la domanda
Sei sicuro che ne valga la pena?
generalmente no, ma se dovessi andare a far inserire un link da un mio utente (in una tabella del db) e tale link va ad incidere sulla struttura del mio sito forse penso di sì
faccio un esempio banale
l'utente inserisce http :// www.pnico-pallo.it/pag.htm e se nel mio sito (estraendo dalla tabella) avessi

HTML:
<!-- ..... -->	
<iframe name="news"
	   		src="<?php echo $url;?>"
	   		width="732px"
	   		height="418px"
	   		scrolling="auto"
	   		frameborder="0"
	   		align="top"
	   		marginwidth="0"
	   		marginheight="0"
	   		allowtransparency="true">
</iframe>
<!-- ..... -->
nell i frame avrei il classico errore di pagina non trovata che non è molto bello
 

Discussioni simili