0

所以我使用了一个基本的formmail脚本。在脚本中,我使用了重定向变量。重定向的值类似于:

 http://www.mysite.com/NewOLS_GCUK_EN/bling.aspx?BC=GCUK&IBC=CSEE&SIBC=CSEE

但是,当重定向操作发生时,URL 在浏览器中显示为:

 http://www.mysite.com/NewOLS_GCUK_EN/bling.aspx?BC=GCUK&IBC=CSEE&SIBC=CSEE

你可以看到&字符被替换为&

有没有什么办法解决这一问题?

4

2 回答 2

0

也许您可以使用字符串替换来编辑脚本:

$myRedirectURL =~ s/\&/\&/g;

或者也许查看发生相反替换的脚本,并注释掉该步骤。

于 2010-03-26T13:54:06.857 回答
0

HTML::Entities的 decode_entities 可以为您解码:

$redirect_target = decode_entities($redirect_target);

但是将目标 URL 作为 HTTP 参数(例如隐藏的表单字段)传递是危险的(正如@Sinan Ünür 在评论中已经说过的那样)。更好地将目标 URL 存储在您的脚本中,并从表单中传递一个选择器:

if ($selector eq 'home') { $target_url = 'http://www.foo.bar/'; }
elsif ($selector eq 'bling') { $target_url = 'http://www.foo.bar/NewOLS_GCUK_EN/bling.aspx'; }
else {
    $target_url = 'http://www.foo.bar/default.html'; # Fallback/default value
}

使用哈希会更短:

my %targets = {
    home  => 'http://www.foo.bar/',
    bling => '/NewOLS_GCUK_EN/bling.aspx',
};
$target_url = $targets{$selector} || '/default_feedback_thanks.html';
于 2016-04-25T12:33:54.033 回答