in reply to Filtering CGI Input
Several things are wrong. /0-9/ will match '0-9' (exactly). And since it's a negated match, basically you are accepting all input unless it contains the literal text '0-9'.
You need a character class.
if( $sid =~ /^[^0-9]$/ ) { # exit here...... }
The above code states if there are any characters in the string that are not numbers 0 through 9, exit.
It might actually be better to do it this way though:
if( $sid !~ m/^([0-9]{1,5})$/ ) { # exit } else { $input = $1; }
...or better yet...
if( $sid =~ m/^([0-9]{1,5})$/ ) { $input = $1; } else { # exit }
I think negated matches ( the !~ operator ) are usually just a way of adding confusion, and should be avoided unless absolutely necessary.
Dave
|
|---|