0


0

formmailスクリプトでユーザーをリダイレクトするにはどうすればよいですか?

そこで、基本的な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

「&」文字が「&」に置き換えられていることがわかります

これを修正する方法はありますか?

2 Answer


0


たぶん、文字列置換を使用してスクリプトを編集できます。

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

または、逆の置換が行われているスクリプトを見て、そのステップをコメントアウトしてください。


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';