diff --git a/ecrire/lang/spip_fr.php b/ecrire/lang/spip_fr.php index dadf5d12e616a5c2d7d53267ba13195c161a19bb..0fc418cf93d694629b904d2732d85379f6070300 100644 --- a/ecrire/lang/spip_fr.php +++ b/ecrire/lang/spip_fr.php @@ -288,6 +288,8 @@ le site "@nom_site_spip@" (@adresse_login@) :', 'form_prop_non_enregistre' => 'Votre proposition n’a pas été enregistrée.', 'form_prop_sujet' => 'Sujet', 'form_prop_url_site' => 'Adresse URL du site', + 'format_date_incorrecte' => 'La date ou son format est incorrect', + 'format_heure_incorrecte' => 'L’heure ou son format est incorrect', 'forum_non_inscrit' => 'Vous n’êtes pas inscrit, ou l’adresse ou le mot de passe sont erronés.', 'forum_par_auteur' => 'par @auteur@', 'forum_titre_erreur' => 'Erreur...', diff --git a/prive/formulaires/dater.php b/prive/formulaires/dater.php index 8e44e55a420c6fbf173fdcf748ac8dbd60bc5575..2aa1e40e24751bec6ba79406102eab7f9cc5c1a3 100644 --- a/prive/formulaires/dater.php +++ b/prive/formulaires/dater.php @@ -318,11 +318,11 @@ function formulaires_dater_traiter_dist($objet, $id_objet, $retour = '', $option } /** - * Récupérer annee,mois,jour sur la date saisie + * Récupérer annee, mois, jour sur la date saisie * * @param string $post * @param string $quoi - * @return array + * @return array|string Chaîne vide si date invalide, tableau (année, mois, jour) sinon. */ function dater_recuperer_date_saisie($post, $quoi = 'date') { if (!preg_match('#^(?:(?:([0-9]{1,2})[/-])?([0-9]{1,2})[/-])?([0-9]{4}|[0-9]{1,2})#', $post, $regs)) { @@ -335,13 +335,13 @@ function dater_recuperer_date_saisie($post, $quoi = 'date') { return array($regs[3], $regs[2], $regs[1]); } else { - $t = mktime(0, 0, 0, $regs[2], $regs[1], $regs[3]); - // si la date n'est pas valide selon mktime, la refuser - if (!$t) { - return ''; + if ( + checkdate(intval($regs[2]), intval($regs[1]), intval($regs[3])) + and $t = mktime(0, 0, 0, $regs[2], $regs[1], $regs[3]) + ) { + return array(date('Y', $t), date('m', $t), date('d', $t)); } - - return array(date('Y', $t), date('m', $t), date('d', $t)); + return ''; } } @@ -355,6 +355,9 @@ function dater_recuperer_heure_saisie($post) { if (!preg_match('#([0-9]{1,2})(?:[h:](?:([0-9]{1,2}))?)?#', $post, $regs)) { return ''; } + if ($regs[1] >= 23 or $regs[2] >= 59) { + return ''; + } return array($regs[1], $regs[2]); }