gpt4 book ai didi

perl - 如何使用 Perl 将客户端从一个 CGI 页面重定向到另一个页面?

转载 作者:行者123 更新时间:2023-12-04 13:05:35 24 4
gpt4 key购买 nike

我的问题如下。密码被识别为有效后,我需要重定向到 main.cgi但我收到的消息是:

Status: 302 Found
Location: http://localhost/cgi-bin/Main.cgi

我知道这样做的原因是我在 Content-Type 之后写了这个声明所以它将其作为 HTML 并将其打印在屏幕上。我是 Perl 的新手。任何人都可以帮我找到解决方案并使我的代码按照我想要的方式工作吗?或者请为此建议我一些替代代码,或任何可能对我有帮助的链接。
#!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

最佳答案

重定向:

print redirect(-url=>'http://localhost/cgi-bin/Main.cgi');

仅当它是发送回浏览器的第一件事时才有效。因为你先发送这个:
print "Content-Type: text/html\n\n";

重定向被视为内容。

(重定向必须是您发送的第一件事,因为它属于响应的 HTTP header 。通过打印您的 \n\n,您明确地终止了这些 header 。之后,您发送的任何内容都是内容,并将由浏览器。)

关于perl - 如何使用 Perl 将客户端从一个 CGI 页面重定向到另一个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com