Coldfusion 8同时执行CFIf和CFElse语句

时间:2012-03-07 22:47:54

标签: coldfusion coldfusion-8

我正在为ecomerce网站制作一个用户注册应用程序,但我遇到了一个非常奇怪的问题。当我运行此代码时:

<cfif isValid("email", form.email)>
    <cfquery name="check_user" datasource="#request.dsn#">
        SELECT var_username, var_password
        FROM tbl_users
        WHERE var_username = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#FORM.EMAIL#"> 
        AND var_password = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#FORM.PASSWORD#"> 
    </cfquery>
    <cfif check_user.recordcount LT 1>
        <cfquery datasource="#request.dsn#" name="insertuser">
            INSERT INTO tbl_users (var_username, var_password) 
            VALUES
            (<cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#FORM.EMAIL#">,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#FORM.PASSWORD#">)
        </cfquery>


        <cflogin idletimeout="1800">
        <cfloginuser 
                name = "#FORM.email#"
                password ="#FORM.password#"
                roles = "0">

        </cflogin>
        <cflocation addtoken="No" url="#request.secure_url#checkout.cfm">
    <cfelse>
        <cfset client.error_message = "Your Email Address is already registered.">
        <cflocation addtoken="No" url="#request.site_url#New-Account.html">
    </cfif>

<cfelse>
    <cfset client.error_message = "Your Email Address is not Valid.">
    <cflocation addtoken="No" url="#request.site_url#New-Account.html">

</cfif>

这段代码应该做的是检查电子邮件是否已经存在于数据库中,如果不是,则将电子邮件/密码添加到数据库中,然后将其登录并将其移至安全结帐站点。 代码实际上在做什么,但却完全不同。它正在检查它们是否在数据库中,然后添加它们,然而,在将它们添加到数据库之后,它会跳过登录和cflocation并转到cfelse,返回到原始页面“New-Account”并显示client.error_message。

代码如何运行cfif check_user.recordcount,然后通过它跳转到cfelse?

我已经采取了一些措施来尝试缩小发生的事情 -

它通过了check_user语句并添加了一个用户,因为我可以直接访问数据库,在尝试注册用户之后,我将其删除并再试一次(注意当我尝试创建它时,它会创建它),所以我知道它超过了insertuser cfquery。我已经更改了cflocation以重定向到谷歌,但它没有,我也在页面上显示我是否登录,所以我知道它是在cflogin之前跳过cfelse。

1 个答案:

答案 0 :(得分:3)

我建议暂时评论你所有的cflocations,看看你的行为是否相同。可能是您的登录过程未在cflocation开始之前完成。

或者,可能是您的页面第一次正确提交给自己,然后第二次点击else子句。

您的代码中没有任何内容对我来说显然是错误的。