2009-09-30 7 views
2

Je crée un petit script de création de rapports dans Perl CGI. Je veux avoir la date de début/fin pour filtrer les événements sur le rapport. Alors maintenant, je me demande comment valider l'entrée de façon simple, Perl.Comment valider les dates dans un script CGI Perl?

La façon dont je produis la forme avec ces champs est:

print textfield({-name=>'start_date', -value=>$start_date}); 
    print textfield({-name=>'end_date', -value=>$end_date}); 

Ensuite, il va à la requête de base de données.

Existe-t-il un moyen simple, en Perl-ish, de valider ces dates? Non seulement avoir le bon nombre de caractères, comme c'est assez simple via une expression rationnelle, mais je voudrais signaler une erreur si l'utilisateur entre 29.02.1999 ou plus.

Répondre

0

FormFu semble être la bibliothèque populaire pour la gestion des formulaires en Perl de nos jours. Je crois qu'il remplace le code de génération HTML CGI, mais il est assez puissant.

Il inclut un tas de code pour valider les types de données communs, y compris dates.

0

Vous pouvez calculer des dates en Perl avec Time::Local, qui peut être configuré pour accepter des heures non valides et calculer la date correcte (par exemple le 32ème jour d'un mois) ou vérifier les dates et rejeter les dates non valides.

1

Je vais aller de l'avant et devenir fou, mais ce que j'aime faire, c'est utiliser Time::Local, et retourner le temps à l'époque, puis, quand c'est un bon entier propre, vous pouvez imposer tout sorte de contrôle de la santé mentale que vous aimez.

0

Je choisis presque toujours de convertir quelque chose comme ça en objet DateTime. Et j'utiliser quelque chose comme DateTimeX::Easy pour aider à faciliter le processus:

use DateTimeX::Easy; 

my $start_date = DateTimeX::Easy->new('30th Oct 2009'); 
my $from_date = DateTimeX::Easy->new('today'); 

say $start_date->dmy; 
say $from_date->dmy; 

# => 30-10-2009 
# => 01-10-2009 

La seule réserve est que DateTime et ses modules associés sont un peu lourdes sur la mémoire qui est quelque chose que vous pouvez garder un oeil lors de l'utilisation dans CGI.

/I3az/

Questions connexes