2012-07-11 64 views
0

在這種形式下,我有一些輸入字段,並且不應該被一些用戶編輯選擇框。禁用或只讀 - 選擇框問題

不過,我需要被插入反正那些無法領域。

我正想着這些值傳遞到一個隱藏字段(這應該在JS做呢?); 然後使用這些隱藏字段來提交表單。

這是一個很好的方法嗎?請指教。

+0

隱藏字段已經出現自表單的曙光。是的,使用它們。 – TheZ 2012-07-11 17:14:09

+0

這裏沒有安全問題? – MEM 2012-07-11 17:20:49

+1

好吧,從技術上講,有人可以使用DOM檢查器或Javascript控制檯並讀取/更改值。但這不是一個新問題,幾乎所有你選擇的方法都會有這個弱點。 – TheZ 2012-07-11 17:24:32

回答

1

只要把它們hidden field

echo $form->hiddenField($model,'property'); 
+0

感謝Yii的具體回覆。 Quick Yii相關問題:在客戶端也需要一些這樣的表單。如果我禁用這些字段,Yii會忽略那些字段上的驗證嗎? – MEM 2012-07-12 07:06:02

+1

您可以使用不同的方案在同一模型/表單上處理不同的操作。你需要考慮的場景http://www.yiiframework.com/wiki/266/understanding-scenarios/ – Pentium10 2012-07-12 07:56:01

+0

你有一個點那裏。我會重新考慮一切。謝謝。 – MEM 2012-07-12 08:06:27

1

只需使用隱藏的精密組件的形式中,像這樣:需要

<input type="hidden" name="id" value="00001" /> 

沒有JS。

2

您可以使用隱藏字段將數據傳遞到表單中,但請記住,如果某人計劃惡作劇,他們可以使用Firebug等工具編輯這些值並提交它們,因此依靠隱藏字段可能會導致的問題。

如果你想成爲正確的安全,你必須做的一切在服務器端 - 請檢查客戶端是否有權限,當他們提交表單來訪問這些字段。如果他們這樣做,請採取他們提交的價值;否則,請使用存儲在您的PHP代碼中的默認值。

0

我會去與複選框禁用,也許只讀的文本字段。事情是,你知道他們應該有什麼樣的價值,當他們submited。因此,在服務器端,您可以忽略它們並使用您選擇的值。如果有人正在操作發佈請求,則忽略數據。