I would try:
use DBI;
use CGI qw /:standard/;
use CGI::Cookie;
use warnings;
if (! defined $cookies{'authorized'})
{
if (param)
{
my $username = param('username');
my $password = param('password');
my $dbh = DBI->connect("dbi:SQLite:dbname=/path/to/dat
+abase.db","","");
my $sth = $dbh->prepare('select * from useers where
username = ? and password = ?'
+);
$sth->execute($username,$password);
my @row = $sth->fetch_array;
if (@row)
{
#login success, set authorized cookie
my $cookie = CGI::Cookie->new(
-name=>'authorized',
-value=>1,
-path=>'/default/url');
} else {
print_login_form();
exit;
}
} else {
print_login_form();
exit;
}
}
#once that specific cookie is set, i redirect
print redirect('search.cgi');
exit;
sub print_login_form {
print header,start_html('Login'),h1('Login'),
start_form,
"Username: ",textfield('username'),br,
"Password: ",password_field('password'),br,
submit("Enter");
end_form, end_html;
}