2013-01-02 128 views
1

我認爲這很容易,但我無法得到這個工作。經典的ASP VBScript - 刷新頁面

我有一個「刪除」按鈕的窗體。它叫www.mypage.com/adm/ads.asp?del=12。 因此list.asp發現有一個del = 12的查詢字符串並刪除相應的項目。 刪除後我想刷新此頁面(類似Response.Redirect www.mypage.com/adm/ads.asp),以便查詢字符串del = 12消失。 我無法正常工作。

If (Request.QueryString("del").Count > 0) Then  
id = Request.QueryString("del") 
sql = "delete from Ads where ID = " & id & "" 
on error resume next 
conn.Execute sql 
If err<>0 then 
    Response.Write("Delete error!") 
Else    
    Response.Redirect http://www.mypage.com/adm/ads.asp  
    //Call opener.location.reload() 
End if 

頁面被重新載入,但del並不從查詢字符串中消失。

+2

請記住,這很容易受到SQL注入的影響。如果我通過'?del = 0或1 = 1',你的整個表格將被刪除。 –

+0

是的,你是對的。我會修改這個。不過,這是管理員面板,並不重要,因爲管理員可以刪除所有廣告。 – renathy

+0

考慮到您也使用GET請求來刪除,我還可以通過指向'www.yourpage.com/adm/ads.asp?del=12或1 = 1'的src'標籤將圖像添加到我自己的網站中如果您訪問我的網站,您的整個表格將被刪除。所以,即使只有你/管理員的東西,總是寫出正確的代碼。 –

回答

3

Response.Redirect的參數應該是一個字符串 - 你有什麼語法錯誤:

Response.Redirect http://www.mypage.com/adm/ads.asp 

應該是:

Response.Redirect "http://www.mypage.com/adm/ads.asp" 
2

爲了使通用的,惹原始URL可以而不是有這樣的代碼:

Response.Redirect(Request.ServerVariables("SCRIPT_NAME")) 

的SCRIPT_NAME服務器變量將返回相對PA無論頁面被調用的是什麼以及它所在的位置,都可以執行當前正在執行的腳本的第三行。