复杂的 IF ELSE 语句
Complicated IF ELSE statement
我对经典还不够熟悉ASP/VBScript。我有以下代码,可以完美满足我的需求。
下面的代码正在检查我的 3 个不同的 cookie 是否为空,并将传入值插入第一个可用的值。如果所有这 3 个 cookie 都有值,那么脚本将重定向到某个页面。
正如我之前所写,这段代码工作正常,但我需要做一些额外的工作:我还想检查我的传入值(即字符串 productID_from_url
)是否已经存在于任何这 3 个 cookie 的值(因为我不想要重复的值),如果它存在,则停止脚本并将用户重定向到某个页面。
我希望将它们全部放在一起而不丢失下面代码的功能。
有人可以告诉我我必须做什么吗?
<%
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
%>
一种简化方法是使用 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
如果您想重定向到其他位置,则代码总体上会变得更加复杂,因为您需要额外的条件或额外的循环来检查 在 检查空 cookie 之前。
使用第一种方法结合检查的示例:
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
我对经典还不够熟悉ASP/VBScript。我有以下代码,可以完美满足我的需求。
下面的代码正在检查我的 3 个不同的 cookie 是否为空,并将传入值插入第一个可用的值。如果所有这 3 个 cookie 都有值,那么脚本将重定向到某个页面。
正如我之前所写,这段代码工作正常,但我需要做一些额外的工作:我还想检查我的传入值(即字符串 productID_from_url
)是否已经存在于任何这 3 个 cookie 的值(因为我不想要重复的值),如果它存在,则停止脚本并将用户重定向到某个页面。
我希望将它们全部放在一起而不丢失下面代码的功能。 有人可以告诉我我必须做什么吗?
<%
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
%>
一种简化方法是使用 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
如果您想重定向到其他位置,则代码总体上会变得更加复杂,因为您需要额外的条件或额外的循环来检查 在 检查空 cookie 之前。
使用第一种方法结合检查的示例:
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