【问题标题】:Classic ASP VBScript - refresh given page经典 ASP VBScript - 刷新给定页面
【发布时间】:2013-01-02 11:21:30
【问题描述】:

我认为这很容易,但我无法让它发挥作用。

我有一个带有“删除”按钮的表单。它调用 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 并未从查询字符串中消失。

【问题讨论】:

  • 请记住,这很容易受到 SQL 注入的攻击。如果我通过?del=0 OR 1=1,您的整个表格将被删除。
  • 是的,你是对的。我会修改这个。但是,这是管理面板,并不那么重要,因为管理员可以删除所有广告。
  • 考虑到您还使用 GET 请求删除,我还可以将图像添加到我自己的站点,其中 src 标记指向 www.yourpage.com/adm/ads.asp?del=12 or 1=1,如果您访问我的站点,您的整个表格将被你删除。因此,即使某些东西只适合您/管理员,也要始终编写正确的代码。

标签: asp-classic


【解决方案1】:

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 服务器变量将返回当前执行脚本的相对路径,无论页面被调用什么以及它位于何处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多