如果其他陈述很复杂



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

但是,除非您有很多值可以比较,否则我认为以前比后者更容易理解。

如果要将任何cookies匹配productID_from_url,则要重定向到其他位置空饼干。

使用第一种方法和组合检查的示例:

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

最新更新