Hai,
#!/usr/bin/perl
use strict;
package AssertVars;
{
use CGI::Lite;
my $dbg=1;
my $FATAL=0;
my $VALID_NAME='[^0-9a-zA-Z_]';
my $BOUNDARY=1;
my %REGS;
####regs
$REGS{'b'}='[^0-1]'; #bool
$REGS{'i'}='[^0-9]'; #int
###/regs
sub spawn{
warn ('spawn') if $dbg;
my $c=shift;
my $self={};
$self->{cgi}=new CGI::Lite;
bless ($self,$c);
return (defined $self->{cgi})?$self:undef;
}
sub get_fd
{
my $self=shift;
warn('get_fd') if $dbg;
my %_fd=$self->{cgi}->parse_form_data;
foreach (keys(%_fd))
{
if ($self->is_valid_name($_))
{
#nix array
if(ref($_fd{$_})){$_fd{$_}=$_fd{$_}[0];}
my $chk=$self->is_valid_value($_,$_fd{$_});
if (not defined $chk)
{
die if $FATAL;
warn(' value is not valid') if $dbg;
delete $_fd{$_};
}
else{
warn(' var passed: '.$_);
}
}
else
{
die if $FATAL;
warn(' name is not valid') if $dbg;
delete $_fd{$_};
}
}
return \%_fd;
}
sub is_valid_value
{
my $self=shift;
my $n=shift;
my $v=shift;
my $v_id=substr($n,0,$BOUNDARY);
if (defined $n && defined $v_id && defined $REGS{$v_id})
{
return ($v=~/$REGS{$v_id}/)?undef:1;
}
else
{
return undef;
}
}
sub is_valid_name{
shift and return (shift =~/$VALID_NAME/)?0:1;
}
}
#initialisiere nötiges System
print "Content-type: text/html\n\n";
my $a=spawn AssertVars();
my $fd=$a->get_fd;
use Data::Dumper;
print Dumper($fd);
#rufe sonstiges modul/plugin/sub auf, bzw beginne die eigentliche arbeit
Eine einfache Version die nur anhand von (einfachen) regulären ausdrücken den inhalt prüft.
Es (sollte) funktionieren. Kannst es gerne ausprobieren und dir angucken was es macht.
gruss
--
no strict;
no warnings;
79.78 cups of Coffee (Brewed) + Me = Death
Kalorien sind winzig kleine nachtaktive Tiere, die unbeobachtet menschliche Kleidung enger nähen.
no strict;
no warnings;
79.78 cups of Coffee (Brewed) + Me = Death
Kalorien sind winzig kleine nachtaktive Tiere, die unbeobachtet menschliche Kleidung enger nähen.