【发布时间】:2015-03-18 20:15:43
【问题描述】:
我有 authenticate.cgi 脚本,它接收用户名/密码并验证它们。
如果它是有效的登录,我会通过发送一些参数(如开始日期/用户名等)将页面重定向到 myIndex.cgi,其中会向用户显示报告。
如果登录无效,我会重定向到上一页,以便重新输入用户名/密码。
当我重定向到 myIndex.cgi 时,url 会显示 url bar 中的所有参数。 有没有办法屏蔽它们,以便参数及其值不会显示在 url 中。
有办法吗?请告诉我。谢谢。
认证.cgi
#Redirect to login if invalid username/password or redirect to report page
if ( ( $username eq '' ) || ( $password eq '' ) )
{
#print "not defined\n";
$referrer = $ENV{HTTP_REFERER};
print $query->redirect($referrer);
}
else
{
$retStatus=verifyLogin($username,$password);
my $myUser = $username;
#Redirect to the caller
if($retStatus eq "98")
{
$referrer = "http://projects.pjkeary.net/inspections_done_report/myIndex.cgi?start=2014-10-01&end=2014-10-31&exclude_dt=1&myUser=$myUser";
}
else
{
$referrer = $ENV{HTTP_REFERER};
}
print $query->redirect($referrer);
}
$referrer = $ENV{HTTP_REFERER};
print $query->redirect($referrer);
【问题讨论】:
-
使用 POST 提交数据。
-
@Geohut — 在重定向中?!
-
我会重新组织您的代码以使用单个脚本作为入口点,然后根据需要路由到脚本的不同部分(因此您无需告诉浏览器请求完全不同的 URL)。 Catalyst 对此很有用,尽管我更倾向于 FastCGI 而不是普通的 CGI。
-
stackoverflow.com/questions/5576619/php-redirect-with-post-data 如果您不喜欢此方法,请考虑仅在单个页面上并对数据进行 Ajax 调用。同样的事情也适用于 perl。
-
@Quentin ---- 嗨,你能告诉我你将如何重组这段代码吗?