cakePHP - 防止表单选择列表篡改


cakePHP - prevent form select list tampering

我有一个简单的表单,有几个选择输入。其中之一是性别选择。

输入生成如下:

echo $this->Form->input('gender_id', array(
    'options' => array(
        1 => 'Male',
        2 => 'Female'
    )
));

如何确保只能提交给定的选择,从而无法提交 3 或其他内容?

我正在使用安全组件,它似乎可以防止字段名称篡改,但不能防止值篡改。

对于较大的选择列表(如状态选择),进行简单的比较是不切实际的。此外,我试图避免执行额外的查询来验证 id。

要求值位于模型验证的指定列表中:

public $validate = array(
    'gender_id' => array(
      'allowed' => array(
      'rule'    => array('inList', array(1, 2)),
      'message' => 'Please select male or female.'
     )
   )
 );

使数据库中的此字段成为允许值为 1 和 2 的 ENUM 字段。

你不能阻止某人提交第三个值,只需通过使用FireBug操纵DOM或POST请求。如果它不是数据库值,并且没有通过模型表单验证规则运行,则必须在控制器中手动执行此操作。因为根据您的描述,只有这种验证是必要的。