SPIP
Documentation
SPIP
Blog
Programmer
Code
Search
Contribution
Contrib
Plugins
Traduire
Forge Git
Entraide
Discuter
IRC
Discord
Découverte
Démo
Syntaxe
Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
verifier
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Service d'assistance
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Conditions générales et politique de confidentialité
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
spip-contrib-extensions
verifier
Validations
e8c9063e
Valider
e8c9063e
rédigé
14 years ago
par
gilles.vincent@gmail.com
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Maintenir une compatibilite ainsi que la possibilite d'avoir des mails simplifies
parent
88ed6de9
Branches
Branches contenant la validation
Étiquettes
Étiquettes contenant la validation
Aucune requête de fusion associée trouvée
Modifications
3
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
3 fichiers modifiés
lang/verifier_fr.php
+2
-1
2 ajouts, 1 suppression
lang/verifier_fr.php
verifier/email.php
+36
-8
36 ajouts, 8 suppressions
verifier/email.php
verifier/email.yaml
+1
-0
1 ajout, 0 suppression
verifier/email.yaml
avec
39 ajouts
et
9 suppressions
lang/verifier_fr.php
+
2
−
1
Voir le fichier @
e8c9063e
...
@@ -28,7 +28,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
...
@@ -28,7 +28,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'option_email_disponible_label'
=>
'Adresse disponible'
,
'option_email_disponible_label'
=>
'Adresse disponible'
,
'option_email_disponible_label_case'
=>
'Vérifier que l\'adresse n\'est pas déjà utilisée par un utilisateur'
,
'option_email_disponible_label_case'
=>
'Vérifier que l\'adresse n\'est pas déjà utilisée par un utilisateur'
,
'option_email_mode_label'
=>
'Mode de vérification des courriels'
,
'option_email_mode_label'
=>
'Mode de vérification des courriels'
,
'option_email_mode_normal'
=>
'Vérification normale de SPIP (respectant la norme RFC)'
,
'option_email_mode_5322'
=>
'Vérification la plus conforme aux standards disponibles'
,
'option_email_mode_normal'
=>
'Vérification normale de SPIP'
,
'option_email_mode_strict'
=>
'Vérification moins permissive'
,
'option_email_mode_strict'
=>
'Vérification moins permissive'
,
'option_entier_max_label'
=>
'Valeur maximum'
,
'option_entier_max_label'
=>
'Valeur maximum'
,
'option_entier_min_label'
=>
'Valeur minimum'
,
'option_entier_min_label'
=>
'Valeur minimum'
,
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
verifier/email.php
+
36
−
8
Voir le fichier @
e8c9063e
...
@@ -5,6 +5,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
...
@@ -5,6 +5,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
/**
/**
* Vérifie la validité d'une adresse de courriel.
* 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
*
*
* @param string $valeur La valeur à vérifier.
* @param string $valeur La valeur à vérifier.
* @param array $option Un éventuel tableau d'options.
* @param array $option Un éventuel tableau d'options.
...
@@ -20,17 +23,15 @@ function verifier_email_dist($valeur, $options=array()){
...
@@ -20,17 +23,15 @@ function verifier_email_dist($valeur, $options=array()){
}
}
// Choix du mode de verification de la syntaxe des courriels
// Choix du mode de verification de la syntaxe des courriels
if
(
!
$options
[
'mode'
]
or
!
in_array
(
$options
[
'mode'
],
array
(
'strict'
))){
if
(
!
$options
[
'mode'
]
or
!
in_array
(
$options
[
'mode'
],
array
(
'
normal'
,
'rfc5322'
,
'
strict'
))){
$mode
=
'normal'
;
$mode
=
'normal'
;
}
}
else
{
else
{
$mode
=
$options
[
'mode'
];
$mode
=
$options
[
'mode'
];
}
}
if
(
$mode
==
'normal'
)
$fonctions_disponibles
=
array
(
'normal'
=>
'email_valide'
,
'rfc5322'
=>
'verifier_email_5322'
,
'strict'
=>
'verifier_email_de_maniere_stricte'
);
$fonction_verif
=
'email_valide'
;
$fonction_verif
=
$fonctions_disponibles
[
$mode
];
else
$fonction_verif
=
'verifier_email_de_maniere_stricte'
;
if
(
!
$fonction_verif
(
$valeur
))
if
(
!
$fonction_verif
(
$valeur
))
return
_T
(
'verifier:erreur_email'
,
array
(
'email'
=>
echapper_tags
(
$valeur
)));
return
_T
(
'verifier:erreur_email'
,
array
(
'email'
=>
echapper_tags
(
$valeur
)));
...
@@ -42,11 +43,12 @@ function verifier_email_dist($valeur, $options=array()){
...
@@ -42,11 +43,12 @@ function verifier_email_dist($valeur, $options=array()){
* Changement de la RegExp d'origine
* Changement de la RegExp d'origine
*
*
* Respect de la RFC5322
* Respect de la RFC5322
*
* @link (phraseur détaillé ici : http://www.dominicsayers.com/isemail/)
* @link (phraseur détaillé ici : http://www.dominicsayers.com/isemail/)
* @param string $valeur La valeur à vérifier
* @param string $valeur La valeur à vérifier
* @return boolean Retourne true uniquement lorsque le mail est valide
* @return boolean Retourne true uniquement lorsque le mail est valide
*/
*/
function
verifier_email_
de_maniere_stricte
(
$valeur
){
function
verifier_email_
rfc5322
(
$valeur
){
// Si c'est un spammeur autant arreter tout de suite
// Si c'est un spammeur autant arreter tout de suite
if
(
preg_match
(
",[
\n\r
].*(MIME|multipart|Content-),i"
,
$valeur
))
{
if
(
preg_match
(
",[
\n\r
].*(MIME|multipart|Content-),i"
,
$valeur
))
{
spip_log
(
"Tentative d'injection de mail :
$valeur
"
);
spip_log
(
"Tentative d'injection de mail :
$valeur
"
);
...
@@ -61,8 +63,34 @@ function verifier_email_de_maniere_stricte($valeur){
...
@@ -61,8 +63,34 @@ function verifier_email_de_maniere_stricte($valeur){
}
}
/**
/**
* Vérifier que le courriel utilisé n'est pas
* Version basique du contrôle des mails
* déjà présent en base SPIP_AUTEURS
*
* Cette version impose des restrictions supplémentaires
* qui sont souvent utilisées pour des raison de simplification des adresses
* (ex. comptes utilisateurs lisibles, etc..)
*
* @param string $valeur La valeur à vérifier
* @return boolean Retourne true uniquement lorsque le mail est valide
*/
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
"
);
return
false
;
}
foreach
(
explode
(
','
,
$valeur
)
as
$adresse
)
{
// nettoyer certains formats
// "Marie Toto <Marie@toto.com>"
$adresse
=
trim
(
preg_replace
(
",^[^<>
\"
]*<([^<>
\"
]+)>$,i"
,
"
\\
1"
,
$v
));
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
;
}
/**
* Vérifier que le courriel à tester n'est pas
* déjà utilisé dans la table spip_auteurs
*
*
* @param string $valeur La valeur à vérifier
* @param string $valeur La valeur à vérifier
* @return boolean Retourne false lorsque le mail est déjà utilisé
* @return boolean Retourne false lorsque le mail est déjà utilisé
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
verifier/email.yaml
+
1
−
0
Voir le fichier @
e8c9063e
...
@@ -10,6 +10,7 @@ options:
...
@@ -10,6 +10,7 @@ options:
datas
:
datas
:
normal
:
'
<:verifier:option_email_mode_normal:>'
normal
:
'
<:verifier:option_email_mode_normal:>'
strict
:
'
<:verifier:option_email_mode_strict:>'
strict
:
'
<:verifier:option_email_mode_strict:>'
rfc5322
:
'
<:verifier:option_email_mode_rfc5322:>'
defaut
:
'
normal'
defaut
:
'
normal'
-
-
saisie
:
'
case'
saisie
:
'
case'
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter