【发布时间】:2011-09-01 10:07:45
【问题描述】:
我必须知道..
是
$this->form_validation->set_value('first_name')
和
一样$this->input->post('first_name')
?
他们似乎都得到了输入值。如果我验证输入,第一个更安全吗?
【问题讨论】:
-
我认为第二个比第一个更好..
标签: php forms codeigniter
我必须知道..
是
$this->form_validation->set_value('first_name')
和
一样$this->input->post('first_name')
?
他们似乎都得到了输入值。如果我验证输入,第一个更安全吗?
【问题讨论】:
标签: php forms codeigniter
我想你指的是这个:
<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />
在这种情况下,set_value 只是在验证错误时重新填充该字段。这个:
$this->input->post('first_name');
刚刚获得$_POST 的first_name 值。
【讨论】:
set_value() 用于在验证失败后重新填充表单。它没有额外的过滤,因此如果您不需要将值传递回表单,则应使用$this->input->post()。
【讨论】:
set_value() 如果在第二个参数中设置了一个默认值,则可以返回一个默认值,如果该字段未使用表单验证库验证,则不会返回任何内容,而$this->input->post() 将返回 $_POST 值,即使验证库未处理该字段。
如果对输入运行了“准备”规则,这两个函数都将返回修改后的值。
当你想读取一个帖子值时,只需使用$this->input->post(),set_value() 类型的函数,如set_select() 和set_checkbox() 实际上会返回类似selected="selected" 的东西,而不是实际的输入值,所以这赢了不适用于复选框、单选和选择。
【讨论】:
set_value() 对于数组 $_POST 值的行为也不同。简而言之 - 它用于重新填充表单,仅此而已。
在之前的验证库中,validation->first_name 和 input->post(‘first_name’) 可以互换,但新库不再更改 post 值。
【讨论】: