1

ColdFusion で大文字と小文字を区別するクエリを作成するにはどうすればよいですか? ユーザー名とパスワードで大文字と小文字を区別したい。これは私が持っているものです:

<cfquery datasource="myDataSource" name="qVerify">
    SELECT *
      FROM tblUsers
     WHERE userName = '#userName#' 
       AND password = '#password#'
</cfquery>
<cfif qVerify.RecordCount>
    <cfset session.allowin = "True" />
    <cfset session.ID = qVerify.ID />
    { "login" : "valid" }
<cfelse>
    { "login" : "invalid" }
</cfif>

そのため、ユーザー Dave (データベースにあるように) が dave としてサインインすると、無効になります...

4

2 に答える 2

2

これにより、列は大文字と小文字が区別されるように処理されますが、パスワードがプレーン テキストとして保存されるという問題を実際に修正する必要があります。

<!--- MS SQL Server ---> 
<cfquery datasource="myDataSource" name="qVerify">
SELECT *
FROM tblUsers
WHERE userName = <cfqueryparam cfsqltype="cf_sql_varchar" value="#userName#"> COLLATE SQL_Latin1_General_CP1_CS_A
AND password = <cfqueryparam cfsqltype="cf_sql_varchar" value="#password#"> COLLATE SQL_Latin1_General_CP1_CS_A
</cfquery>

(コメントからの更新)

正確な照合名はデータベースに依存します。MySQL の場合:

<!--- MySQL ---> 
<cfquery datasource="myDataSource" name="qVerify">
SELECT *
FROM tblUsers
WHERE userName = <cfqueryparam cfsqltype="cf_sql_varchar" value="#userName#"> COLLATE latin1_general_cs
AND password = <cfqueryparam cfsqltype="cf_sql_varchar" value="#password#"> COLLATE latin1_general_cs
</cfquery>

詳細については、charset/collat​​e のドキュメントを参照してください。

于 2013-08-30T03:59:47.377 に答える
1

クエリのフィールドを大文字と小文字を区別する型にキャストするか、大文字と小文字を区別するエンコードを使用します。

于 2013-08-30T03:43:52.863 に答える