我对经典的ASP / VBScript不够熟悉。我有以下代码,完全符合我的需要。
以下代码检查我的3个不同的cookie是否为空,并将传入值插入第一个可用的cookie。如果所有这3个cookie都有值,那么脚本会重定向到某个页面。
正如我之前写的,这段代码工作正常,但我还需要做一些额外的工作:我还要检查IF中的传入值(字符串productID_from_url
)是否已存在于其中任何一个中cookies的值(因为我不想要重复的值),如果它存在,那么停止脚本并将用户重定向到某个页面。
我希望所有这些在一起而不会丢失以下代码的功能。 有人可以告诉我我必须做什么吗?
<%
If Request.Cookies("compena") = "" Then
Response.Cookies("compena")=productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
Else
If Request.Cookies("compdyo") = "" Then
Response.Cookies("compdyo")=productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
Else
If Request.Cookies("comptria") = "" Then
Response.Cookies("comptria")=productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
Else
Response.Redirect(url_epistrofis_apo_tixias)
End If
End If
End If
%>
答案 0 :(得分:1)
一种简化是使用If..ElseIf..Else
而不是嵌套的If..Else
构造:
If Request.Cookies("compena") = "" Then
Response.Cookies("compena") = productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
ElseIf Request.Cookies("compdyo") = "" Then
Response.Cookies("compdyo") = productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
ElseIf Request.Cookies("comptria") = "" Then
Response.Cookies("comptria") = productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
Else
Response.Redirect(url_epistrofis_apo_tixias)
End If
您还可以遍历要检查的Cookie
redirected = False
For Each cookie in Array("compena", "compdyo", "comptria")
If Request.Cookies(cookie) = "" Then
Response.Cookies(cookie) = productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
redirected = True
Exit For
End If
Next
If Not redirected Then Response.Redirect(url_epistrofis_apo_tixias)
但除非你有很多值要比较,否则我认为前者比后者更容易理解。
如果您希望重定向到其他位置,如果任何Cookie与productID_from_url
匹配,则代码总体上会变得更复杂,因为您需要额外的条件或额外的循环来检查之前的 em>检查空饼干。
使用第一种方法和组合检查的示例:
If Request.Cookies("compena") = productID_from_url Or Request.Cookies("compdyo") = productID_from_url Or Request.Cookies("comptria") = productID_from_url Then
Response.Redirect(other_redirect_url)
ElseIf Request.Cookies("compena") = "" Then
Response.Cookies("compena") = productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
ElseIf Request.Cookies("compdyo") = "" Then
Response.Cookies("compdyo") = productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
ElseIf Request.Cookies("comptria") = "" Then
Response.Cookies("comptria") = productID_from_url
Response.Redirect(url_epistrofis_epi_tixias)
Else
Response.Redirect(url_epistrofis_apo_tixias)
End If