filter_var url

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
usando la comode funzione filter_var ho provato a farmi una funzioncina per sanificare e validare un url.
ma mi sono venuti alcuni dubbi

PHP:
<?php
function verifica_url($url){
	$url=filter_var($url, FILTER_SANITIZE_URL);//sanifico (ma lascia un sacco di caratteri che secondo me non dovrebbero esserci)
	//$url=filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);//sembrerebbe filter_flag inutile
	$url=filter_var($url, FILTER_VALIDATE_URL);//e verifico
	return $url;
}//function

//***TEST DI PROVA********************************************************************
//$stringa=verifica_url("http://www.pinco_pallo.it");//è valido OK
//$stringa=verifica_url("http://pinco_pallo.it");//è valido OK
//$stringa=verifica_url("www.pinco_pallo.it");//NON è valido
//$stringa=verifica_url("pinco_pallo.it");// NON è valido
//$stringa=verifica_url("pinco_pallo.");//NON è valido
//$stringa=verifica_url("pinco_pallo");//NON è valido
//$stringa=verifica_url("http://sbrodolacchio");//???è valido, ma in teoria non dovrebbe esserlo
//$stringa=verifica_url("http://.palle");//???è valido, ma...
$stringa=verifica_url("http://www.pin**co_pallo.it");//???è valido, ma...
if($stringa=== FALSE){
	echo "<br>non è un url valido";
}else{
	echo "<br> $stringa è url valido";
}
?>
mi sembra che il sanitize/validate accetti qualsiasi porcheria, basta che abbia davanti http://
qualcuno ha delle indicazioni migliori?

p.s.
non rimandatemi a http://it.php.net/manual/en/function.filter-var.php perchè è da proprio lì che provengo
 
Il filtro FILTER_SANITIZE_URL rimuove tutti i caratteri tranne lettere, numeri, e i seguenti: $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=. E mi sembra che effettivamente funzioni bene nel tuo caso. Se vuoi qualcosa di più rigido dovrai usare le espressioni regolari.
 
ciao
su quello hai ragione (non sapevo che in un url ci potessero essere tutti quei caratteri, salvo ?, = e & per le query), ma però mi sembra che un url del tipo
http://.palle
dovrebbe dare errore, a me non sembra un url non valido anche se ha http:// davanti
ma può darsi che sbagli
 

Discussioni simili