Передать параметры GET с формой и кодом в контроллер - PullRequest
1 голос
/ 03 августа 2011

У меня есть html-форма, например, его действие для "exmaple.com/mail.php?name=dan".

Как передать этот параметр в контроллер Codeigniter?

'action' в codeigniter - этособираюсь - example.com/mail, я не могу сделать exmaple.com/mail?name=dan, верно?так что я могу сделать?(И .. Я не могу использовать Ajax для этого: -))

Ответы [ 4 ]

2 голосов
/ 03 августа 2011

Есть несколько решений.Вы можете сделать это следующим образом $name=$this->input->get("name"), но если вы хотите сохранить философию Codeigniter, вы можете использовать Javascript, чтобы изменить URL-адрес действия формы на / mail / dan.В этом случае вы можете получить доступ к данным с помощью: $name=$this->uri->segment($number).$ число в вашем случае равно 2, потому что "dan" находится во втором сегменте URI.

ПРИМЕЧАНИЕ. Если вы используете второй подход, имейте в виду, что поведение codeigniter по умолчанию - автоматический вызов контроллера / метода изи второй сегмент URI.(http://domain.com/controller/method) Для предотвращения этого поведения вы можете отредактировать файл application / config / rout.php.Подробные инструкции см. В официальном руководстве 1007 *.

1 голос
/ 03 августа 2011

Вы можете выдать параметр GET как скрытый элемент ввода, т. Е .:

 <input type=hidden name="name_of_parameter" value="value_of_parameter" />

ОДНАКО , есть две очень важных вещей, которые следует иметь в виду при этом:

  1. Вы абсолютно ДОЛЖНЫ санировать аргумент CGI, который вы собираетесь выдавать на странице (невыполнение этого может привести к уязвимости XSS).
  2. Как и с любым другим параметром, вы не можете полагать, что это значение не было изменено (поэтому не используйте 'name = dan' для аутентификации dan!).

Поскольку из вашего примера я делаю вывод, что вы используете это для идентификации и аутентификации пользователя, я настоятельно рекомендую вам использовать для этого cookie-файл браузера (а также цифровую подпись, которая кодирует контрольную сумму этих данных, чтобы если он изменен, вы можете легко определить, что он недействителен).

0 голосов
/ 03 августа 2011

Почему вы не можете просто добавить скрытое поле внутри этой HTML-формы и отправить его вместе с формой в виде данных POST?

<input type="hidden" name="name" value="dan" />

Конечно, вы бы динамически заменили часть значения на любое значение, которое выв настоящее время есть.

0 голосов
/ 03 августа 2011

Вы также должны установить переменные строки запроса в true:

В вашем конфиге CodeIgniter;

$config['enable_query_strings'] = TRUE;

Но имейте в виду, что это меняет поведение вашего приложения codeigniter. Подробнее здесь

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