8722 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je cherche à tester si l'url saisie par l'utilisateur dans le champ d'un formulaire est correcte.
Alors j'ai trouvé une multitude de réponses (aucune ne fonctionne correctement...) à base de FILTER_VALIDATE_URL ou d'expressions régulières.

Comment faire pour vérifier que le champ URL est par exemple de la forme :

http://www.alsacreations.com
ou
www.alsacreations.com
ou
alsacreations.com

en fait vérifier qu'il y ait au minimum le nom de domaine + l'extension

Merci pour vos réponses.
Modifié par pareto (05 Jun 2013 - 12:53)
Bonjour pareto,

Si tu veux tester que ton champ contient l'une de ces chaînes de caractères, passe par la fonction strpos de php : elle retourne false si la chaîne n'est pas trouver (il faut utiliser la comparaison avec le type : " === " dans ton if)
Modifié par toukilbv (05 Jun 2013 - 12:03)
jb_gfx a écrit :
parse_url()

a écrit :
Cette fonction n'est pas faite pour valider l'URL fournie, elle ne fait que la découper en parties listées ci-dessous. Les URL partielles sont également acceptées, la fonction parse_url() fera de son mieux pour les analyser correctement.


Utilise le filtre de validation de php : FILTER_VALIDATE_URL
benj tu as a raison, parse_url() ne reconnais pas les ndd seuls, mais FILTER_VALIDATE ne les reconnais pas non plus : il ne reconnait que la première URL donnée par Pareto.


$urls = array(
  'http://www.alsacreations.com',
  'www.alsacreations.com',
  'alsacreations.com',
  'boulbiboulga',
);

$filter_var = 0;

foreach ($urls as $url) {
	if (filter_var($url, FILTER_VALIDATE_URL)) {
		$filter_var++;
	}
}

echo $filter_var; // affiche 1


Je pense qu'il faudra passer par des expressions rationnelles pour ce cas.
Modifié par jb_gfx (05 Jun 2013 - 20:45)
Oui, il faut le http:// devant pour que l'url soit valide.
Mais ce n'est pas trop compliqué de le rajouter s'il n'est pas présent. De toute façon, s'il doit faire un lien avec, il faudra savoir si le http (ou https...) est présent.

Il faut faire attention avec les validation des url et ne pas refuser n'importe quoi. Genre une sous domaine, des domaines avec des chiffres...
Modifié par benj (05 Jun 2013 - 21:03)