Eternius: Selbstprogrammierte Board-Software

Beitrag lesen

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.
0 49

Selbstprogrammierte Board-Software

Andavos
  • meinung
  1. -1
    Ludger
    1. 0
      Andavos
      1. 0
        Ludger
        1. 0
          Andavos
  2. 0
    sungirl2005
    1. 2
      Fabian St.
      1. 0
        sungirl2005
    2. 0
      Andavos
      1. 0
        sungirl2005
        1. 1
          Andavos
          1. 0
            sungirl2005
            1. 0
              Andavos
              1. 0
                sungirl2005
            2. 0
              Thomas J.S.
              1. 0
                Andavos
                1. 0
                  Thomas J.S.
              2. 0
                Dennis
          2. 0
            Fabian St.
  3. 4
    Eternius
    1. 0
      Andavos
      1. 0
        Dennis
        1. 0
          Andavos
          1. 0
            wahsaga
            1. 0
              Andavos
              1. 0
                wahsaga
                1. 0
                  Andavos
                  1. 1
                    Christian Kruse
              2. 0
                Christian Kruse
          2. 0
            Alexander Brock
      2. 2
        Christoph Zurnieden
        1. 0
          wahsaga
          1. 0
            Christoph Zurnieden
        2. 1
          Eternius
          1. 1
            Christoph Zurnieden
            1. 0
              Eternius
              1. 0
                Christoph Zurnieden
                1. 0
                  Eternius
                  1. 0
                    Eternius
                  2. 0
                    Christoph Zurnieden
                    1. 0
                      Eternius
                      1. 0
                        Christoph Zurnieden
                        1. 0
                          Eternius
      3. 0
        Christian Kruse
        1. 0
          Andavos
    2. 0
      Jeena Paradies
      1. 0
        Andavos
        1. 3
          Sven Rautenberg
    3. 0
      Andavos