管理杂谈OA答疑ERP答疑教程搜索

在asp页面中,是否可以用request("sn")涵盖所有情形:request.cookies("sn")、request.form("sn")、request.querystring("sn")?


:在asp页面中,是否可以用request("sn")涵盖所有情形:request.cookies("sn")、request.form("sn")、request.querystring("sn")?

在ASP页面中,虽然使用 request("sn") 这一语法在功能上能够尝试获取变量值,但它并不能安全、可靠地涵盖所有情形(如Cookies、Form、QueryString)。这种做法依赖于ASP Request对象内部的搜索顺序,并且在某些情况下会导致非预期的结果,甚至引发安全或逻辑错误。

1. Request对象在不指定集合时的搜索顺序

当你使用 request("变量名") 这种不带集合名称的写法时,ASP的Request对象会按照一个固定的顺序在几个集合中进行搜索。根据多个技术资料,这个从前到后的顺序依次是:QueryString, Form, 最后是ServerVariables。Request对象会按照这个顺序依次检查这些集合,一旦在某个集合中找到匹配的变量名,就会立即返回其值,并停止后续集合的搜索。

2. “涵盖所有情形”可能带来的问题

正是基于上述搜索顺序,使用 request("sn") 来试图“一劳永逸”地获取数据,会产生以下几个关键问题:

结论与建议

因此,request("sn") 并不能可靠地替代 request.cookies("sn")request.form("sn") 和 request.querystring("sn")

为了编写出健壮、清晰且高效的ASP代码,强烈建议:

  1. 始终明确指定集合名称。根据数据的预期来源,使用对应的 request.formrequest.querystring 或 request.cookies。这是最规范和推荐的做法。
  2. 保留通用写法的特定场景request("") 的写法可能仅在极少数情况下,当你确实不关心变量来源,或者确信变量名在所有可能来源中唯一时,才可考虑使用。但在绝大多数业务逻辑中,明确来源是至关重要的。

总而言之,虽然语法上行得通,但从工程实践的角度,不推荐使用 request("sn") 来试图涵盖所有情形。明确的数据来源是编写可靠程序的基础。


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn