From 8e2ba83ab65d5dd9ccd888d610ed16fc29d8c9a4 Mon Sep 17 00:00:00 2001
From: "dwojylac@free.fr" <>
Date: Mon, 25 Oct 2010 20:13:35 +0000
Subject: [PATCH] =?UTF-8?q?On=20affine=20la=20v=C3=A9rification=20des=20da?=
 =?UTF-8?q?tes=20et=20leur=20validation=20en=20utilisant=20checkdate.=20Di?=
 =?UTF-8?q?stinction=20dans=20les=20messages=20d'erreur=20entre=20une=20er?=
 =?UTF-8?q?reur=20de=20format=20et=20une=20date=20non=20valide.=20Mise=20?=
 =?UTF-8?q?=C3=A0=20jour=20du=20fichier=20de=20tests=20en=20cons=C3=A9quen?=
 =?UTF-8?q?ce?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lang/verifier_ca.php | 3 ++-
 lang/verifier_de.php | 3 ++-
 lang/verifier_en.php | 3 ++-
 lang/verifier_fr.php | 3 ++-
 test/verifier.html   | 6 ++++++
 verifier/date.php    | 6 ++++--
 6 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/lang/verifier_ca.php b/lang/verifier_ca.php
index 2502fe8..6969ee2 100644
--- a/lang/verifier_ca.php
+++ b/lang/verifier_ca.php
@@ -8,7 +8,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
 	// E
-	'erreur_date' => 'El format de la data no &eacute;s correcte.',
+	'erreur_date' => 'La data no &eacute;s correcte.',
+	'erreur_date_format' => 'El format de la data no &eacute;s correcte.',
 	'erreur_email' => 'L\'adre&ccedil;a de correu electr&ograve;nic <em>@email@</em> no t&eacute; un format v&agrave;lid.',
 	'erreur_email_nondispo' => 'L\'adre&ccedil;a de correu electr&ograve;nic <em>@email@</em> ja s\'utilitza.',
 	'erreur_entier' => 'El valor ha de ser un nombre enter.',
diff --git a/lang/verifier_de.php b/lang/verifier_de.php
index 0493b2a..7e6b0b0 100644
--- a/lang/verifier_de.php
+++ b/lang/verifier_de.php
@@ -8,7 +8,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
 	// E
-	'erreur_date' => 'Fromat des Datums ung&uuml;ltig',
+	'erreur_date' => 'Das Datum ist nicht g&uuml;ltig',
+	'erreur_date_format' => 'Format des Datums ung&uuml;ltig',
 	'erreur_email' => 'Die Mailadresse  <em>@email@</em> hat einen Syntaxfehler.',
 	'erreur_email_nondispo' => 'Die Mailadresse <em>@email@</em>  wird bereits verwendet.',
 	'erreur_entier' => 'Der Wert mu&szlig; eine ganze Zahl sein.',
diff --git a/lang/verifier_en.php b/lang/verifier_en.php
index c307ce5..8f10f0e 100644
--- a/lang/verifier_en.php
+++ b/lang/verifier_en.php
@@ -8,7 +8,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
 	// E
-	'erreur_date' => 'The date format is invalid.',
+	'erreur_date' => 'The date is invalid.',
+	'erreur_date_format' => 'The date format is invalid.',
 	'erreur_email' => 'The email address <em>@email@</em> is not correctly formatted.',
 	'erreur_email_nondispo' => 'The email address <em>@email@</em> has already been used.',
 	'erreur_entier' => 'The value must be an integer.',
diff --git a/lang/verifier_fr.php b/lang/verifier_fr.php
index 165ed93..3652e55 100644
--- a/lang/verifier_fr.php
+++ b/lang/verifier_fr.php
@@ -6,7 +6,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
 	// E
-	'erreur_date' => 'Le format de la date n\'est pas accept&eacute;.',
+	'erreur_date' => 'La date n\'est pas valide.',
+	'erreur_date_format' => 'Le format de la date n\'est pas accept&eacute;.',
 	'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.',
diff --git a/test/verifier.html b/test/verifier.html
index e1d39e5..60dd033 100644
--- a/test/verifier.html
+++ b/test/verifier.html
@@ -140,11 +140,17 @@ var_dump($verifier($siret_non_valide, 'siren_siret',array('mode'=>'siret')));
 <?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>
 
diff --git a/verifier/date.php b/verifier/date.php
index 65f5942..0957b90 100644
--- a/verifier/date.php
+++ b/verifier/date.php
@@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
  */
 
 function verifier_date_dist($valeur, $options=array()){
-	$erreur = _T('verifier:erreur_date');
+	$erreur = _T('verifier:erreur_date_format');
 	$ok = '';
 	// On tolère différents séparateurs
 	$valeur = preg_replace("#\.|/| #i",'-',$valeur);
@@ -24,7 +24,9 @@ function verifier_date_dist($valeur, $options=array()){
 	if(!preg_match('#^[0-9]{2}-[0-9]{2}-[0-9]{4}$#',$valeur)) return $erreur;
 	// On vérifie vite fait que les dates existent, genre le 32 pour un jour NON, (mais on pourrait aller plus loin et vérifier en fonction du mois)
 	list($jour,$mois,$annee) = explode('-',$valeur);
-	if(($jour > 31)|| ($jour < 1) || ($mois > 12) || ($mois < 1) || ($annee < 1800)) return $erreur; // 1800, je crois qu'avant les gens ne sont plus vivants °_°
+	// validité de la date
+	$erreur = _T('verifier:erreur_date');
+	if (!checkdate($mois, $jour, $annee)) return $erreur;
 	
 	return $ok;
 }
-- 
GitLab