From e3a48a0415970cb866f7fe315563c4d27f1a2c62 Mon Sep 17 00:00:00 2001 From: "kent1@arscenic.info" <> Date: Tue, 10 May 2016 17:55:36 +0000 Subject: [PATCH] PSR SPIP sans toucher aux libs --- aide/verifier_fonctions.php | 18 +++--- inc/verifier.php | 39 +++++++------ verifier/code_postal.php | 26 +++++---- verifier/comparaison_champ.php | 22 ++++--- verifier/couleur.php | 25 ++++---- verifier/date.php | 90 +++++++++++++++-------------- verifier/decimal.php | 38 +++++++------ verifier/email.php | 26 +++++---- verifier/entier.php | 31 +++++----- verifier/id_document.php | 19 ++++--- verifier/isbn.php | 70 +++++++++++------------ verifier/regex.php | 14 +++-- verifier/siren_siret.php | 82 ++++++++++++++++++-------- verifier/taille.php | 37 ++++++------ verifier/telephone.php | 44 ++++++++------ verifier/url.php | 101 ++++++++++++++++++--------------- 16 files changed, 380 insertions(+), 302 deletions(-) diff --git a/aide/verifier_fonctions.php b/aide/verifier_fonctions.php index 79d7ab5..26dc98e 100644 --- a/aide/verifier_fonctions.php +++ b/aide/verifier_fonctions.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} include_spip('inc/verifier'); include_spip('inc/saisies'); @@ -9,17 +11,17 @@ include_spip('inc/saisies'); /* * Génère une page d'aide listant toutes les saisies et leurs options */ -function verifier_generer_aide(){ +function verifier_generer_aide() { // On a déjà la liste par saisie $verifications = verifier_lister_disponibles(); - + // On construit une liste par options $options = array(); - foreach ($verifications as $type_verif=>$verification){ + foreach ($verifications as $type_verif => $verification) { $options_verification = saisies_lister_par_nom($verification['options'], false); - foreach ($options_verification as $nom=>$option){ + foreach ($options_verification as $nom => $option) { // Si l'option n'existe pas encore - if (!isset($options[$nom])){ + if (!isset($options[$nom])) { $options[$nom] = _T_ou_typo($option['options']); } // On ajoute toujours par qui c'est utilisé @@ -29,11 +31,9 @@ function verifier_generer_aide(){ $verifications[$type_verif]['options'] = $options_verification; } ksort($options); - + return array( 'verifications' => $verifications, 'options' => $options ); } - -?> diff --git a/inc/verifier.php b/inc/verifier.php index ce9e2f4..03ec6b3 100644 --- a/inc/verifier.php +++ b/inc/verifier.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Fonction de base de l'API de vérification. @@ -13,19 +15,24 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * alors la valeur modifie sera stockee dans cette variable. * @return string Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function inc_verifier_dist($valeur, $type, $options=null, &$valeur_normalisee=null){ +function inc_verifier_dist($valeur, $type, $options = null, &$valeur_normalisee = null) { // On vérifie que les options sont bien un tableau - if (!is_array($options)) + if (!is_array($options)) { $options = array(); + } // Si la valeur est vide, il n'y a rien a verifier donc c'est bon - if (is_null($valeur) or (is_string($valeur) and $valeur == '')) return ''; + if (is_null($valeur) or (is_string($valeur) and $valeur == '')) { + return ''; + } // Si c'est une date avec horaire c'est un tableau - if (is_array($valeur) and isset($valeur['date']) and $valeur['date'] == '') return ''; + if (is_array($valeur) and isset($valeur['date']) and $valeur['date'] == '') { + return ''; + } // On cherche si une fonction correspondant au type existe - if ($verifier = charger_fonction($type, 'verifier',true)){ + if ($verifier = charger_fonction($type, 'verifier', true)) { $erreur = $verifier($valeur, $options, $valeur_normalisee); } @@ -47,21 +54,21 @@ function inc_verifier_dist($valeur, $type, $options=null, &$valeur_normalisee=nu /** * Liste toutes les vérifications possibles - * + * * @param string $repertoire * Dans quel repertoire chercher les yaml. - * + * * @return Retourne un tableau listant les vérifications et leurs options */ -function verifier_lister_disponibles($repertoire='verifier'){ +function verifier_lister_disponibles($repertoire = 'verifier') { static $verifications = array(); if (!isset($verifications[$repertoire])) { $verifications[$repertoire] = array(); $liste = find_all_in_path("$repertoire/", '.+[.]yaml$'); - if (count($liste)){ - foreach ($liste as $fichier=>$chemin){ + if (count($liste)) { + foreach ($liste as $fichier => $chemin) { $type = preg_replace(',[.]yaml$,i', '', $fichier); $dossier = str_replace($fichier, '', $chemin); // On ne garde que les vérifications qui ont bien la fonction ! @@ -85,22 +92,20 @@ function verifier_lister_disponibles($repertoire='verifier'){ * * @param string $type_verif * Le type de la vérification - * + * * @param string $repertoire * Dans quel repertoire chercher les yaml. - * + * * @return array Un tableau contenant le YAML décodé */ -function verifier_charger_infos($type_verif, $repertoire='verifier'){ +function verifier_charger_infos($type_verif, $repertoire = 'verifier') { include_spip('inc/yaml'); $fichier = find_in_path("$repertoire/$type_verif.yaml"); $verif = yaml_decode_file($fichier); - if (is_array($verif)){ + if (is_array($verif)) { $verif['titre'] = (isset($verif['titre']) and $verif['titre']) ? _T_ou_typo($verif['titre']) : $type_verif; $verif['description'] = (isset($verif['description']) and $verif['description']) ? _T_ou_typo($verif['description']) : ''; $verif['icone'] = (isset($verif['icone']) and $verif['icone']) ? _T_ou_typo($verif['icone']) : ''; } return $verif; } - -?> diff --git a/verifier/code_postal.php b/verifier/code_postal.php index 90705cf..71b96c0 100644 --- a/verifier/code_postal.php +++ b/verifier/code_postal.php @@ -1,19 +1,21 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Un code postal francais est compose de 5 chiffres * http://fr.wikipedia.org/wiki/Code_postal_en_France * a completer pour d'autre pays - * + * * cf : http://fr.wikipedia.org/wiki/Codes_postaux - * + * * La regexp par défaut doit valider toutes les possibilités * -* combinaisons de chiffres et de lettres et aussi tiret * -* notations internationales cf : http://en.wikipedia.org/wiki/List_of_postal_codes#On_the_use_of_country_codes - * + * * @param string $valeur * La valeur à vérifier. * @param array $options @@ -21,16 +23,18 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_code_postal_dist($valeur, $options=array()){ +function verifier_code_postal_dist($valeur, $options = array()) { $erreur = _T('verifier:erreur_code_postal'); - if (!is_string($valeur)) + if (!is_string($valeur)) { return $erreur; + } $ok = ''; - switch ($options['pays']){ + switch ($options['pays']) { case 'FR': - if (!preg_match(",^((0[1-9])|([1-8][0-9])|(9[0-8]))[0-9]{3}$,", $valeur)) + if (!preg_match(',^((0[1-9])|([1-8][0-9])|(9[0-8]))[0-9]{3}$,', $valeur)) { return $erreur; + } break; case 'DZ':// Algérie case 'DE':// Allemagne @@ -50,12 +54,14 @@ function verifier_code_postal_dist($valeur, $options=array()){ case 'MX':// Mexique case 'UA':// Ukraine // 5 chiffres - if (!preg_match(",^[0-9]{5}$,", $valeur)) + if (!preg_match(',^[0-9]{5}$,', $valeur)) { return $erreur; + } break; default: - if (!preg_match('/^[A-Z]{1,2}[-|\s][0-9]{3,6}$|^[0-9]{3,6}$|^[0-9|A-Z]{2,5}[-|\s][0-9|A-Z]{2,4}$|^[A-Z]{1,2} [0-9|A-Z]{2,5}[-|\s][0-9|A-Z]{2,4}/i',$valeur)) + if (!preg_match('/^[A-Z]{1,2}[-|\s][0-9]{3,6}$|^[0-9]{3,6}$|^[0-9|A-Z]{2,5}[-|\s][0-9|A-Z]{2,4}$|^[A-Z]{1,2} [0-9|A-Z]{2,5}[-|\s][0-9|A-Z]{2,4}/i', $valeur)) { return $erreur; + } break; } diff --git a/verifier/comparaison_champ.php b/verifier/comparaison_champ.php index d04e34a..e4eeae7 100644 --- a/verifier/comparaison_champ.php +++ b/verifier/comparaison_champ.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Compare la valeur avec un autre champ du _request(). @@ -13,17 +15,20 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_comparaison_champ_dist($valeur, $options=array()){ +function verifier_comparaison_champ_dist($valeur, $options = array()) { include_spip('inc/filtres'); - + // On vérifie qu'on a bien un champ à comparer - if (!$champ = $options['champ'] or !is_scalar($champ)) return true; - else $valeur_champ = _request($champ); - + if (!$champ = $options['champ'] or !is_scalar($champ)) { + return true; + } else { + $valeur_champ = _request($champ); + } + // On cherche le nom du champ $nom_champ = $options['nom_champ'] ? $options['nom_champ'] : $champ; - - switch ($options['comparaison']){ + + switch ($options['comparaison']) { case 'petit': return $valeur < $valeur_champ ? '' : _T('verifier:erreur_comparaison_petit', array('nom_champ'=>$nom_champ)); break; @@ -44,4 +49,3 @@ function verifier_comparaison_champ_dist($valeur, $options=array()){ break; } } - diff --git a/verifier/couleur.php b/verifier/couleur.php index 2445392..887a2dc 100644 --- a/verifier/couleur.php +++ b/verifier/couleur.php @@ -1,11 +1,13 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vérifie la validité d'un code couleur - * + * * @param string $valeur * La valeur à vérifier. * @param array $options @@ -16,24 +18,25 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_couleur_dist($valeur, $options=array(), &$valeur_normalisee=null){ +function verifier_couleur_dist($valeur, $options = array(), &$valeur_normalisee = null) { $erreur = _T('verifier:erreur_couleur'); - if (!is_string($valeur)) + if (!is_string($valeur)) { return $erreur; + } $ok = ''; - switch ($options['type']){ + switch ($options['type']) { case 'hexa': default: - if (!preg_match(",^#[a-f0-9]{6}$,i", $valeur)) - if (isset($options['normaliser']) and preg_match(",^[a-f0-9]{6}$,i", $valeur)) - $valeur_normalisee = "#".$valeur ; - else + if (!preg_match(',^#[a-f0-9]{6}$,i', $valeur)) { + if (isset($options['normaliser']) and preg_match(',^[a-f0-9]{6}$,i', $valeur)) { + $valeur_normalisee = '#'.$valeur; + } else { return $erreur; + } + } break; } return $ok; } - -?> \ No newline at end of file diff --git a/verifier/date.php b/verifier/date.php index 184efda..bd628c5 100644 --- a/verifier/date.php +++ b/verifier/date.php @@ -1,13 +1,15 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Une date au format JJ/MM/AAAA (avec séparateurs souples : espace / - .) * Options : * - format : permet de préciser le format de la date jma pour jour/mois/année (par défaut), mja (pour mois / jour / année), amj (année/mois/jour) - * TODO : compléter les formats + * TODO : compléter les formats * On pourrait faire mieux, genre vérifier les jours en fonction du mois * Mais c'est pas très important, on reste simple * @@ -20,70 +22,74 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_date_dist($valeur, $options=array(), &$valeur_normalisee=null){ +function verifier_date_dist($valeur, $options = array(), &$valeur_normalisee = null) { $erreur = _T('verifier:erreur_date_format'); $horaire = false; // par défaut on ne teste qu'une date - + // Si ce n'est ni une chaîne ni un tableau : pas le bon format - if (!is_string($valeur) and !is_array($valeur)) + if (!is_string($valeur) and !is_array($valeur)) { return $erreur; - + } + // Si c'est un tableau if (is_array($valeur)) { // S'il y a les bonnes infos on les garde aux bons endroits - if ( - isset($valeur['date']) and is_string($valeur['date']) - and isset($valeur['heure']) and is_string($valeur['heure']) - ) { + if (isset($valeur['date']) and is_string($valeur['date']) + and isset($valeur['heure']) and is_string($valeur['heure'])) { $options['heure'] = $valeur['heure']; // l'heure pour la fonction de normalisation $valeur = $valeur['date']; // valeur principale pour la date $horaire = true; // on détecte une vérif avec horaire uniquement dans ce cas - } - // Sinon : pas le bon format - else { + } else { + // Sinon : pas le bon format return $erreur; } } - + $ok = ''; - + // On tolère différents séparateurs - $valeur = preg_replace("#\.|/| #i",'-',$valeur); - + $valeur = preg_replace('#\.|/| #i', '-', $valeur); + // On vérifie la validité du format - $format = isset($options['format']) ? $options['format'] : 'jma'; - + $format = isset($options['format']) ? $options['format'] : 'jma'; + if ($format=='mja') { - if(!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#',$valeur)) return $erreur; - list($mois,$jour,$annee) = explode('-',$valeur); + if (!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#', $valeur)) { + return $erreur; + } + list($mois,$jour,$annee) = explode('-', $valeur); } elseif ($format=='amj') { - if(!preg_match('#^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$#',$valeur)) return $erreur; - list($annee,$mois,$jour) = explode('-',$valeur); + if (!preg_match('#^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$#', $valeur)) { + return $erreur; + } + list($annee,$mois,$jour) = explode('-', $valeur); } else { // Format jma par défaut - if(!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#',$valeur)) return $erreur; - list($jour,$mois,$annee) = explode('-',$valeur); + if (!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#', $valeur)) { + return $erreur; + } + list($jour,$mois,$annee) = explode('-', $valeur); + } + + // Validité de la date + $erreur = _T('verifier:erreur_date'); + if (!checkdate($mois, $jour, $annee)) { + return $erreur; } - // Validité de la date - $erreur = _T('verifier:erreur_date'); - if (!checkdate($mois, $jour, $annee)) return $erreur; - - if($horaire) { + if ($horaire) { // Format de l'heure $options['heure'] = str_replace(array('h','m','min'), array(':','',''), $options['heure']); if (!preg_match('#^([0-9]{1,2}):([0-9]{1,2})$#', $options['heure'], $hetm)) { return _T('verifier:erreur_heure_format'); - } - // Si c'est le bon format, on teste si les nombres donnés peuvent exister - else { + } else { + // Si c'est le bon format, on teste si les nombres donnés peuvent exister $heures = intval($hetm[1]); $minutes = intval($hetm[2]); - if ($heures < 0 or $heures > 23 or $minutes < 0 or $minutes > 59){ + if ($heures < 0 or $heures > 23 or $minutes < 0 or $minutes > 59) { return _T('verifier:erreur_heure'); - } - // Si tout est bon pour l'heure, on recompose en ajoutant des 0 si besoin - else { + } else { + // Si tout est bon pour l'heure, on recompose en ajoutant des 0 si besoin $options['heure'] = sprintf('%02d:%02d', $heures, $minutes); } } @@ -96,11 +102,8 @@ function verifier_date_dist($valeur, $options=array(), &$valeur_normalisee=null) return $ok; } - - - /** - * Convertir une date en datetime + * Convertir une date en datetime * **/ function normaliser_date_datetime_dist($valeur, $options, &$erreur) { @@ -125,11 +128,11 @@ function normaliser_date_datetime_dist($valeur, $options, &$erreur) { if (!($date = mktime($date[3], $date[4], 0, (int)$date[1], (int)$date[2], (int)$date[0]))) { // mauvais format de date - $erreur = "Impossible de normaliser la date..."; + $erreur = 'Impossible de normaliser la date...'; return false; } - $date = date("Y-m-d H:i:s", $date); + $date = date('Y-m-d H:i:s', $date); $date = vider_date($date); // enlever les valeurs considerees comme nulles (1 1 1970, etc...) if (!$date) { @@ -138,4 +141,3 @@ function normaliser_date_datetime_dist($valeur, $options, &$erreur) { return $date; } - diff --git a/verifier/decimal.php b/verifier/decimal.php index b144ead..635433e 100644 --- a/verifier/decimal.php +++ b/verifier/decimal.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vérifie qu'un entier cohérent peut être extrait de la valeur @@ -16,39 +18,39 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_decimal_dist($valeur, $options=array()){ +function verifier_decimal_dist($valeur, $options = array()) { $erreur = _T('verifier:erreur_decimal'); - + // Pas de tableau ni d'objet - if (is_numeric($valeur) and $valeur == floatval($valeur)){ + if (is_numeric($valeur) and $valeur == floatval($valeur)) { // Si c'est une chaine on convertit en flottant $valeur = floatval($valeur); $ok = true; $erreur = ''; - - if (isset($options['min'])) + + if (isset($options['min'])) { $ok = ($ok and ($valeur >= $options['min'])); - - if (isset($options['max'])){ + } + + if (isset($options['max'])) { $ok = ($ok and ($valeur <= $options['max'])); } - - if (!$ok){ - if (isset($options['min']) and isset($options['max'])) + + if (!$ok) { + if (isset($options['min']) and isset($options['max'])) { $erreur = _T('verifier:erreur_entier_entre', $options); - elseif (isset($options['max'])) + } elseif (isset($options['max'])) { $erreur = _T('verifier:erreur_entier_max', $options); - else + } else { $erreur = _T('verifier:erreur_entier_min', $options); + } } } - + // On vérifie le nombre de décimales après la virgule - if ($nb_decimales = $options['nb_decimales'] and round($valeur, $nb_decimales) != $valeur){ + if ($nb_decimales = $options['nb_decimales'] and round($valeur, $nb_decimales) != $valeur) { $erreur = _T('verifier:erreur_decimal_nb_decimales', array('nb_decimales' => $nb_decimales)); } - + return $erreur; } - -?> diff --git a/verifier/email.php b/verifier/email.php index b955063..286f455 100644 --- a/verifier/email.php +++ b/verifier/email.php @@ -1,11 +1,13 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vérifie la validité d'une adresse de courriel. - * + * * Les contraintes du mail sont déterminées par le mode de validation * En option, on contrôle aussi la disponibilité du mail dans la table des auteurs * @@ -16,7 +18,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_email_dist($valeur, $options=array()){ +function verifier_email_dist($valeur, $options = array()) { include_spip('inc/filtres'); if (!is_string($valeur)) { return $erreur; @@ -24,14 +26,14 @@ function verifier_email_dist($valeur, $options=array()){ // Disponibilite des courriels en base AUTEURS // Si l'adresse n'est pas disponible, on stoppe tout sinon on continue - if (!empty($options['disponible']) and !verifier_disponibilite_email($valeur,isset($options['id_auteur'])?$options['id_auteur']:null)){ + if (!empty($options['disponible']) and !verifier_disponibilite_email($valeur, isset($options['id_auteur']) ? $options['id_auteur'] : null)) { return _T('verifier:erreur_email_nondispo', array('email' => echapper_tags($valeur))); } // Choix du mode de verification de la syntaxe des courriels - if (empty($options['mode']) or !in_array($options['mode'], array('normal','rfc5322','strict'))){ + if (empty($options['mode']) or !in_array($options['mode'], array('normal','rfc5322','strict'))) { $mode = 'normal'; - } else{ + } else { $mode = $options['mode']; } @@ -52,13 +54,13 @@ function verifier_email_dist($valeur, $options=array()){ /** * Changement de la RegExp d'origine * - * Respect de la RFC5322 + * Respect de la RFC5322 * * @link (phraseur détaillé ici : http://www.dominicsayers.com/isemail/) * @param string $valeur La valeur à vérifier * @return boolean Retourne true uniquement lorsque le mail est valide */ -function verifier_email_rfc5322($valeur){ +function verifier_email_rfc5322($valeur) { // Si c'est un spammeur autant arreter tout de suite if (preg_match(",[\n\r].*(MIME|multipart|Content-),i", $valeur)) { spip_log("Tentative d'injection de mail : $valeur"); @@ -83,7 +85,7 @@ function verifier_email_rfc5322($valeur){ * @param string $valeur La valeur à vérifier * @return boolean Retourne true uniquement lorsque le mail est valide */ -function verifier_email_de_maniere_stricte($valeur){ +function verifier_email_de_maniere_stricte($valeur) { // Si c'est un spammeur autant arreter tout de suite if (preg_match(",[\n\r].*(MIME|multipart|Content-),i", $valeur)) { spip_log("Tentative d'injection de mail : $valeur"); @@ -92,12 +94,12 @@ function verifier_email_de_maniere_stricte($valeur){ foreach (explode(',', $valeur) as $adresse) { // nettoyer certains formats // "Marie Toto <Marie@toto.com>" - $adresse = trim(preg_replace(",^[^<>\"]*<([^<>\"]+)>$,i", "\\1", $adresse)); + $adresse = trim(preg_replace(',^[^<>\"]*<([^<>\"]+)>$,i', '\\1', $adresse)); if (!preg_match('/^([A-Za-z0-9]){1}([A-Za-z0-9]|-|_|\.)*@[A-Za-z0-9]([A-Za-z0-9]|-|\.){1,}\.[A-Za-z]{2,4}$/', $adresse)) { return false; } } - return true; + return true; } /** @@ -107,7 +109,7 @@ function verifier_email_de_maniere_stricte($valeur){ * @param string $valeur La valeur à vérifier * @return boolean Retourne false lorsque le mail est déjà utilisé */ -function verifier_disponibilite_email($valeur,$exclure_id_auteur=null){ +function verifier_disponibilite_email($valeur, $exclure_id_auteur = null) { include_spip('base/abstract_sql'); if (sql_getfetsel('id_auteur', 'spip_auteurs', 'email='.sql_quote($valeur).(!is_null($exclure_id_auteur)?"AND statut<>'5poubelle' AND id_auteur<>".intval($exclure_id_auteur):''))) { diff --git a/verifier/entier.php b/verifier/entier.php index 2a82b73..22d3cab 100644 --- a/verifier/entier.php +++ b/verifier/entier.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vérifie qu'un entier cohérent peut être extrait de la valeur @@ -16,34 +18,33 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_entier_dist($valeur, $options=array()){ +function verifier_entier_dist($valeur, $options = array()) { $erreur = _T('verifier:erreur_entier'); // Pas de tableau ni d'objet - if (is_numeric($valeur) and $valeur == intval($valeur)){ + if (is_numeric($valeur) and $valeur == intval($valeur)) { // Si c'est une chaine on convertit en entier $valeur = intval($valeur); $ok = true; $erreur = ''; - - if (isset($options['min'])) + + if (isset($options['min'])) { $ok = ($ok and ($valeur >= $options['min'])); - - if (isset($options['max'])){ + } + if (isset($options['max'])) { $ok = ($ok and ($valeur <= $options['max'])); } - - if (!$ok){ - if (isset($options['min']) and isset($options['max'])) + + if (!$ok) { + if (isset($options['min']) and isset($options['max'])) { $erreur = _T('verifier:erreur_entier_entre', $options); - elseif (isset($options['max'])) + } elseif (isset($options['max'])) { $erreur = _T('verifier:erreur_entier_max', $options); - else + } else { $erreur = _T('verifier:erreur_entier_min', $options); + } } } - + return $erreur; } - -?> diff --git a/verifier/id_document.php b/verifier/id_document.php index e0909db..08bdb61 100644 --- a/verifier/id_document.php +++ b/verifier/id_document.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vérifie que la valeur correspond à un id_dcoument valide @@ -12,19 +14,18 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_id_document_dist($valeur, $options=array()){ +function verifier_id_document_dist($valeur, $options = array()) { $erreur = ''; - + if ($valeur !== '') { // On vérifie déjà qu'il s'agit d'un nombre - if(!is_numeric($valeur)) + if (!is_numeric($valeur)) { $erreur = _T('verifier:erreur_id_document'); - // Puis qu'il y a au moins un document avec cet id - elseif (!sql_countsel('spip_documents',"id_document=$valeur")) + } elseif (!sql_countsel('spip_documents', 'id_document='.intval($valeur))) { + // Puis qu'il y a au moins un document avec cet id $erreur = _T('verifier:erreur_id_document'); + } } - + return $erreur; } - -?> diff --git a/verifier/isbn.php b/verifier/isbn.php index ba0a2ce..34946b1 100644 --- a/verifier/isbn.php +++ b/verifier/isbn.php @@ -1,10 +1,12 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** - * Validation d'un numero ISBN + * Validation d'un numero ISBN * * d apres https://fr.wikipedia.org/wiki/Numéro_ISBN * ISBN-13 : longeur totale 13 caracteres divises en 5 segments de la forme G - A - B - C - K @@ -18,40 +20,34 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * A, B, C : idem ISBN-13 * K: 1 caractere entre 0 et 9, ou X (cle de controle calculee d apres les autres chiffres) * ex: 2-1234-5680-X - * + * * Avec un numero ISBN comportant des tirets, on pourrait utiliser une regex * pour verifier que chaque segment comporte le nombre adequat de caracteres. * Cependant ca ne permet pas d indiquer precisement la nature de l erreur. * La regex au cas ou : "/^(97[89][- ]){0,1}[0-9]{1,5}[- ][0-9]{1,7}[- ][0-9]{1,6}[- ][0-9X]$/" - * + * * * @param string $valeur * La valeur à vérifier. * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ - -function verifier_isbn_dist($valeur, $options=array()){ + +function verifier_isbn_dist($valeur, $options = array()) { // dans tous les cas, on doit avoir 10 ou 13 caracteres (en enlevant les tirets) $val['nb'] = $nb = strlen(preg_replace('/-/', '', $valeur)); - if (!preg_match("/10|13/", $nb)) { + if (!preg_match('/10|13/', $nb)) { return _T('verifier:erreur_isbn_nb_caracteres', $val); - } - - // un numero ISBN-13 ne peut pas se terminer par X - else if (preg_match("/^97[89].*X$/", $valeur)) { - return _T('verifier:erreur_isbn_13_X'); - } - - // s il y a le bon nombre de caracteres, on verifie qu il soient bien agences - else { - + } else if (preg_match('/^97[89].*X$/', $valeur)) { + // un numero ISBN-13 ne peut pas se terminer par X + return _T('verifier:erreur_isbn_13_X'); + } else { + // s il y a le bon nombre de caracteres, on verifie qu il soient bien agences // si le numero ISBN est decompose en segments par des tirets, verifier chaque segment - if (preg_match("/-/", $valeur)){ - + if (preg_match('/-/', $valeur)) { // d'abord on recupere les valeurs de chaque segment - $segments = explode("-", $valeur); + $segments = explode('-', $valeur); $val['nb'] = count($segments); // ISBN-13 if ($val['nb'] == 5) { @@ -61,62 +57,60 @@ function verifier_isbn_dist($valeur, $options=array()){ $B = $segments[2]; $C = $segments[3]; $K = $segments[4]; - } - // ISBN-10 - else if ($val['nb'] == 4) { + } elseif ($val['nb'] == 4) { + // ISBN-10 $isbn = 10; $A = $segments[0]; $B = $segments[1]; $C = $segments[2]; $K = $segments[3]; - } - // nombre de segments incorrect (on ne sait jamais) - else { + } else { + // nombre de segments incorrect (on ne sait jamais) return _T('verifier:erreur_isbn_nb_segments', $val); } // puis ensuite, on verifie leur conformite // G : 978 ou 979 - if ($G AND !preg_match("/97[89]/", $G)) { + if ($G and !preg_match('/97[89]/', $G)) { return _T('verifier:erreur_isbn_G'); } // A, B et C doivent contenir des chiffres - foreach (array($A,$B,$C) as $segment){ + foreach (array($A,$B,$C) as $segment) { $val['segment'] = $segment; - if (!is_numeric($segment)) + if (!is_numeric($segment)) { return _T('verifier:erreur_isbn_segment_lettre', $val); + } } // A (code zone geographique) : 5 caracteres max - if ($nbA = strlen($A) AND $nbA > 5) { + if ($nbA = strlen($A) and $nbA > 5) { $val['nb'] = $nbA - 5; $val['segment'] = $A; return _T('verifier:erreur_isbn_segment', $val); } // B (code editeur) : 7 caracteres max - if ($nbB = strlen($B) AND $nbB > 7) { + if ($nbB = strlen($B) and $nbB > 7) { $val['nb'] = $nbB - 7; $val['segment'] = $B; return _T('verifier:erreur_isbn_segment', $val); } // C (code livre) : 6 caracteres max - if ($nbC = strlen($C) AND $nbC > 6) { + if ($nbC = strlen($C) and $nbC > 6) { $val['nb'] = $nbC - 6; $val['segment'] = $C; return _T('verifier:erreur_isbn_segment', $val); } // K (cle de controle) : 1 caractere max - if ($nbK = strlen($K) AND $nbK > 1) { + if ($nbK = strlen($K) and $nbK > 1) { $val['nb'] = $nbK - 1; $val['segment'] = $K; return _T('verifier:erreur_isbn_segment', $val); } - } - - // si le numero ISBN n a pas de tiret, on verifie au moyen d une regex - else { + } else { + // si le numero ISBN n a pas de tiret, on verifie au moyen d une regex // verification generique [978 ou 979] [9 chiffres] [1 chiffre ou lettre X] - if (!preg_match("/^(97[89]){0,1}[0-9]{1,9}[0-9X]$/", $valeur)) + if (!preg_match('/^(97[89]){0,1}[0-9]{1,9}[0-9X]$/', $valeur)) { return _T('verifier:erreur_isbn'); + } } } diff --git a/verifier/regex.php b/verifier/regex.php index 8ba8605..2157049 100644 --- a/verifier/regex.php +++ b/verifier/regex.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vérifié une valeur suivant une expression régulière. @@ -15,15 +17,15 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_regex_dist($valeur, $options=array()){ +function verifier_regex_dist($valeur, $options = array()) { $erreur = _T('verifier:erreur_regex'); - if (!is_string($valeur)) + if (!is_string($valeur)) { return $erreur; + } - if (preg_match($options['modele'], $valeur)) + if (preg_match($options['modele'], $valeur)) { return ''; + } return $erreur; } - -?> diff --git a/verifier/siren_siret.php b/verifier/siren_siret.php index 04f0f71..6ff2fd3 100644 --- a/verifier/siren_siret.php +++ b/verifier/siren_siret.php @@ -1,10 +1,12 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** - * Validation d'un SIREN ou d'un SIRET + * Validation d'un SIREN ou d'un SIRET * * 1/ Un SIREN comporte STRICTEMENT 9 caractères * 1b/ Un SIRET comporte strictement 14 caractères @@ -19,11 +21,10 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_siren_siret_dist($valeur, $options=array()){ - if (!$options['mode'] or !in_array($options['mode'], array('siren', 'siret'))){ +function verifier_siren_siret_dist($valeur, $options = array()) { + if (!$options['mode'] or !in_array($options['mode'], array('siren', 'siret'))) { $mode = 'siren'; - } - else{ + } else { $mode = $options['mode']; } @@ -31,43 +32,74 @@ function verifier_siren_siret_dist($valeur, $options=array()){ $valeur = preg_replace('/\s/', '', $valeur); // Test de SIREN - if ($mode == 'siren'){ + if ($mode == 'siren') { $erreur = _T('verifier:erreur_siren'); - if (!is_string($valeur)) + if (!is_string($valeur)) { return $erreur; + } // Si pas 9 caractère, c'est déjà foiré ! - if(!preg_match('/^[0-9]{9}$/',$valeur)) return $erreur; - + if (!preg_match('/^[0-9]{9}$/', $valeur)) { + return $erreur; + } + // On vérifie la clef de controle "1-2" $somme = 0; $i = 0; // Les impaires - while($i < 9){ $somme += $valeur[$i]; $i+=2; } + while ($i < 9) { + $somme += $valeur[$i]; + $i+=2; + } $i = 1; // Les paires ! - while($i < 9){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; } - - if ($somme % 10) return $erreur; - } - // Test de SIRET - else{ + while ($i < 9) { + if ((2*$valeur[$i])>9) { + $somme += (2*$valeur[$i])-9; + } else { + $somme += 2*$valeur[$i]; + $i+=2; + } + } + + if ($somme % 10) { + return $erreur; + } + } else { + // Test de SIRET $erreur = _T('verifier:erreur_siret'); - if (!is_string($valeur)) + if (!is_string($valeur)) { return $erreur; + } // Si pas 14 caractère, c'est déjà foiré ! - if(!preg_match('/^[0-9]{14}$/',$valeur)) return $erreur; - if(preg_match('/[0]{8}/',$valeur)) return $erreur; + if (!preg_match('/^[0-9]{14}$/', $valeur)) { + return $erreur; + } + if (preg_match('/[0]{8}/', $valeur)) { + return $erreur; + } // Pour le SIRET on vérifie la clef de controle "1-2" avec les impaires *2 // (vs pairs*2 pour SIREN, parce qu'on part de la fin) $somme = 0; $i = 1; // Les paires - while($i < 14){ $somme += $valeur[$i]; $i+=2; } + while ($i < 14) { + $somme += $valeur[$i]; + $i+=2; + } $i = 0; // Les impaires ! - while($i < 14){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; } - - if($somme % 10) return $erreur; + while ($i < 14) { + if ((2*$valeur[$i])>9) { + $somme += (2*$valeur[$i])-9; + } else { + $somme += 2*$valeur[$i]; + $i+=2; + } + } + + if ($somme % 10) { + return $erreur; + } } - + return ''; } diff --git a/verifier/taille.php b/verifier/taille.php index b55ad1f..f74a61c 100644 --- a/verifier/taille.php +++ b/verifier/taille.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vérifier une taille minimale/maximale, pour un mot de passe par exemple @@ -14,37 +16,40 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_taille_dist($valeur, $options=array()){ +function verifier_taille_dist($valeur, $options = array()) { $ok = true; - if (!is_string($valeur)) + if (!is_string($valeur)) { return _T('erreur_inconnue_generique'); - + } + include_spip('inc/charsets'); $erreur = ''; $taille = spip_strlen($valeur); - - if (isset($options['min'])) + + if (isset($options['min'])) { $ok = ($ok and ($taille >= $options['min'])); - - if (isset($options['max'])){ + } + + if (isset($options['max'])) { $ok = ($ok and ($taille <= $options['max'])); } - if (isset($options['egal'])){ + if (isset($options['egal'])) { $ok = ($ok and ($taille == $options['egal'])); } - - if (!$ok){ + + if (!$ok) { // On ajoute la taille actuelle aux valeurs de remplacement $options['nb'] = $taille; - if (isset($options['min']) and isset($options['max'])) + if (isset($options['min']) and isset($options['max'])) { $erreur = _T('verifier:erreur_taille_entre', $options); - elseif (isset($options['max'])) + } elseif (isset($options['max'])) { $erreur = _T('verifier:erreur_taille_max', $options); - elseif (isset($options['egal'])) + } elseif (isset($options['egal'])) { $erreur = _T('verifier:erreur_taille_egal', $options); - else + } else { $erreur = _T('verifier:erreur_taille_min', $options); + } } - + return $erreur; } diff --git a/verifier/telephone.php b/verifier/telephone.php index 2051e24..70ed47a 100644 --- a/verifier/telephone.php +++ b/verifier/telephone.php @@ -1,7 +1,9 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vérifie un numéro de téléphone. Pour l'instant seulement avec le schéma français. @@ -13,48 +15,58 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_telephone_dist($valeur, $options=array()){ +function verifier_telephone_dist($valeur, $options = array()) { $erreur = _T('verifier:erreur_telephone'); - if (!is_string($valeur)) + if (!is_string($valeur)) { return $erreur; + } $ok = ''; // On accepte differentes notations, les points, les tirets, les espaces, les slashes - $tel = preg_replace("#\.|/|-| #i",'',$valeur); + $tel = preg_replace('#\.|/|-| #i', '', $valeur); // Pour les prefixes, on accepte les notations +33 et 0033 - $prefixe_FR = "/^(\+|00)33/"; - $prefixe_ES = "/^(\+|00)34/"; - $prefixe_CH = "/^(\+|00)41/"; + $prefixe_FR = '/^(\+|00)33/'; + $prefixe_ES = '/^(\+|00)34/'; + $prefixe_CH = '/^(\+|00)41/'; if (preg_match($prefixe_FR, $tel)) { $options['pays'] = 'FR'; - $tel = preg_replace($prefixe_FR,'0',$tel); + $tel = preg_replace($prefixe_FR, '0', $tel); } if (preg_match($prefixe_ES, $tel)) { $options['pays'] = 'ES'; - $tel = preg_replace($prefixe_ES,'',$tel); + $tel = preg_replace($prefixe_ES, '', $tel); } if (preg_match($prefixe_CH, $tel)) { $options['pays'] = 'CH'; - $tel = preg_replace($prefixe_CH,'0',$tel); + $tel = preg_replace($prefixe_CH, '0', $tel); } - switch($options['pays']){ + switch ($options['pays']) { case 'CH': - if (!preg_match("/^0[1-9]{9}$/",$tel)) return $erreur; + if (!preg_match('/^0[1-9]{9}$/', $tel)) { + return $erreur; + } break; case 'ES': - if (!preg_match("/^[69][0-9]{8}$/",$tel)) return $erreur; + if (!preg_match('/^[69][0-9]{8}$/', $tel)) { + return $erreur; + } break; case 'FR': - if (!preg_match("/^0[1-9][0-9]{8}$/",$tel)) return $erreur; + if (!preg_match('/^0[1-9][0-9]{8}$/', $tel)) { + return $erreur; + } + break; default: // On interdit les 000 etc. mais je pense qu'on peut faire plus malin // On interdit egalement les "numéros" tout en lettres // TODO finaliser les numéros à la con - if(intval($tel) == 0) return $erreur; + if (intval($tel) == 0) { + return $erreur; + } break; } - + return $ok; } diff --git a/verifier/url.php b/verifier/url.php index ce5120f..44b4fb6 100644 --- a/verifier/url.php +++ b/verifier/url.php @@ -1,11 +1,13 @@ <?php // Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; +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 @@ -17,33 +19,32 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_url_dist($valeur, $options=array()){ - if (!is_string($valeur)) +function verifier_url_dist($valeur, $options = array()) { + if (!is_string($valeur)) { return _T('erreur_inconnue_generique'); + } // Choix du mode de verification de la syntaxe des url - if (!$options['mode'] or !in_array($options['mode'], array('protocole_seul','php_filter','complet'))){ + if (!$options['mode'] or !in_array($options['mode'], array('protocole_seul','php_filter','complet'))) { $mode = 'protocole_seul'; - } - else{ + } 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'))){ + if (!$options['type_protocole'] or !in_array($options['type_protocole'], array('tous','web','mail','ftp','exact'))) { $type_protocole = 'web'; - } - else{ + } else { $type_protocole = $options['type_protocole']; $protocole = '' ; - if ($type_protocole=='exact' && $options['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) ; } @@ -56,23 +57,27 @@ function verifier_url_dist($valeur, $options=array()){ * @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]*)\:\/\/.*$# i", - 'web' => "#^(https?)\:\/\/.*$# i", - 'ftp' => "#^(s?ftp)\:\/\/.*$# i", - 'mail' => "#^(pop3|smtp|imap)\:\/\/.*$# i", - 'exact' => "#^(".$protocole.")\:\/\/.*$# i"); - - $msg_erreur = array('tous' => "", - 'web' => "http://, https://", - 'ftp' => "^ftp://, sftp://", - 'mail' => "pop3://, smtp://, imap://", - 'exact' => $protocole."://" ); - +function verifier_url_protocole($url, $type_protocole, $protocole) { + + $urlregex = array( + 'tous' => '#^([a-z0-9]*)\:\/\/.*$# i', + 'web' => '#^(https?)\:\/\/.*$# i', + 'ftp' => '#^(s?ftp)\:\/\/.*$# i', + 'mail' => '#^(pop3|smtp|imap)\:\/\/.*$# i', + 'exact' => '#^(".$protocole.")\:\/\/.*$# i' + ); + + $msg_erreur = array( + 'tous' => '', + 'web' => 'http://, https://', + 'ftp' => '^ftp://, sftp://', + 'mail' => 'pop3://, smtp://, imap://', + 'exact' => $protocole.'://' + ); + if (!preg_match($urlregex[$type_protocole], $url)) { - if($type_protocole=="tous") { + 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])); @@ -89,10 +94,11 @@ function verifier_url_protocole($url,$type_protocole,$protocole){ * @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){ +function verifier_php_filter($url, $type_protocole, $protocole) { - if (!filter_var($url, FILTER_VALIDATE_URL)) + if (!filter_var($url, FILTER_VALIDATE_URL)) { return _T('verifier:erreur_url', array('url' => echapper_tags($valeur))); + } return ''; } @@ -107,33 +113,34 @@ function verifier_php_filter($url,$type_protocole,$protocole){ * @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)!=''){ +function verifier_url_complet($url, $type_protocole, $protocole) { + + if ($msg = verifier_url_protocole($url, $type_protocole, $protocole) != '') { return $msg; } // SCHEME - $urlregex = "#^(.*)\:\/\/"; - + $urlregex = '#^(.*)\:\/\/'; + // USER AND PASS (optional) - $urlregex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?"; - + $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 = 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})?"; + $urlregex .= '(\:[0-9]{2,5})?'; // PATH (optional) - $urlregex .= "(\/([a-z0-9+\$_%,-]\.?)+)*\/?"; + $urlregex .= '(\/([a-z0-9+\$_%,-]\.?)+)*\/?'; // GET Query (optional) - $urlregex .= "(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?"; + $urlregex .= '(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?'; // ANCHOR (optional) - $urlregex .= "(\#[a-z_.-][a-z0-9+\$_.-]*)?\$# i"; - - if (!preg_match($urlregex, $url)) + $urlregex .= '(\#[a-z_.-][a-z0-9+\$_.-]*)?\$# i'; + + if (!preg_match($urlregex, $url)) { return _T('verifier:erreur_url', array('url' => echapper_tags($valeur))); + } return ''; -} \ No newline at end of file +} -- GitLab