Каков «правильный» способ получения входных данных $ _POST из моей формы через CodeIgniter / PHP? - PullRequest
4 голосов
/ 07 сентября 2011

Это скорее теоретический вопрос, чем конкретный.

У меня есть форма, настроенная с помощью класса проверки формы CodeIgniter. У меня есть несколько правил запуска, например:

$this->form_validation->set_rules('address_line_1', 'Address Line 1', 'required|xss_clean|trim');

В конце концов я хочу поместить данные address_line_1 в мою базу данных. Это то, где я немного запутался. Кажется, есть несколько способов получения $_POST данных из CodeIgniter:

  1. $address = $_POST['address_line_1'];

  2. $address = $this->input->post('address_line_1');

  3. $address = $this->form_validation->set_value('address_line_1');

  4. $address = set_value('address_line_1);

Так какой путь является «правильным»?

Хотя я уверен, что некоторые из этих предположений неверны, я был убежден, что ...

  • $_POST не очищен системой безопасности CodeIgniter (я уверен в этом)

  • $this->input->post() очистит данные (в определенной степени), но не будет применять какие-либо правила подготовки форм проверки

  • $this->form_validation->set_value() совпадает с set_value(), но ...

  • ... set_value() предназначен для повторного заполнения входов формы через их элемент value="".

Какие из моих предположений верны, а какие нет? И каким образом мне следует перетаскивать данные $_POST, когда я готовлю их к проверке формы? Документация проверки формы неоднозначна, когда дело доходит до этого. Ни один из примеров не показывает, что он фактически передает входные данные в модель, например.

Спасибо!

Jack

1 Ответ

13 голосов
/ 07 сентября 2011

Они все разные, иначе их не будет.

  1. $_POST['foo'] - незащищенный и необработанный вывод. ПЛОХОЙ. Не трогай и т.д.
  2. $this->input->post('foo') экранированный и XSSified вход. По умолчанию FALSE вместо ошибок.
  3. $this->form_validation->set_value() для этого будут приняты проверенные выходные данные, которые могли быть изменены с помощью правил проверки. Например, если вы добавите «trim» в качестве правила проверки, проверенное содержимое будет обрезано.
  4. set_value() просто псевдоним метода выше. Люди не любят использовать $ this в своих взглядах.

Это все в документации.

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