Php 表单验证的Codeigniter设置规则isn';t工作不正常
我试图在这里验证两个字段,“title”和“HTML”字段 我有以下代码:Php 表单验证的Codeigniter设置规则isn';t工作不正常,php,codeigniter,validation,Php,Codeigniter,Validation,我试图在这里验证两个字段,“title”和“HTML”字段 我有以下代码: $this->form_validation->set_rules('title', $this->input->post('title'), 'required|min_length[5]|max_length[255]'); $this->form_validation->set_rules('html', $data['html'], 'required'); if ($this
$this->form_validation->set_rules('title', $this->input->post('title'), 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', $data['html'], 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
die();
我可以确认这两个变量都是有效字符串
该函数始终返回false,即使两个字段都有效。如果我只为一个字段设置了一个规则,那么如果成功,函数将返回true
谁能给点建议吗
非常感谢
Peter验证规则的第二个参数应该是字段的可读名称,而不是实际数据。考虑下面的代码。
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
第一条规则将检查POST变量$\u POST['title']
,以确保已设置该变量,且该变量介于5到255个字符之间。如果未通过这些规则,则在错误消息中使用名称Title
。第二条规则将检查变量$\u POST['html']
,以确保已设置该变量,如果未设置该变量,则将在错误消息中使用名称html
请参阅,以了解更具体的实现细节
根据您的代码,您似乎希望通过表单验证运行一些不属于$\u POST
数组的变量。要做到这一点,你有两个选择。首先,您可以将所有要验证的数据放入一个数组,并使用$this->form\u validation->set\u data($array)
来使用该数组,而不是$\u POST
。或者,只需将要验证的字段添加到$\u POST
设置数据()
示例:
$formData = array('title' => $this->input->post('title'), 'html' => $data['html']);
$this->form_validation->set_data($formData);
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
$_POST['html'] = $data['html'];
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
$\u POST
示例:
$formData = array('title' => $this->input->post('title'), 'html' => $data['html']);
$this->form_validation->set_data($formData);
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
$_POST['html'] = $data['html'];
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
我个人建议使用
$\u POST
方法。验证规则的第二个参数应该是字段的可读名称,而不是实际数据。考虑下面的代码。
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
第一条规则将检查POST变量$\u POST['title']
,以确保已设置该变量,且该变量介于5到255个字符之间。如果未通过这些规则,则在错误消息中使用名称Title
。第二条规则将检查变量$\u POST['html']
,以确保已设置该变量,如果未设置该变量,则将在错误消息中使用名称html
请参阅,以了解更具体的实现细节
根据您的代码,您似乎希望通过表单验证运行一些不属于$\u POST
数组的变量。要做到这一点,你有两个选择。首先,您可以将所有要验证的数据放入一个数组,并使用$this->form\u validation->set\u data($array)
来使用该数组,而不是$\u POST
。或者,只需将要验证的字段添加到$\u POST
设置数据()
示例:
$formData = array('title' => $this->input->post('title'), 'html' => $data['html']);
$this->form_validation->set_data($formData);
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
$_POST['html'] = $data['html'];
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
$\u POST
示例:
$formData = array('title' => $this->input->post('title'), 'html' => $data['html']);
$this->form_validation->set_data($formData);
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
$_POST['html'] = $data['html'];
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
我个人建议使用
$\u POST
方法。你能显示生成的标记代码吗?什么是$data
你能在这里发布你的表单吗$data是所有有name=“data[field\u name]”的字段吗?你能显示生成的标记代码吗?什么是$data
你能在这里发布你的表单吗$data是所有有name=“data”的字段[字段名称]”我想这不是问题。第二个参数只是用来显示字段的错误。我明白了,你的字段名和规则与标题无关。这很有意义。我如何在设置的规则参数中使用数组?可能吗?@PeterStuart更新了我的答案。这就是你要找的吗?是的,就是这样。一个简单的问题,是$\P吗OST安全使用?为什么CI会创建一个post对象呢?CI为$\u post提供了自己的接口,因为它允许他们实现其他中间代码,例如可选的XSS筛选器或不存在的密钥处理。但是,由于它不允许您通过该类设置$\u post值,您必须使用数组手动设置它们。我认为这不是问题第二个参数只是用来显示字段的错误你的字段名和规则与标题无关,我明白了。这是有意义的。我如何在set_rules参数中使用数组?可能吗?@PeterStuart更新了我的答案。这就是你要找的吗?是的,就是这样。一个简单的问题,$\u POST安全吗要使用?为什么CI要创建一个post对象?CI为$\u post提供了自己的接口,因为它允许它们实现其他中间代码,例如可选的XSS筛选器或不存在的密钥处理。但是,由于它不允许您通过该类设置$\u post值,您必须使用数组手动设置它们。