Ticket #1046 (new bug)

Opened 6 months ago

Last modified 6 months ago

format de date et heure trop permissif

Reported by: foxmask Owned by:
Priority: normal Milestone:
Component: jelix Version: 1.1.4
Severity: normal Keywords:
Cc: Php version:
Review: Hosting Provider:
Blocked By: Documentation needed: no
Blocking:

Description

à plusieurs reprises (jDateTime/jDaoRecordBase etc..) j'ai aperçu que l'heure était vérifiée comme ceci

 /^(\d{2}:\d{2}:\d{2})?$/

ce qui permet aussi 99:99:99, donc si vous voulez, ceci permet d'identifier 23:59

 [01]?[0-9]|2[0-3]:[0-5][0-9]:[0-5][0-9]

cette regexp n'est pas de moi mais de Jeffrey Friedl auteur de "Maîtrise des expressions régulières" chez O'Reilly, dont elle est tirée (page 26) ;)

Il faudrait se pencher aussi sur celle de la date qui permet :

 9999-99-99

Change History

Changed 6 months ago by foxmask

pour la date :

ceci valide une date en vérifiant le nombre de jours par rapport au mois courant exception faite des années bissextiles

preg_match('/^(\d{4})-(((0?[1,3-9]|1[0-2])-([01][0-9]|2[0-9]|3[01]))|((0?2)-([01][0-9]|2[0-9])))?$/','2000-01-29',$matches);

ensuite on acheve la vérif de la date

// on check les dates dont les mois est different de fevrier
if ($matches[3]=='' and $matches[4]=='')
	return checkdate($matches[7],$matches[8],$matches[1]);
// on check les dates avec le mois de février
else
	return checkdate($matches[4],$matches[5],$matches[1]);
Note: See TracTickets for help on using tickets.