Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Валидация формы в CodeIgniter
Форумы портала PHP.SU » » CMS и фреймворки » Валидация формы в CodeIgniter

Страниц (1): [1]
 

1. Yan9 - 29 Декабря, 2015 - 00:40:52 - перейти к сообщению
Добрый день! Не получается сделать валидацию простой формы в CodeIgniter (пока без Модели и БД, хотя бы с проверкой разобраться).
ПЕРВЫЙ ВИД (файл success_form_view.php):
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>Add article</title>
  5. </head>
  6. <body>
  7.     <p>Статья успешно добавлена</p>
  8. </body>
  9. </html>

ВТОРОЙ ВИД (файл form_view.php):
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>Add article</title>
  5. </head>
  6. <body>
  7.   <form method="post" action="http://localhost/ci/index.php/form/">
  8.      Название статьи:<br><input type="text" name="title"><?php form_error('title'); ?><br>
  9.      Текст статьи:<br><textarea name="text" rows="10" cols="40"></textarea><?php form_error('text'); ?><br>
  10.      Дата добавления:<br><input type="text" name="date"><?php form_error('date'); ?><br>
  11.      <input type="submit" name="add" value="Добавить">
  12.    </form>
  13. </body>
  14. </html>

КОНТРОЛЛЕР:
PHP:
скопировать код в буфер обмена
  1. class Form extends CI_Controller {
  2.    public function index(){
  3.      $this->load->library('form_validation');
  4.      if(isset($_REQUEST['add'])){
  5.        $rules['title']='required|xss_clean|min_length[5]|max_length[20]|trim';
  6.        $rules['text']='required|xss_clean|max_length[2000]|trim';
  7.        $rules['date']='required|xss_clean|max_length[10]|trim';
  8.        $this->form_validation->set_rules($rules);
  9.        $check=$this->form_validation->run();
  10.        if($check==TRUE){
  11.          $this->load->view('success_form_view');
  12.        }else{
  13.          $this->load->view('form_view');
  14.        }
  15.      }else{
  16.        $this->load->view('form_view');
  17.      }
  18.    }
  19. }

После клика на кнопку никакой проверки не происходит, в случае верного заполнения мне не выводистя надпись "Статья успешно добавлена", а возвращается все та же пустая форма, проверял $check функцией gettype, она boolean и там все время false.
Что я написал неправильно?
Спасибо!
2. Viper - 29 Декабря, 2015 - 01:12:00 - перейти к сообщению
Судя по манам у вас правила = говно. Курите маны https://www[dot]codeigniter[dot]com/user[dot][dot][dot]s-using-an-array

точно? маны codeigniter'а Не понял
Маны PHP не врут!
http://php.net/manual/en/languag...s.comparison.php
3. Yan9 - 29 Декабря, 2015 - 16:01:58 - перейти к сообщению
Viper пишет:
Судя по манам у вас правила = говно. Курите маны https://www[dot]codeigniter[dot]com/user[dot][dot][dot]s-using-an-array

точно? маны codeigniter'а Не понял
Маны PHP не врут!
http://php.net/manual/en/language.operators.comparison.php


Спасибо за советы.
Изменил формат правил и убрал правило xss_clean, все заработало. Сделал так:
PHP:
скопировать код в буфер обмена
  1. $rules=array(
  2.          array(
  3.            'field' => 'title',
  4.            'label' => 'Название статьи',
  5.            'rules' => 'required|xss_clean|min_length[5]|max_length[20]|trim'
  6.          ),
  7.          array(
  8.            'field' => 'text',
  9.            'label' => 'Текст статьи',
  10.            'rules' => 'required|xss_clean|max_length[2000]|trim'
  11.          ),
  12.          array(
  13.            'field' => 'date',
  14.            'label' => 'Дата добавления',
  15.            'rules' => 'required|xss_clean|max_length[10]|trim'
  16.          )    
  17. );
  18. $this->form_validation->set_rules($rules);
  19. $check=$this->form_validation->run();

Не подскажите, почему может не работать проверка с правилом xss_clean?
4. Viper - 29 Декабря, 2015 - 17:12:25 - перейти к сообщению
Yan9 пишет:
Не подскажите, почему может не работать проверка с правилом xss_clean?
валидация и фильтрация разные вещи.
https://codeigniter[dot]com/user_gui[dot][dot][dot]es/security[dot]html
5. Yan9 - 29 Декабря, 2015 - 21:27:21 - перейти к сообщению
Viper пишет:
Yan9 пишет:
Не подскажите, почему может не работать проверка с правилом xss_clean?
валидация и фильтрация разные вещи.
https://codeigniter.com/user_guide/libraries/security.html


Спасибо за помощь!

 

Powered by ExBB FM 1.0 RC1