我必须知道..
是
$this->form_validation->set_value('first_name')
与
相同$this->input->post('first_name')
他们似乎都得到了输入值。如果我正在验证输入,那么第一个更安全吗?
答案 0 :(得分:7)
set_value()
可以返回默认值,如果未使用表单验证库验证该字段,则不会返回任何内容,而$this->input->post()
将返回{{ 1}}值,即使验证库未处理该字段。
如果已对输入运行“prep”规则,则两个函数都将返回修改后的值。
如果您想阅读帖子值,只需使用$_POST
,$this->input->post()
类型函数(例如set_value()
和set_select()
)实际上会返回set_checkbox()
之类的内容而不是实际的输入值,因此这不适用于复选框,无线电和选择。
答案 1 :(得分:4)
set_value()
用于在验证失败后重新填充表单。没有额外的过滤,因此如果您不需要将值传回表单,则应使用$this->input->post()
。
答案 2 :(得分:3)
我认为你指的是这个:
<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />
在这种情况下,set_value
只是在验证错误上重新填充字段。这样:
$this->input->post('first_name');
仅获得$_POST
的{{1}}值。
答案 3 :(得分:2)
使用先前的验证库,validation->first_name
和input->post(‘first_name’)
可以互换,但新库不会再改变帖子值。