2012-05-10 12 views
0

私は、テーブル "users"のusername =#session.username#のテーブルから "welcome"という行を選択するCFコードを作成しようとしています。CF(If..headerlocation)?

「歓迎」= 1であれば、私は、私はどのようにこれが可能になり、CFで新しいです、それは

を/me/index.cfmするようにユーザーに指示します。

+0

あなたのタイトルにヘッダーが記載されているので、[** cflocation **](http://cfdocs.org/cflocation)がロケーションヘッダーを処理している間、あなたは常に[** cfheader ** ] および

+0

CF8はタグの属性としてステータスコードを設定する機能を追加しました – Yisroel

答えて

0

あなたが好き書くことができます:まず、あなたはそれの音でDBクエリを実行する必要があり

<cfif welcome EQ 1> 
<cflocation url="/me/index.cfm"> 
</cfif> 
+1

テンプレートはcflocationタグの属性ではありません – duncan

4

<cfquery name="getWelcome" datasource="yourDSN"> 
    SELECT welcome 
    FROM users 
    WHERE username = <cfqueryparam value="#session.username#" cfsqltype="CF_SQL_VARCHAR"> 
</cfquery> 

その後、クエリから値をチェックする必要があり、また、クエリがまったく何も見つけることができないという事実を考慮に入れる。

<cfif NOT getWelcome.recordcount> 
<!--- do something, maybe redirect to the login page ---> 

</cfif> 

<cfif getWelcome.welcome EQ 1> 
    <cflocation url="/me/index.cfm"> 
</cfif> 

ここで最も重要なことは、SQL注入を防ぐためにcfqueryparamを使用することです。

+1

@Brooke - 上記の例は、優れていますが、クエリ "getWelcome"は1行だけを返すと仮定しています。それは心に留めておくべきことです。 _getWelcom.welcome EQ 1_が返されたクエリの_first_行だけを解析する場合は、コード。複数の行がある場合、残りの行は無視されます。私はあなたのクエリがおそらく1行だけのために設計されていることを実感しています。私はそれを指摘しています。 :) –

+0

良い点。私はユーザー名がusersテーブルで一意であることを願っています! – duncan

関連する問題