2012-03-07 9 views
2

私は電子商取引サイト用のユーザー登録アプリケーションを作成していますが、私は非常に奇妙な問題に遭遇しました。私はこのコードを実行すると:このコードが行うことになっている何CFIfとCFElseの両方の文を実行するColdfusion 8

<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文を渡し取得し、ユーザーを追加していただきましたhappening-

試してみて、絞り込むことが行われてきた

物事それを作り直してみてください(作成しようとすると作成するときに作成されることに注意してください)。私はcflocationをgoogleにリダイレクトするように変更しましたが、それはできません。また、ログインしているかどうかにかかわらずページに表示されるので、cfloginの前にcfelseにスキップしています。

+0

あなたはcheckout.cfmにリダイレクトされていますか? – DG3

+0

いいえ、このcfCaseでは、私はチェックアウトにリダイレクトされませんが、ページにある他のcfCase(ゲストとしてのIEチェックアウト、サインインとチェックアウト)では、これらの両方がスムーズに動作し、checkout.cfmに渡されます。 –

答えて

3

私はすべてのあなたのcflocationsを一時的にコメントし、あなたの行動が同じかどうかを確認することをお勧めします。 cflocationが開始される前にログイン処理が完了していない可能性があります。

また、ページが最初に正しく送信され、2回目にelse節にヒットすることもあります。

あなたのコードには明らかに間違っていることは何もありません。

+0

これは私にとっても最も犯しやすい原因のように聞こえる。コードは私に似ています。 –

+0

合意。私はそれが問題であるこのコードだとは思っていません。それは、このページ(および「新しいアカウント」ページ)に行き交うものです。予期しないHTTPリダイレクトが起こったようなことを確認しましたか? –

+0

私はCFLocationsを取り出しましたが、cfLoginを残しました。まだログインしていませんでしたが、電子メールをデータベースに追加します。その後、CfLoginを取り出してCFLocationを終了しましたが、電子メールは追加されますが、cfLocationは変更されません。また、そのコードは、隠されたフォームの値が送信されない限り実行されないCFCaseにラップされているので、コードが2回目にヒットする可能性はないと思います。 –

関連する問題