2010-03-26 1 views
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

@Elliot Где указан это Перенаправление URL? Если он находится в «скрытом» поле ввода в источнике HTML, немедленно прекратите использовать этот скрипт и подумайте о том, чтобы разместить сервер, на котором он был размещен в кислотной ванне ;-) Это опасно для ваших пользователей (и для вас). –

ответ

0

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

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

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

0

HTML::Entities «s 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'; 

 Смежные вопросы

  • Нет связанных вопросов^_^