2012-05-10 33 views
0

我想做一個CF代碼,將從表 「users」中選擇「welcome」行,其中username =#session.username#。CF(If..headerlocation)?

如果「歡迎」 = 1,那麼我希望它引導用戶到/me/index.cfm

我是新的CF,怎麼會變成這樣是可能的。

+0

由於您在標題中提到了標題,因此我會指出,雖然[** cflocation **](http://cfdocs.org/cflocation)處理位置標題,但您始終使用[** cfheader ** ](http://cfdocs.org/cfheader),例如''和' –

+0

CF8添加了將狀態代碼設置爲標記的屬性的能力 – Yisroel

回答

0

你可以這樣寫:

<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> 

這裏最重要的是使用cfqueryparam來防止SQL注入。

+1

@Brooke - 只是一個註釋,上面的示例是優秀,但它假設查詢「getWelcome」將只返回1行。這是要記住的。該代碼表示​​_getWelcom.welcome EQ 1_是否僅分析返回的查詢的_first_行。如果有多行,其餘的將被忽略。我意識到你的查詢可能是_designed_只有一行,所以這很酷。我只是把它指出來。 :) –

+0

好點。我希望用戶名在用戶表中是唯一的! – duncan