2010-03-26 52 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源代碼中的「隱藏」輸入字段中,請立即停止使用該腳本,並考慮將其託管在酸浴中的服務器;-)這對您的用戶(和您)有危險。 – 2010-03-26 14:39:26

回答

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'; 
相關問題