Page 1 sur 1

Soumettre un site web dans un formulaire

Posté : 01 juil. 2016, 15:01
par blinz
Salut à tous.
J'ai un champ qui me pose quelque problème en fait je souhaite permettre à l'utilisateur de poster son site web.
Cependant son site peut etre avec des www. ou sans...

Actuellement j'ai fait ceci:
<label>Site web</label>
          <input data-toggle="popover" data-content="Exemple: (http://www.votresite.fr)" class="form-control" type="text" name="website" value="<?php echo !empty($_POST['website']) ? $_POST['website'] : NULL;?>" />
          <?php echo !empty($erreurs['website']) ? '<div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-triangle"></i>'.$erreurs['website'].'</div>' : NULL; ?>
Coté vérification:
//Verification de la saise de l'adressee url
    if($_POST['website'] != "" && !preg_match("#^http://[w-]+[w.-]+.[a-zA-Z]{2,6}#i",$_POST['website'])){
	$erreurs['website'] = "Veuillez verifier la saisie de votre adresse url";
	}
Donc en fait je cherche a accepté peut importe les www
Merci à vous


Est ce que ceci semble correct ?
// Vérifie si la chaîne ressemble à une URL
if (filter_var($_POST['website'], FILTER_VALIDATE_URL)) {
{
    $erreurs['website'] = "Veuillez verifier la saisie de votre adresse url";
}

Re: Soumettre un site web dans un formulaire

Posté : 01 juil. 2016, 15:16
par blinz
Je viens de tester ça et ça l'air de marcher, c'est bon pour vous ?
if(filter_var($_POST['website'], FILTER_VALIDATE_URL)){
    }else{
        $erreurs['website'] = "Veuillez verifier la saisie de votre adresse url";
        // Si y a une erreur on l'ajouter au tableau;
    }

Re: Soumettre un site web dans un formulaire

Posté : 01 juil. 2016, 15:33
par Ryle
Bonjour,

filter_var() te permet de valider le format de la variable que tu lui passes en paramètre. Ton usage est donc bon dans la mesure ou la fonction retournera vrai dès lors que la variable correspondra à une URL valide.

Attention cependant, une url valide est composée d'un protocole (quel qu'il soit), d'un domaine (incluant le port et éventuellement sous domaine, donc ça gère bien tes www), d'un chemin éventuel et d'une requête éventuelle. Une url de type FTP:, Telnet:, mailto: ... est donc également considérée comme valide.

Après si tu tiens à partir sur une expression régulière, la plus efficace semble être la suivante selon ce site https://mathiasbynens.be/demo/url-regex
#^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$#iuS
8-|