木曜日, 3月 01, 2007

Data::FormValidator

#!/usr/bin/perl -w
use strict;
$++;
use CGI; use CGI::Carp qw( fatalsToBrowser );
use Data::FormValidator; use HTML::Template;
use Data::Dumper;
my ( $cgi, $dfv_profile, $results, $template );
$cgi = new CGI;
print $cgi->header;
$dfv_profile = {

'required' => [
qw( fname lname emails password1 password2 postal1 postal2 )
],
constraint_methods => {
postal1 => sub { my ($dfvr, $value) = @_; return ($value =~ m/^\d{3}$/o); },
postal2 => sub { my ($dfvr, $value) = @_; return ($value =~ m/^\d{4}$/o); },
},
};



$results = Data::FormValidator->check( $cgi, $dfv_profile );my $template1 = 'index.html';
if( $ENV{'REQUEST_METHOD'} eq "POST" ){ $template1 = 'temp.html'; }
$template = HTML::Template->new( 'filename' => $template1, 'die_on_bad_params' => 0, );

if ( $results->has_invalid or $results->has_missing ) {
# something's wrong, which you can
# access what exactly from the
# $results object
my $res_dump = Dumper( $results );
$template->param( 'some_errors' => 1, 'results' => $res_dump, );
if ( $results->has_invalid ) {
foreach my $f ( $results->invalid ) {
$template->param($f =>$f);
}

}

} else {
# the user provided complete and valid
# data ... it's cool to proceed
}
print $template->output;

ラベル: