Codeigniter使用表单验证来剥离英镑符号(£)

时间:2012-01-25 20:30:10

标签: php codeigniter validation

我已经使用了Codeigniter一段时间了,虽然我并不总是觉得表格验证很简单,因为我确信它应该是我从来没有遇到任何大问题......直到现在!

我有一个由文本输入和文本区域组成的简单表单。表格从预填充开始,如果验证失败,则重新填充最后更改的状态。

我的问题是 - textarea需要接受英镑符号(£)。它从数据库填充文本绝对正常但在提交时,无论表单是否有效,它都会将它们删除,无论我做什么!!

我已经搜索了网络,只能找到关于将诸如htmlentities之类的东西应用到验证规则的解决方案,但是如果我将发布的数据写出来,甚至在规则之前,它已经被剥离了。

我的配置中global_xss_filtering设置为false。

这让我疯了,浪费的时间超过了应有的时间......任何人都有解决方案,我知道我可能会错过一些非常简单的东西 - 这真令人发狂!

谢谢,

海伦

这是我的验证代码,虽然顶部的firephp日志显示它已被剥离,所以我看不到在这里做任何事情会有所帮助......我已经尝试添加各种php函数,因为它建议{ {3}}但它没有任何区别。

public function edit_entry2($entry_id, $page_id) {
    $this->firephp->log($_POST);
    $this->load->library('form_validation');
    $this->form_validation->set_rules('name', 'Name', 'required|max_length[255]');
    $this->form_validation->set_rules('address1', 'Address line 1', 'max_length[255]');
    $this->form_validation->set_rules('address2', 'Address line 2', 'max_length[255]');
    $this->form_validation->set_rules('address3', 'Address line 3', 'max_length[255]');
    $this->form_validation->set_rules('address4', 'Address line 4', 'max_length[255]');
    $this->form_validation->set_rules('county', 'County', 'required|max_length[255]');
    $this->form_validation->set_rules('post_code', 'Post Code', 'max_length[10]');
    $this->form_validation->set_rules('telephone1', 'Telephone 1', 'required|max_length[12]|is_natural');
    $this->form_validation->set_rules('telephone2', 'Telephone 2', 'max_length[12]|is_natural');
    $this->form_validation->set_rules('fax', 'Fax', 'max_length[12]|is_natural');
    $this->form_validation->set_rules('email', 'Email address', 'valid_email');
    $this->form_validation->set_rules('website', 'Website', 'max_length[255]');
    $this->form_validation->set_rules('rating_awards', 'Rating/Awards', 'max_length[255]');
    $this->form_validation->set_rules('description', 'Description', 'max_length[1000]');
    $this->form_validation->set_rules('categories[]', 'Categories', 'callback_categories_check');

    if ($this->form_validation->run() == FALSE)
    {
        $this->edit_entry($entry_id, $page_id);
    }
    else
    {
        $updated_entry = array('name'=>$_POST['name'], 'address1'=>$_POST['address1'], 'address2'=>$_POST['address2'], 'address3'=>$_POST['address3'], 'address4'=>$_POST['address4'], 'county'=>$_POST['county'], 'post_code'=>$_POST['post_code'], 'telephone1'=>$_POST['telephone1'], 'telephone2'=>$_POST['telephone2'], 'fax'=>$_POST['fax'], 'email'=>$_POST['email'], 'website'=>$_POST['website'], 'rating_awards'=>$_POST['rating_awards'], 'description'=>$_POST['description']);
        $this->tourism_catalogue_model->update_entry($entry_id, $updated_entry, $_POST['categories']);
        $this->index($page_id);
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用验证回调。因此,当您的验证规则被触发时,它将触发一个回调函数,然后您可以根据需要使用该函数去除或注入井符号。

Form Validation Callbacks