2013-08-02 56 views
0

我使用cftablecfloop來輸出ColdFusion中的項目表。但點擊其中一個表格行時調用編輯器頁面的正確方法是什麼?編輯ColdFusion中的表格行

下面是代碼:

<table class="grid"> 
<tr> 
    <th>id</th> 
    <th>Date</th> 
    <th>Description</th> 
    <th>Status</th> 
    <th>Urgency</th> 
    <th>Severity</th> 
</tr> 
<cfloop query="GetIssues"> 
<tr> 
    <td><cfoutput>#id#</cfoutput></td> 
    <td><cfoutput>#CreatedOn#</cfoutput></td> 
    <td><cfoutput>#ShortDesc#</cfoutput></td> 
    <td><cfoutput>#Status#</cfoutput></td> 
    <td><cfoutput>#Urgency#</cfoutput></td> 
    <td><cfoutput>#Severity#</cfoutput></td> 
</tr> 
</cfloop> 
</table> 

我可以用a href使GET請求來編輯頁面,但它是正確的/安全的方式?

+2

首先....不要使用CFTABLE。第二...我們可以看到一些代碼嗎? –

+0

@Scott Stroz:更新... – Paul

回答

3

您當然可以創建一個鏈接到編輯器頁面並傳遞ID,但是,如果您的ID是數字,惡意用戶很容易猜測另一個項目的ID。爲了緩解這個問題,我傾向於將UUID用於我的ID。猜測另一個元素的ID非常困難。

此外,最好將cfloop包裝在cfoutput中,而不是包裝每個td - 並且應該限定變量名稱。

例如:

<cfoutput> 
    <cfloop query="GetIssues"> 
     <tr> 
     <td><a href="edit.cfm?id=#GetIssues.id#">#GetIssues.id#</a></td> 
     <td>#GetIssues.CreatedOn#></td> 
     <td>#GetIssues.ShortDesc#</td> 
     <td>#GetIssues.Status#</cfoutput></td> 
     <td>#GetIssues.Urgency#</cfoutput></td> 
     <td>#GetIssues.Severity#</td> 
     </tr> 
    </cfloop> 
</cfoutput> 
+0

通過將cfoutput與查詢屬性一起使用,可以使用較少的代碼實現相同的結果。此外,如果您打算將關鍵字段設置爲表單字段名稱的一部分,則uuid中的連字符可能會導致問題。我對發生在我身上的事情有模糊的回憶。 –

+0

@Dan Bracuk:你能寫一個例子嗎? – Paul

+0

@DanBracuk將cfoutput與查詢屬性一起使用僅保存2行代碼:D。按照我所展示的方式進行操作,還可以更容易地在主循環內循環查看其他查詢,如果需要的話。我在表單字段名稱和ID中使用了UIDS值,從來沒有遇到過問題 –