Your code dosen't handle urls that use ; as the parameter separator, and it dosen't properly handle multiple values for one parameter name.
It also presents a huge backdoor, as it will allow any attacker to overwrite any global scalar variable in your script by sending a carefully crafted query against it. You don't show the tokenise subroutine, but I see that using a parameter name of {main::foo} will set/overwrite the global variable $main::foo.
Furthermore, any query with the string *amp* in it (for example in a search) will mutilate the whole query string - this must at least be documented, and is poor practice. The same goes for *plus*, and there even is no reason for that.
There is a reason why people use CGI.pm or its lighter cousin, CGI::Lite, as it presents a safe and relatively foolproof way of decoding script parameters.
perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The $d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider ($c = $d->accept())->get_request(); $c->send_response( new #in the HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web
In reply to Re: Re: the search string and me
by Corion
in thread the search string and me
by deveyus
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |