Browse Source

Ajout de la vérification d'URL

svn/attic/verifier/117540
yffic@lefourneau.com 12 years ago
parent
commit
f559d5dd5e
  1. 1
      .gitattributes
  2. 155
      lang/verifier_fr.php
  3. 2
      plugin.xml
  4. 419
      test/verifier.html
  5. 159
      verifier/url.php
  6. 33
      verifier/url.yaml

1
.gitattributes vendored

@ -29,4 +29,5 @@ verifier/taille.yaml -text
verifier/telephone.php -text
verifier/telephone.yaml -text
verifier/url.php -text
verifier/url.yaml -text
/verifier_options.php -text

155
lang/verifier_fr.php

@ -1,70 +1,85 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/verifier/lang/
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// E
'erreur_code_postal' => 'Ce code postal est incorrect.',
'erreur_date' => 'La date n\'est pas valide.',
'erreur_date_format' => 'Le format de la date n\'est pas accept&eacute;.',
'erreur_decimal' => 'La valeur doit &ecirc;tre un nombre d&eacute;cimal.',
'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres apr&egrave;s la virgule.',
'erreur_email' => 'L\'adresse de courriel <em>@email@</em> n\'a pas un format valide.',
'erreur_email_nondispo' => 'L\'adresse de courriel <em>@email@</em> est d&eacute;j&agrave; utilis&eacute;e.',
'erreur_entier' => 'La valeur doit &ecirc;tre un entier.',
'erreur_entier_entre' => 'La valeur doit &ecirc;tre comprise entre @min@ et @max@.',
'erreur_entier_max' => 'La valeur doit &ecirc;tre inf&eacute;rieure &agrave; @max@.',
'erreur_entier_min' => 'La valeur doit &ecirc;tre sup&eacute;rieure &agrave; @min@.',
'erreur_id_document' => 'Cet identifiant de document n\'est pas valide.',
'erreur_numerique' => 'Le format du nombre n\'est pas valide.',
'erreur_regex' => 'Le format de la cha&icirc;ne n\'est pas valide.',
'erreur_siren' => 'Le num&eacute;ro de SIREN n\'est pas valide.',
'erreur_siret' => 'Le num&eacute;ro de SIRET n\'est pas valide.',
'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caract&egrave;res.',
'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caract&egrave;res.',
'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caract&egrave;res.',
'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caract&egrave;res.',
'erreur_telephone' => 'Le numéro n\'est pas valide.',
'erreur_url' => 'L\'adresse n\\\'est pas valide.',
// O
'option_decimal_nb_decimales_label' => 'Nombre de d&eacute;cimales apr&egrave;s la virgule',
'option_email_disponible_label' => 'Adresse disponible',
'option_email_disponible_label_case' => 'V&eacute;rifier que l\'adresse n\'est pas d&eacute;j&agrave; utilis&eacute;e par un utilisateur',
'option_email_mode_5322' => 'V&eacute;rification la plus conforme aux standards disponibles',
'option_email_mode_label' => 'Mode de v&eacute;rification des courriels',
'option_email_mode_normal' => 'V&eacute;rification normale de SPIP',
'option_email_mode_strict' => 'V&eacute;rification moins permissive',
'option_entier_max_label' => 'Valeur maximum',
'option_entier_min_label' => 'Valeur minimum',
'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant',
'option_siren_siret_mode_label' => 'Que voulez-vous vérifier ?',
'option_siren_siret_mode_siren' => 'le SIREN',
'option_siren_siret_mode_siret' => 'le SIRET',
'option_taille_max_label' => 'Taille maximum',
'option_taille_min_label' => 'Taille minimum',
// T
'type_date' => 'Date',
'type_date_description' => 'V&eacute;rifie que la valeur est une date au format JJ/MM/AAAA. Le s&eacute;parateur est libre (&quot;.&quot;, &quot;/&quot;, etc).',
'type_decimal' => 'Nombre d&eacute;cimal',
'type_decimal_description' => 'V&eacute;rifie que la valeur est un nombre d&eacute;cimal, avec la possibilit&eacute; de restreindre entre deux valeurs et de pr&eacute;ciser le nombre de d&eacute;cimales apr&egrave;s la virgule.',
'type_email' => 'Adresse de courriel',
'type_email_description' => 'V&eacute;rifie que l\'adresse de courriel a un format correct.',
'type_email_disponible' => 'Disponibilit&eacute; d\'une adresse de courriel',
'type_email_disponible_description' => 'V&eacute;rifie que l\'adresse de courriel n\'est pas d&eacute;j&agrave; utilis&eacute; par un autre utilisateur du syst&egrave;me.',
'type_entier' => 'Nombre entier',
'type_entier_description' => 'V&eacute;rifie que la valeur est un entier, avec la possibilit&eacute; de restreindre entre deux valeurs.',
'type_regex' => 'Expression r&eacute;guli&egrave;re',
'type_regex_description' => 'V&eacute;rifie que la valeur correspond au masque demand&eacute;. Pour l\'utilisation des masques, reportez-vous à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.',
'type_siren_siret' => 'SIREN ou SIRET',
'type_siren_siret_description' => 'V&eacute;rifie que la valeur est un num&eacute;ro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Syst&egrave;me d&rsquo;Identification du R&eacute;pertoire des ENtreprises</a> fran&ccedil;ais.',
'type_taille' => 'Taille',
'type_taille_description' => 'V&eacute;rifie que la taille de la valeur correspond au minimum et/ou au maximum demand&eacute;.',
'type_telephone' => 'Num&eacute;ro de t&eacute;l&eacute;phone',
'type_telephone_description' => 'V&eacute;rifie que le num&eacute;ro de t&eacute;l&eacute;phone correspond &agrave; un sch&eacute;ma reconnu.'
);
?>
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/verifier/lang/
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// E
'erreur_code_postal' => 'Ce code postal est incorrect.',
'erreur_date' => 'La date n\'est pas valide.',
'erreur_date_format' => 'Le format de la date n\'est pas accept&eacute;.',
'erreur_decimal' => 'La valeur doit &ecirc;tre un nombre d&eacute;cimal.',
'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres apr&egrave;s la virgule.',
'erreur_email' => 'L\'adresse de courriel <em>@email@</em> n\'a pas un format valide.',
'erreur_email_nondispo' => 'L\'adresse de courriel <em>@email@</em> est d&eacute;j&agrave; utilis&eacute;e.',
'erreur_entier' => 'La valeur doit &ecirc;tre un entier.',
'erreur_entier_entre' => 'La valeur doit &ecirc;tre comprise entre @min@ et @max@.',
'erreur_entier_max' => 'La valeur doit &ecirc;tre inf&eacute;rieure &agrave; @max@.',
'erreur_entier_min' => 'La valeur doit &ecirc;tre sup&eacute;rieure &agrave; @min@.',
'erreur_id_document' => 'Cet identifiant de document n\'est pas valide.',
'erreur_numerique' => 'Le format du nombre n\'est pas valide.',
'erreur_regex' => 'Le format de la cha&icirc;ne n\'est pas valide.',
'erreur_siren' => 'Le num&eacute;ro de SIREN n\'est pas valide.',
'erreur_siret' => 'Le num&eacute;ro de SIRET n\'est pas valide.',
'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caract&egrave;res.',
'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caract&egrave;res.',
'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caract&egrave;res.',
'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caract&egrave;res.',
'erreur_telephone' => 'Le numéro n\'est pas valide.',
'erreur_url' => 'L\'adresse <em>@url@</em> n\'est pas valide.',
'erreur_url_protocole' => 'L\'adresse saisie <em>(@url@)</em> doit commencer par @protocole@',
'erreur_url_protocole_exact' => 'L\'adresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple)',
// O
'option_decimal_nb_decimales_label' => 'Nombre de d&eacute;cimales apr&egrave;s la virgule',
'option_email_disponible_label' => 'Adresse disponible',
'option_email_disponible_label_case' => 'V&eacute;rifier que l\'adresse n\'est pas d&eacute;j&agrave; utilis&eacute;e par un utilisateur',
'option_email_mode_5322' => 'V&eacute;rification la plus conforme aux standards disponibles',
'option_email_mode_label' => 'Mode de v&eacute;rification des courriels',
'option_email_mode_normal' => 'V&eacute;rification normale de SPIP',
'option_email_mode_strict' => 'V&eacute;rification moins permissive',
'option_entier_max_label' => 'Valeur maximum',
'option_entier_min_label' => 'Valeur minimum',
'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant',
'option_siren_siret_mode_label' => 'Que voulez-vous vérifier ?',
'option_siren_siret_mode_siren' => 'le SIREN',
'option_siren_siret_mode_siret' => 'le SIRET',
'option_taille_max_label' => 'Taille maximum',
'option_taille_min_label' => 'Taille minimum',
'option_url_mode_complet' => 'V&eacute;rification compl&egrave;te de l\'url',
'option_url_mode_label' => 'Mode de v&eacute;rification des urls',
'option_url_mode_php_filter' => 'V&eacute;rification compl&egrave;te de l\'url via le filtre FILTER_VALIDATE_URL de php',
'option_url_mode_protocole_seul' => 'V&eacute;rification uniquement de la présence d\'un protocole',
'option_url_protocole_label' => 'Nom du protocole &agrave; v&eacute;rifier',
'option_url_type_protocole_label' => 'Type de protocole &agrave; v&eacute;rifier',
'option_url_type_protocole_tous' => 'Tous protocoles accept&eacute;s',
'option_url_type_protocole_web' => 'Protocoles web : http ou https',
'option_url_type_protocole_mail' => 'Protocoles mail : imap, pop3 ou smtp',
'option_url_type_protocole_ftp' => 'Protocoles ftp : ftp ou sftp',
'option_url_type_protocole_exact' => 'Saisir un protocole ci-dessous&nbsp;:',
// T
'type_date' => 'Date',
'type_date_description' => 'V&eacute;rifie que la valeur est une date au format JJ/MM/AAAA. Le s&eacute;parateur est libre (&quot;.&quot;, &quot;/&quot;, etc).',
'type_decimal' => 'Nombre d&eacute;cimal',
'type_decimal_description' => 'V&eacute;rifie que la valeur est un nombre d&eacute;cimal, avec la possibilit&eacute; de restreindre entre deux valeurs et de pr&eacute;ciser le nombre de d&eacute;cimales apr&egrave;s la virgule.',
'type_email' => 'Adresse de courriel',
'type_email_description' => 'V&eacute;rifie que l\'adresse de courriel a un format correct.',
'type_email_disponible' => 'Disponibilit&eacute; d\'une adresse de courriel',
'type_email_disponible_description' => 'V&eacute;rifie que l\'adresse de courriel n\'est pas d&eacute;j&agrave; utilis&eacute; par un autre utilisateur du syst&egrave;me.',
'type_entier' => 'Nombre entier',
'type_entier_description' => 'V&eacute;rifie que la valeur est un entier, avec la possibilit&eacute; de restreindre entre deux valeurs.',
'type_regex' => 'Expression r&eacute;guli&egrave;re',
'type_regex_description' => 'V&eacute;rifie que la valeur correspond au masque demand&eacute;. Pour l\'utilisation des masques, reportez-vous à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.',
'type_siren_siret' => 'SIREN ou SIRET',
'type_siren_siret_description' => 'V&eacute;rifie que la valeur est un num&eacute;ro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Syst&egrave;me d&rsquo;Identification du R&eacute;pertoire des ENtreprises</a> fran&ccedil;ais.',
'type_taille' => 'Taille',
'type_taille_description' => 'V&eacute;rifie que la taille de la valeur correspond au minimum et/ou au maximum demand&eacute;.',
'type_telephone' => 'Num&eacute;ro de t&eacute;l&eacute;phone',
'type_telephone_description' => 'V&eacute;rifie que le num&eacute;ro de t&eacute;l&eacute;phone correspond &agrave; un sch&eacute;ma reconnu.',
'type_url' => 'URL',
'type_url_description' => 'V&eacute;rifie que l\'url correspond &agrave; un sch&eacute;ma reconnu.'
);
?>

