Я использовал 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);
}
}