превращение спец.символов в их сущности

Serebos

Новичок
Всем привет.
Создал рабочую форму редактирования новостей в БД.
Также попытался добавить в код задачу: преобразовывать все входящие спецсимволы. Но, все равно, в БД записываются спец символы.

Помогите, пожалуйста, советом? (подобная конструкция работает в форме создания новости! Но вот в форме редактирования - код не отрабатывает).
Код:
public function edit($slug = NULL) {

        $data['title'] = "редактировать новость";
        $data['news_item'] = $this->news_model->getNews($slug);

        $data['title_news'] = (isset($data['news_item']['title'])) ? $data['news_item']['title'] : "";
        $data['content_news'] = (isset($data['news_item']['text'])) ? $data['news_item']['text'] : "";
        $data['slug_news'] = (isset($data['news_item']['slug'])) ? $data['news_item']['slug'] : "";

        if($this->input->post('slug') && $this->input->post('title') && $this->input->post('text')) {


        $slugFilter = htmlspecialchars($this->input->post('slug'), ENT_QUOTES, 'UTF-8');       ЭТА СТРОКА
        $titleFilter = htmlspecialchars($this->input->post('title'), ENT_QUOTES, 'UTF-8');        ЭТА СТРОКА
        $textFilter = htmlspecialchars($this->input->post('text'), ENT_QUOTES, 'UTF-8');        ЭТА СТРОКА

        $slug = $slugFilter;                                                                                                         ЭТА СТРОКА
        $title = $titleFilter;                                                                                                          ЭТА СТРОКА                                                                                                    
        $text = $textFilter;                                                                                                          ЭТА СТРОКА
             
           
            $slug = $this->input->post('slug');
            $title = $this->input->post('title');  
            $text = $this->input->post('text');


            if($this->news_model->updateNews($slug, $title, $text)) {

               echo "Новость успешно отредактирована!";
            }
        }

        $this->load->view('templates/header', $data);
        $this->load->view('news/edit', $data);
        $this->load->view('templates/footer');
    }
СПАСИБО
 
Последнее редактирование:

weregod

unserializer
да пускай пихают, что хотят, при выводе нужно htmlspecialchars() вызывать.
или это требования заказчика?
 

WMix

герр M:)ller
Партнер клуба
хочу сюда добавить проверку, + убрать лишние пробелы вначале. Это можно лучше сделать другим способом?
когда записываешь думаешь о базе, когда выводишь, думаешь о html/js/cli и другое. если при выводе нужен trim делай при выводе, но старайся сохранить оригинал
 

Serebos

Новичок
когда записываешь думаешь о базе, когда выводишь, думаешь о html/js/cli и другое. если при выводе нужен trim делай при выводе, но старайся сохранить оригинал
Спасибо, WMix, за совет. Но сначала нужно еще разобраться с этой единичной опцией - записей общностей в БД в данном коде. Как я уже писал, в аналогичной форме создания новости данная конструкция работает, а здесь не подходит..
 
Последнее редактирование:

Serebos

Новичок
при выводе нужен trim
а если форма регистрации аккаунта. Пользователь может наклацать пробелов в начале, Имя может указать с большой или маленькой.... Тут trim.... нужен при записи в БД или, например, проверка на допустимость символов в регистрируемых никах?!
 
Последнее редактирование:

Serebos

Новичок
КОД ЗАРАБОТАЛ! блок с проверкой опустил чуть ниже:

Код:
    public function edit($slug = NULL) {

        $data['title'] = "редактировать новость";
        $data['news_item'] = $this->news_model->getNews($slug);
        
        $data['title_news'] = (isset($data['news_item']['title'])) ? $data['news_item']['title'] : "";
        $data['content_news'] = (isset($data['news_item']['text'])) ? $data['news_item']['text'] : "";
        $data['slug_news'] = (isset($data['news_item']['slug'])) ? $data['news_item']['slug'] : "";

        if($this->input->post('slug') && $this->input->post('title') && $this->input->post('text')) {
            

            $slug = $this->input->post('slug');
            $title = $this->input->post('title');   
            $text = $this->input->post('text');

        $slugFilter = htmlspecialchars($this->input->post('slug'), ENT_QUOTES, 'UTF-8');
        $titleFilter = htmlspecialchars($this->input->post('title'), ENT_QUOTES, 'UTF-8');
        $textFilter = htmlspecialchars($this->input->post('text'), ENT_QUOTES, 'UTF-8');

        $slug = $slugFilter;
        $title = $titleFilter;
        $text = $textFilter;

            if($this->news_model->updateNews($slug, $title, $text)) {

               echo "Новость успешно отредактирована!";
            }
        }

        $this->load->view('templates/header', $data);
        $this->load->view('news/edit', $data);
        $this->load->view('templates/footer');
    }
Всем спасибо за обсуждение!
 

WMix

герр M:)ller
Партнер клуба
а если форма регистрации аккаунта. Пользователь может наклацать пробелов в начале
было бы странно если я хотел " wmix" а мне создали "wmix" я к тому что записывая trim не нужен,
но проверку if(trim($nick) === $nick) сделать не мешает

$slugFilter = htmlspecialchars($this->input->post('slug'), ENT_QUOTES, 'UTF-8');
и все, новости про новые html-тэги ты уже какбы публиковать не можешь (ну или будешь извращаться)

появился новый тэг <b> который деляет текст жирным
 
Последнее редактирование:

Serebos

Новичок
и все, новости про новые html-тэги ты уже какбы публиковать не можешь (ну или будешь извращаться)
WMix, у меня в БД сущности спецсимволов записываются, а когда вывожу данные в браузер - то выводятся спецсимволы! С последнего комментария, я подозреваю, что это неверное поведение исходя из содержания кода?!
 

weregod

unserializer
WMix, у меня в БД сущности спецсимволов записываются, а когда вывожу данные в браузер - то выводятся спецсимволы! С последнего комментария, я подозреваю, что это неверное поведение исходя из содержания кода?!
сказали же, в бд писать то, что ввёл юзер (ладно, trim() туда-сюда ещё), данные форматируются при выводе на морду
к тому же, зачем загаживать бд html-кодированными символами, фактическая длина полей уменьшается, поиск замедляется...
бывают исключительные ситуации, но это точно не ваш случай )
 

Serebos

Новичок
сказали же, в бд писать то, что ввёл юзер (ладно, trim() туда-сюда ещё), данные форматируются при выводе на морду
к тому же, зачем загаживать бд html-кодированными символами, фактическая длина полей уменьшается, поиск замедляется...
бывают исключительные ситуации, но это точно не ваш случай )
weregod, как учит первоисточник "обучающий курс", так и стараюсь применять знания. Остальное, уже во время практики "отлаживается", что-то изменяется, что-то отбрасывается. СПАСИБО ЗА СОВЕТЫ!
 
Сверху