Coldfusion 8 делает и CFIf и заявление CFElse - PullRequest
2 голосов
/ 08 марта 2012

Я делаю приложение для регистрации пользователей на сайте 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 и добавляет пользователя, потому что у меня есть прямой доступ к базе данных, и после попытки зарегистрировать пользователя я удаляю ее и пытаюсь снова (и замечаю, что когда я пытаюсь ее создать, он делает создать его), так что я знаю, как это проходит через cfquery для встраивания. Я изменил cflocation для перенаправления на google, но это не так, и я также показываю на странице, вошел ли я в систему, поэтому я знаю, что он пропускает к cfelse перед cflogin.

1 Ответ

3 голосов
/ 08 марта 2012

Я бы предложил временно закомментировать все ваши cflocations и посмотреть, будет ли ваше поведение таким же.Возможно, ваш процесс входа в систему не завершится до того, как начнется ваша cflocation.

Или, возможно, ваша страница отправляется правильно в первый раз, а затем во второй раз попадает в предложение else.

В вашем коде нет ничего, что явно не соответствует мне.

...