Soumettre un site web dans un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Soumettre un site web dans un formulaire

Re: Soumettre un site web dans un formulaire

par Ryle » 01 juil. 2016, 15:33

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-|

Re: Soumettre un site web dans un formulaire

par blinz » 01 juil. 2016, 15:16

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;
    }

Soumettre un site web dans un formulaire

par blinz » 01 juil. 2016, 15:01

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";
}