2
plugin.xml

@ -8,7 +8,7 @@
<auteur>RastaPopoulos</auteur>
<icon>images/verifier-128.png</icon>
<licence>GPL v3</licence>
<version>0.1.5</version>
<version>0.1.6</version>
<etat>dev</etat>
<description>
<multi>

419
test/verifier.html

@ -1,159 +1,260 @@
<html>
<body>
<h1>Test de vérification de valeurs</h1>
<h2>Vérifions qu'un mot est un mot :</h2>
<pre>
<?php
$verifier = charger_fonction('verifier','inc');
$un_mot = "poli4_EFSdq89";
$un_autre_mot = "aqe edioj o^";
$modele = "/^[\w]+$/";
echo "Modèle => $modele\n\n";
echo "'$un_mot' ?";
var_dump($verifier($un_mot, 'regex', array('modele'=>$modele)));
echo "'$un_autre_mot' ?";
var_dump($verifier($un_autre_mot, 'regex', array('modele'=>$modele)));
?>
</pre>
<h2>Vérifions des entiers :</h2>
<pre>
<?php
$un_entier = 568;
$un_autre_entier = "-89";
echo "$un_entier entre 0 et 1000 ?";
var_dump($verifier($un_entier, 'entier', array('min'=>0, 'max'=>1000)));
echo "$un_entier < 100 ?";
var_dump($verifier($un_entier, 'entier', array('max'=>100)));
echo "$un_autre_entier est positif ?";
var_dump($verifier($un_autre_entier, 'entier', array('min'=>0)));
echo "$un_autre_entier entre -100 et -50 ?";
var_dump($verifier($un_autre_entier, 'entier', array('min'=>-100, 'max'=>-50)));
?>
</pre>
<h2>V&eacute;rifions une taille d'une cha&icirc;ne :</h2>
<pre>
<?php
$une_chaine = "123456";
$un_autre_chaine = "abc";
echo "$une_chaine de 1 à 3 caractères ?";
var_dump($verifier($une_chaine, 'taille', array('min'=>1, 'max'=>3)));
echo "$une_chaine 5 caractères max ?";
var_dump($verifier($une_chaine, 'taille', array('max'=>5)));
echo "$une_chaine 4 caractères mini ?";
var_dump($verifier($une_chaine, 'taille', array('min'=>4)));
echo "$un_autre_chaine de 1 à 3 caractères ?";
var_dump($verifier($un_autre_chaine, 'taille', array('min'=>1, 'max'=>3)));
echo "$un_autre_chaine 5 caractères max ?";
var_dump($verifier($un_autre_chaine, 'taille', array('max'=>5)));
echo "$un_autre_chaine 4 caractères mini ?";
var_dump($verifier($un_autre_chaine, 'taille', array('min'=>4)));
echo "$une_chaine de 3 caractères ?";
var_dump($verifier($une_chaine, 'taille', array('egal'=>3)));
echo "$un_autre_chaine de 3 caractères ?";
var_dump($verifier($un_autre_chaine, 'taille', array('egal'=>3)));
?>
</pre>
<h2>Vérifions des emails :</h2>
<pre>
<?php
$email = "test@test.fr";
$email2 = "test@b";
$email3 = "test";
echo "Valide SPIP : $email ?";
var_dump($verifier($email, 'email'));
echo "Valide SPIP : $email2 ?";
var_dump($verifier($email2, 'email'));
echo "Valide SPIP : $email3 ?";
var_dump($verifier($email3, 'email'));
echo "Valide Strict : $email ?";
var_dump($verifier($email, 'email',array('mode'=>'strict')));
echo "Valide Strict : $email2 ?";
var_dump($verifier($email2, 'email',array('mode'=>'strict')));
echo "Valide Strict : $email3 ?";
var_dump($verifier($email3, 'email',array('mode'=>'strict')));
?>
</pre>
<h2>Vérifions des téléphones :</h2>
<pre>
<?php
$telephone = "01.01/01-02 03";
$telephone2 = "090909";
$telephone3 = "10 01 01 01 01";
echo "Téléphone : $telephone ?";
var_dump($verifier($telephone, 'telephone_fr'));
echo "Téléphone : $telephone2 ?";
var_dump($verifier($telephone2, 'telephone_fr'));
echo "Téléphone : $telephone3 ?";
var_dump($verifier($telephone3, 'telephone_fr'));
?>
</pre>
<h2>Vérifions des SIREN/SIRET :</h2>
<pre>
<?php
$siren_valide = "321227852";
$siren_non_valide = "321227822";
$siret_valide = "32122785200019";
$siret_non_valide = "32122785200033";
echo "SIREN : $siren_valide ?";
var_dump($verifier($siren_valide, 'siren_siret'));
echo "SIREN : $siren_non_valide ?";
var_dump($verifier($siren_non_valide, 'siren_siret'));
echo "SIRET : $siret_valide ?";
var_dump($verifier($siret_valide, 'siren_siret',array('mode'=>'siret')));
echo "SIRET : $siret_non_valide ?";
var_dump($verifier($siret_non_valide, 'siren_siret',array('mode'=>'siret')));
?>
</pre>
<h2>Vérifions des DATES :</h2>
<pre>
<?php
$date_valide = "30-01-2009";
$date_non_valide = "321227822";
$date_non_valide2 = "29-02-2011";
$date_valide2 = "29-02-2012";
echo "Date JJ/MM/AAAA (avec séparateur /.-) : $date_valide ?";
var_dump($verifier($date_valide, 'date'));
echo "Date JJ/MM/AAAA : $date_non_valide ?";
var_dump($verifier($date_non_valide, 'date'));
echo "Date JJ/MM/AAAA : $date_non_valide2 ?";
var_dump($verifier($date_non_valide2, 'date'));
echo "Date JJ/MM/AAAA : $date_valide2 ?";
var_dump($verifier($date_valide2, 'date'));
?>
</pre>
</body>
</html>
<html>
<body>
<h1>Test de vérification de valeurs</h1>
<h2>Vérifions qu'un mot est un mot :</h2>
<pre>
<?php
$verifier = charger_fonction('verifier','inc');
$un_mot = "poli4_EFSdq89";
$un_autre_mot = "aqe edioj o^";
$modele = "/^[\w]+$/";
echo "Modèle => $modele\n\n";
echo "'$un_mot' ?";
var_dump($verifier($un_mot, 'regex', array('modele'=>$modele)));
echo "'$un_autre_mot' ?";
var_dump($verifier($un_autre_mot, 'regex', array('modele'=>$modele)));
?>
</pre>
<h2>Vérifions des entiers :</h2>
<pre>
<?php
$un_entier = 568;
$un_autre_entier = "-89";
echo "$un_entier entre 0 et 1000 ?";
var_dump($verifier($un_entier, 'entier', array('min'=>0, 'max'=>1000)));
echo "$un_entier < 100 ?";
var_dump($verifier($un_entier, 'entier', array('max'=>100)));
echo "$un_autre_entier est positif ?";
var_dump($verifier($un_autre_entier, 'entier', array('min'=>0)));
echo "$un_autre_entier entre -100 et -50 ?";
var_dump($verifier($un_autre_entier, 'entier', array('min'=>-100, 'max'=>-50)));
?>
</pre>
<h2>V&eacute;rifions une taille d'une cha&icirc;ne :</h2>
<pre>
<?php
$une_chaine = "123456";
$un_autre_chaine = "abc";
echo "$une_chaine de 1 à 3 caractères ?";
var_dump($verifier($une_chaine, 'taille', array('min'=>1, 'max'=>3)));
echo "$une_chaine 5 caractères max ?";
var_dump($verifier($une_chaine, 'taille', array('max'=>5)));
echo "$une_chaine 4 caractères mini ?";
var_dump($verifier($une_chaine, 'taille', array('min'=>4)));
echo "$un_autre_chaine de 1 à 3 caractères ?";
var_dump($verifier($un_autre_chaine, 'taille', array('min'=>1, 'max'=>3)));
echo "$un_autre_chaine 5 caractères max ?";
var_dump($verifier($un_autre_chaine, 'taille', array('max'=>5)));
echo "$un_autre_chaine 4 caractères mini ?";
var_dump($verifier($un_autre_chaine, 'taille', array('min'=>4)));
echo "$une_chaine de 3 caractères ?";
var_dump($verifier($une_chaine, 'taille', array('egal'=>3)));
echo "$un_autre_chaine de 3 caractères ?";
var_dump($verifier($un_autre_chaine, 'taille', array('egal'=>3)));
?>
</pre>
<h2>Vérifions des emails :</h2>
<pre>
<?php
$email = "test@test.fr";
$email2 = "test@b";
$email3 = "test";
echo "Valide SPIP : $email ?";
var_dump($verifier($email, 'email'));
echo "Valide SPIP : $email2 ?";
var_dump($verifier($email2, 'email'));
echo "Valide SPIP : $email3 ?";
var_dump($verifier($email3, 'email'));
echo "Valide Strict : $email ?";
var_dump($verifier($email, 'email',array('mode'=>'strict')));
echo "Valide Strict : $email2 ?";
var_dump($verifier($email2, 'email',array('mode'=>'strict')));
echo "Valide Strict : $email3 ?";
var_dump($verifier($email3, 'email',array('mode'=>'strict')));
?>
</pre>
<h2>Vérifions des téléphones :</h2>
<pre>
<?php
$telephone = "01.01/01-02 03";
$telephone2 = "090909";
$telephone3 = "10 01 01 01 01";
echo "Téléphone : $telephone ?";
var_dump($verifier($telephone, 'telephone_fr'));
echo "Téléphone : $telephone2 ?";
var_dump($verifier($telephone2, 'telephone_fr'));
echo "Téléphone : $telephone3 ?";
var_dump($verifier($telephone3, 'telephone_fr'));
?>
</pre>
<h2>Vérifions des SIREN/SIRET :</h2>
<pre>
<?php
$siren_valide = "321227852";
$siren_non_valide = "321227822";
$siret_valide = "32122785200019";
$siret_non_valide = "32122785200033";
echo "SIREN : $siren_valide ?";
var_dump($verifier($siren_valide, 'siren_siret'));
echo "SIREN : $siren_non_valide ?";
var_dump($verifier($siren_non_valide, 'siren_siret'));
echo "SIRET : $siret_valide ?";
var_dump($verifier($siret_valide, 'siren_siret',array('mode'=>'siret')));
echo "SIRET : $siret_non_valide ?";
var_dump($verifier($siret_non_valide, 'siren_siret',array('mode'=>'siret')));
?>
</pre>
<h2>Vérifions des DATES :</h2>
<pre>
<?php
$date_valide = "30-01-2009";
$date_non_valide = "321227822";
$date_non_valide2 = "29-02-2011";
$date_valide2 = "29-02-2012";
echo "Date JJ/MM/AAAA (avec séparateur /.-) : $date_valide ?";
var_dump($verifier($date_valide, 'date'));
echo "Date JJ/MM/AAAA : $date_non_valide ?";
var_dump($verifier($date_non_valide, 'date'));
echo "Date JJ/MM/AAAA : $date_non_valide2 ?";
var_dump($verifier($date_non_valide2, 'date'));
echo "Date JJ/MM/AAAA : $date_valide2 ?";
var_dump($verifier($date_valide2, 'date'));
?>
</pre>
<h2>Vérifions des URL :</h2>
<pre>
<?php
// Bon c'est pas terrible tout ce code... Faut revoir ca avec le plugin test builder
$url_web_valide1 = "Http://www.domaine.tld";
$url_web_valide2 = "https://www.Domaine.tld";
$url_ftp_valide = "sftp://www.domaine.tld";
$url_mail_valide = "pop3://www.domaine.tld";
$url_exact_valide = "ssh://www.domaine.tld";
$url_tous_valide = "rtsp://www.domaine.tld";
echo "protocole_seul : url_web_valide1 : $url_web_valide1 ?";
var_dump($verifier($url_web_valide1, 'url', array('mode'=>'protocole_seul','type_protocole'=>'web')));
echo "protocole_seul : url_web_valide2 : $url_web_valide2 ?";
var_dump($verifier($url_web_valide2, 'url', array('mode'=>'protocole_seul','type_protocole'=>'web')));
echo "protocole_seul : url_ftp_valide : $url_ftp_valide ?";
var_dump($verifier($url_ftp_valide, 'url', array('mode'=>'protocole_seul','type_protocole'=>'ftp')));
echo "protocole_seul : url_mail_valide : $url_mail_valide ?";
var_dump($verifier($url_mail_valide, 'url', array('mode'=>'protocole_seul','type_protocole'=>'mail')));
echo "protocole_seul : url_exact_valide : $url_exact_valide ?";
var_dump($verifier($url_exact_valide, 'url', array('mode'=>'protocole_seul','type_protocole'=>'exact','protocole'=>'ssh')));
echo "protocole_seul : url_tous_valide : $url_tous_valide ?";
var_dump($verifier($url_tous_valide, 'url', array('mode'=>'protocole_seul','type_protocole'=>'tous')));
$url_web_invalide1 = "htpp://www.domaine.tld";
$url_web_invalide2 = "http:/www.domaine.tld";
$url_web_invalide3 = "ftp://www.domaine.tld";
echo "protocole_seul : url_web_invalide1 : $url_web_invalide1 ?";
var_dump($verifier($url_web_invalide1, 'url', array('mode'=>'protocole_seul','type_protocole'=>'web')));
echo "protocole_seul : url_web_invalide2 : $url_web_invalide2 ?";
var_dump($verifier($url_web_invalide2, 'url', array('mode'=>'protocole_seul','type_protocole'=>'web')));
echo "protocole_seul : url_web_invalide3 : $url_web_invalide3 ?";
var_dump($verifier($url_web_invalide3, 'url', array('mode'=>'protocole_seul','type_protocole'=>'web')));
$url_web_valide1 = "http://www.domaine.co.tld";
$url_web_valide2 = "http://www.domaine.tld/repertoire";
$url_web_valide3 = "http://www.DOMAINE.tld/repertoire";
$url_web_valide4 = "http://www.domaine.tld/fichier%20.html";
$url_web_valide5 = "http://www.domaine.tld/fichier.html#ancre";
$url_web_valide6 = "http://www.domaine.tld/spip.php?page=test/verifier&toto=1";
$url_web_valide7 = "http://www.domaine.tld/Presentation,432.html";
$url_web_valide8 = "http://toto:t8_&$!@192.168.0.1:8000";
$url_web_invalide1 = "http://www.domaïne.tld";
$url_web_invalide2 = "http://www.domaine.tld\toto";
$url_web_invalide3 = "http://www.domaine.tld/toto titi";
echo "complet : url_web_valide1 : $url_web_valide1 ?";
var_dump($verifier($url_web_valide1, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_valide2 : $url_web_valide2 ?";
var_dump($verifier($url_web_valide2, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_valide3 : $url_web_valide3 ?";
var_dump($verifier($url_web_valide3, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_valide4 : $url_web_valide4 ?";
var_dump($verifier($url_web_valide4, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_valide5 : $url_web_valide5 ?";
var_dump($verifier($url_web_valide5, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_valide6 : $url_web_valide6 ?";
var_dump($verifier($url_web_valide6, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_valide7 : $url_web_valide7 ?";
var_dump($verifier($url_web_valide7, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_valide8 : $url_web_valide8 ?";
var_dump($verifier($url_web_valide8, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_invalide1 : $url_web_invalide1 ?";
var_dump($verifier($url_web_invalide1, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_invalide2 : $url_web_invalide2 ?";
var_dump($verifier($url_web_invalide2, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "complet : url_web_invalide3 : $url_web_invalide3 ?";
var_dump($verifier($url_web_invalide3, 'url', array('mode'=>'complet','type_protocole'=>'web')));
echo "php_filter : url_web_valide1 : $url_web_valide1 ?";
var_dump($verifier($url_web_valide1, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_valide2 : $url_web_valide2 ?";
var_dump($verifier($url_web_valide2, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_valide3 : $url_web_valide3 ?";
var_dump($verifier($url_web_valide3, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_valide4 : $url_web_valide4 ?";
var_dump($verifier($url_web_valide4, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_valide5 : $url_web_valide5 ?";
var_dump($verifier($url_web_valide5, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_valide6 : $url_web_valide6 ?";
var_dump($verifier($url_web_valide6, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_valide7 : $url_web_valide7 ?";
var_dump($verifier($url_web_valide7, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_valide8 : $url_web_valide8 ?";
var_dump($verifier($url_web_valide8, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_invalide1 : $url_web_invalide1 ?";
var_dump($verifier($url_web_invalide1, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_invalide2 : $url_web_invalide2 ?";
var_dump($verifier($url_web_invalide2, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
echo "php_filter : url_web_invalide3 : $url_web_invalide3 ?";
var_dump($verifier($url_web_invalide3, 'url', array('mode'=>'php_filter','type_protocole'=>'web')));
?>
</pre>
</body>
</html>

159
verifier/url.php

@ -1,24 +1,135 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Une URL commence par HTTP:// contient un domaine, etc.
* Doit pouvoir recevoir en option le protocole (ou pas) FTP SSH SFTP HTTP etc.
* Si pas de protocole spécifié, commencer à :// ??
*
* @param string $valeur La valeur à vérifier.
* @param array $option [INUTILISE].
* @return string Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
*/
function verifier_url_dist($valeur, $options=array()){
$erreur = _T('verifier:erreur_url');
$ok = '';
/*
TODO Faire une belle RegExp
*/
return $ok;
}
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Vérification d'une URL
*
* Si auncune option n'est définie, vérifie uniquement si un protocole de type web est défini
*
* @param string $valeur La valeur à vérifier.
* @param array $option.
* mode : protocole_seul, php_filter, complet
* type_protocole : tous, web (http ou https), mail (imap, pop3, smtp), ftp (ftp ou sftp), exact
* protocole : nom du protocole (si type_protocole=exact)
* @return string Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
*/
function verifier_url_dist($valeur, $options=array()){
// Choix du mode de verification de la syntaxe des url
if (!$options['mode'] or !in_array($options['mode'], array('protocole_seul','php_filter','complet'))){
$mode = 'protocole_seul';
}
else{
$mode = $options['mode'];
}
// Choix du type de protocole à vérifier
if (!$options['type_protocole'] or !in_array($options['type_protocole'], array('tous','web','mail','ftp','exact'))){
$type_protocole = 'web';
}
else{
$type_protocole = $options['type_protocole'];
$protocole = '' ;
if ($type_protocole=='exact' && $options['protocole']){
$protocole = $options['protocole'];
}
}
$fonctions_disponibles = array('protocole_seul' => 'verifier_url_protocole', 'php_filter' => 'verifier_php_filter', 'complet' => 'verifier_url_complet');
$fonction_verif = $fonctions_disponibles[$mode];
return $fonction_verif($valeur,$type_protocole,$protocole) ;
}
/**
* Vérifier uniquement la présence d'un protocole
*
* @param string $valeur La valeur à vérifier
* @param string $type_protocole : tous, web (http ou https), mail (imap, pop3, smtp), ftp (ftp ou sftp), exact
* @param string $protocole : nom du protocole (si type_protocole=exact)
* @return boolean Retourne true uniquement lorsque l'url est valide
*/
function verifier_url_protocole($url,$type_protocole,$protocole){
$urlregex = array('tous' => "^([a-z0-9]*)\:\/\/.*$",
'web' => "^(https?)\:\/\/.*$",
'ftp' => "^(s?ftp)\:\/\/.*$",
'mail' => "^(pop3|smtp|imap)\:\/\/.*$",
'exact' => "^(".$protocole.")\:\/\/.*$");
$msg_erreur = array('tous' => "",
'web' => "http://, https://",
'ftp' => "^ftp://, sftp://",
'mail' => "pop3://, smtp://, imap://",
'exact' => $protocole."://" );
if (!eregi($urlregex[$type_protocole], $url)) {
if($type_protocole=="tous") {
return _T('verifier:erreur_url_protocole_exact', array('url' => echapper_tags($url)));
} else {
return _T('verifier:erreur_url_protocole', array('url' => echapper_tags($url),'protocole' => $msg_erreur[$type_protocole]));
}
}
return '';
}
/**
* Vérifier uniquement la présence d'un protocole
*
* @param string $valeur La valeur à vérifier
* @param string $type_protocole : tous, web (http ou https), mail (imap, pop3, smtp), ftp (ftp ou sftp), exact
* @param string $protocole : nom du protocole (si type_protocole=exact)
* @return boolean Retourne true uniquement lorsque l'url est valide
*/
function verifier_php_filter($url,$type_protocole,$protocole){
if (!filter_var($url, FILTER_VALIDATE_URL))
return _T('verifier:erreur_url', array('url' => echapper_tags($valeur)));
return '';
}
/**
* Vérifier la présence d'un protocole et de la bonne syntaxe du reste de l'url
*
* http://phpcentral.com/208-url-validation-in-php.html
* <http[s]|ftp> :// [user[:pass]@] hostname [port] [/path] [?getquery] [anchor]
*
* @param string $valeur La valeur à vérifier
* @param string $type_protocole : web (http ou https), mail (imap, pop3, smtp), ftp (ftp ou sftp), exact
* @param string $protocole : nom du protocole (si type_protocole=exact)
* @return boolean Retourne true uniquement lorsque l'url est valide
*/
function verifier_url_complet($url,$type_protocole,$protocole){
if($msg=verifier_url_protocole($url,$type_protocole,$protocole)!=''){
return $msg;
}
// SCHEME
$urlregex = "^(.*)\:\/\/";
// USER AND PASS (optional)
$urlregex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?";
// HOSTNAME OR IP
$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*"; // http://x = allowed (ex. http://localhost, http://routerlogin)
//$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)+"; // http://x.x = minimum
//$urlregex .= "([a-z0-9+\$_-]+\.)*[a-z0-9+\$_-]{2,3}"; // http://x.xx(x) = minimum
//use only one of the above
// PORT (optional)
$urlregex .= "(\:[0-9]{2,5})?";
// PATH (optional)
$urlregex .= "(\/([a-z0-9+\$_%,-]\.?)+)*\/?";
// GET Query (optional)
$urlregex .= "(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?";
// ANCHOR (optional)
$urlregex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?\$";
if (!eregi($urlregex, $url))
return _T('verifier:erreur_url', array('url' => echapper_tags($valeur)));
return '';
}

33
verifier/url.yaml

@ -0,0 +1,33 @@
titre: '<:verifier:type_url:>'
description: '<:verifier:type_url_description:>'
options:
-
saisie: 'radio'
options:
nom: 'mode'
label: '<:verifier:option_url_mode_label:>'
datas:
protocole_seul: '<:verifier:option_url_mode_protocole_seul:>'
php_filter: '<:verifier:option_url_mode_php_filter:>'
complet: '<:verifier:option_url_mode_complet:>'
defaut: 'protocole_seul'
-
saisie: 'radio'
options:
nom: 'type_protocole'
label: '<:verifier:option_url_type_protocole_label:>'
datas:
tous: '<:verifier:option_url_type_protocole_tous:>'
web: '<:verifier:option_url_type_protocole_web:>'
mail: '<:verifier:option_url_type_protocole_mail:>'
ftp: '<:verifier:option_url_type_protocole_ftp:>'
exact: '<:verifier:option_url_type_protocole_exact:>'
defaut: 'web'
-
saisie: 'input'
options:
nom: 'protocole'
label: '<:verifier:option_url_protocole_label:>'
Loading…
Cancel
Save