[PHP] drapeux avec filter_var()

Bonjour,

J'aimerais avoir plus d'informations sur les drapeaux de filter_var() avec FILTER_VALIDATE_URL.

Sur la doc PHP il en parle pas : https://www.php.net/manual/fr/function.filter-var.php

Pouvez vous donc me dire la signification de c'est drapeaux après FILTER_VALIDATE_URL :

FILTER_FLAG_SCHEME_REQUIRED
FILTER_FLAG_HOST_REQUIRED
FILTER_FLAG_PATH_REQUIRED
FILTER_FLAG_QUERY_REQUIRED

Voila mon code actuel :

<?php
if(!filter_var($_POST['url'], FILTER_VALIDATE_URL)) {
echo 'PAS OK';
}
?>


Merci d'avance.

9 réponses

  1. Salut.

    Voilà toutes les constantes de cette extension :
    https://www.php.net/manual/fr/filter.constants.php

    "HOST" : requis le nom de domaine dans la chaine
    "PATH" : requis un chemin dans l'URL (après le domaine)
    "QUERY" : requis des données GET ("?var=val&var2=val2&...")

    Tu peux les combiner avec le signe « | » entre ces différentes constantes.
    1. D'accord merci pour la page.

      FILTER_FLAG_SCHEME_REQUIRED => Schéma requis. = ?
      FILTER_FLAG_HOST_REQUIRED => Hôte requis. = ?
      FILTER_FLAG_PATH_REQUIRED => Chemin requis. = http://site.com/dossier/
      FILTER_FLAG_QUERY_REQUIRED => Requête requise. = ?

      Je connais pas la signification, serrait t-il possible d'avoir des exemple ?
      Et si on ne met pas de drapeau il se passe quoi ?

      Merci d'avance.
      1. Ah oui exact, j'ai regardé trop vite, désolé.

        Pour "HOST" c'est que le http:// est facultatif ?
        Sinon "SCHEME" c'est quoi ?
        Puis si on met rien, il ce passe quoi ?
        1. "Des options sont éventuellement utilisées par la validation et le nettoyage, pour adapter leur comportement à des besoins spécifiques. Par exemple, avec l'option FILTER_FLAG_SCHEME_REQUIRED pour filter une URL, il faut indiquer le protocole utilisée (tel que http://)."

          On prend l'exemple de une page fictive de ccm :

          http:// www.commentcamarche.net/forum/afficher-une-page.php?couleur=bleu&couleur2=rouge


          "SHEME"
          c'est le http:// (le protocole, ca peut aussi être https:// ou ftp://)
          "HOST" c'est le www.commentcamarche.net (le nom de domaine, juste la base avant les slash /)
          "PATH" c'est forum/afficher-une-page.php (la partit après le premier slash ( / ) jusqu'au point d'interrogationetsi il y en a pas c'est jusqu'à la fin)
          "QUERY" c'est couleur=bleu&couleur2=rouge (après le point d'enterrogation)
          1. D'accord merci :)

            Et si on met rien (la fonction sans drapeau) que ce passe t-il ?
            1. Ça permet de dire à MySQL d'ignorer la gestion des droits. Même un utilisateur ultra-limité peut faire ce qu'il veut.

              N'oublie pas de redémarrer le serveur après ;)
              1. Chaque utilisateur peut faire certaines choses et pas d'autres.
                root est celui qui peut tout faire.
                Avec cette option, tous les utilisateurs peuvent tout faire, y compris créer d'autres utilisateurs.
              2. Je pense que tu t'es trompé de topic, la on parle pas de MySQL, mais des drapeaux de filter_var().
              3. Ouais, désolé, j'ai encore dû vouloir scroller avec le curseur sur le barre d'onglets ;)
              4. xD, t'es pas le seul à qui ça arrive t'inquiète pas.
            2. Je pense pas que ce sois ça car j'ai fait un test et cela ne correspond pas.