Codeigniter снимает знаки фунта (£) с помощью проверки формы - PullRequest
1 голос
/ 26 января 2012

Я использовал Codeigniter некоторое время, и хотя я не всегда находил проверку формы такой простой, как я уверен, что у меня никогда не было серьезных проблем ... до сих пор!

У меня есть простая форма, состоящая из текстового ввода и текстовой области. Форма начинается предварительно заполненной и, если проверка не пройдена, заполняет ее последним измененным состоянием.

Моя проблема в том, что текстовая область должна принимать знаки фунта (£). Он заполняет текст из базы данных абсолютно нормально, но при отправке, независимо от того, проверяет ли форма или нет, он удаляет их, независимо от того, что я делаю !!

Я изучил сеть и могу найти только решения о применении таких вещей, как htmlentities, к правилам валидации, но если я отправлю данные поста, даже до того, как правила, они уже будут удалены.

global_xss_filtering имеет значение false в моей конфигурации.

Это сводит меня с ума и тратит впустую больше времени, чем следовало бы ... есть ли у кого-нибудь решение этого вопроса, я знаю, что, вероятно, упускаю что-то действительно простое - это сводит с ума!

Спасибо

Helen

Вот мой код проверки, хотя журнал firephp вверху показывает, что он уже удален, поэтому я не вижу, как что-то здесь поможет ... Я попытался добавить различные функции php, как это было предложено ЗДЕСЬ (руководство по кодированию) но это не имеет никакого значения.

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 голосов
/ 27 января 2012

Вы можете использовать обратные вызовы проверки.Поэтому, когда ваше правило проверки запускается, оно запускает функцию обратного вызова, которую вы затем можете использовать для выделения или ввода символов фунта по желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...