My problem is as follows. After the password is valid, I need to redirect to main.cgi , but I get a message like:
Status: 302 Found Location: http:
I know the reason is that I write this statement after the Content-Type , so it takes it as HTML and prints it on the screen. I am new to Perl. Can someone help me find a solution for this and make my code work the way I want it? Or please offer me an alternative code for this or any link that might help me.
#!C:\perl\bin\perl.exe use strict; use CGI qw(:standard); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use DBI; my $q = new CGI; print "Content-Type: text/html\n\n"; if ($q->param("Login")) { my $Password = param('Password'); if (!$Password) { print "Please Enter the Password"; } else { my $dbh = DBI->connect( "dbi:SQLite:DEVICE.db", "", "", { RaiseError => 1, AutoCommit => 1 } ); my $sth = $dbh->prepare("select * from Settings where Password = ?"); $sth->execute($Password); if (my $pass = $sth->fetchrow_hashref) { print redirect(-url => 'http://localhost/cgi-bin/Main.cgi'); } else { print "Invalid Password"; } $dbh->disconnect; } } print <<END1; <HTML> <HEAD> <TITLE> </TITLE> </HEAD> <body> <form NAME="login" METHOD="POST"> <input type="hidden" name="submit" value="Submit"> <TABLE align="center" bgcolor=#B0C4DE> <TR> <TD> Enter The Password And Click Login</TD> </TR> <TR></TR> <TR></TR> <TR></TR> <TR></TR> <TR></TR> <TR> <TD><b>PASSWORD</b> :<input type="password" name="Password" size="20" maxlength="15" /></TD> </TR> <TR></TR> <TR></TR> <TR></TR> <TR></TR> <TR></TR> <TR> <TR> <TD align="center" colspan="2"> <input type="submit" name="Login" value="Login"> <input type="reset" name="submit" value="Cancel"> </TD> </TR> </TABLE> </FORM> </BODY> </HTML> END1
perl cgi
sonya
source share