复杂的IF ELSE声明

时间:2018-03-26 17:15:03

标签: vbscript asp-classic

我对经典的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
%>

1 个答案:

答案 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