Как мне перенаправить пользователей в скрипте formmail? - PullRequest
0 голосов
/ 26 марта 2010

Итак, я использую базовый скрипт 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 ]

0 голосов
/ 25 апреля 2016

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';
0 голосов
/ 26 марта 2010

Может быть, вы можете отредактировать скрипт с подстановкой строки:

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

Или, возможно, посмотрите в сценарии, где происходит противоположная замена, и закомментируйте этот шаг.

...