Получить параметры в URL с CodeIgniter - PullRequest
48 голосов
/ 02 декабря 2008

Я знаю, что codeIgniter отключает параметры GET по умолчанию.

Но, сделав все в POST, вас не раздражает повторная отправка запросов данных, если вы когда-нибудь нажмете после отправки формы?

Меня это раздражает, но я не уверен, хочу ли я разрешить GET исключительно по этой причине.

Это такая большая проблема безопасности, чтобы разрешить GET параметры тоже?

Ответы [ 16 ]

57 голосов
/ 02 декабря 2008

Когда я впервые начал работать с CodeIgniter, неиспользование GET действительно меня тоже оттолкнуло. Но потом я понял, что вы можете смоделировать параметры GET, манипулируя URI с помощью встроенного URI Class . Это фантастика, и это делает ваши URL лучше.

Или, если вам действительно нужно, чтобы GET работал, вы можете поместить это в свой контроллер:

parse_str($_SERVER['QUERY_STRING'], $_GET); 

Что вернет переменные обратно в массив GET.

13 голосов
/ 20 октября 2010

Это сработало для меня:

<?php
$url = parse_url($_SERVER['REQUEST_URI']);
parse_str($url['query'], $params);
?>

$params массив содержит параметры, переданные после? символ

11 голосов
/ 01 августа 2012

Теперь все работает нормально с CodeIgniter 2.1.0

    //By default CodeIgniter enables access to the $_GET array.  If for some
    //reason you would like to disable it, set 'allow_get_array' to FALSE.

$config['allow_get_array']      = TRUE; 
10 голосов
/ 05 июля 2013

Эта функция идентична функции post, только она получает данные:

$this->input->get()

https://www.codeigniter.com/user_guide/libraries/input.html

8 голосов
/ 09 ноября 2012

Вам просто нужно включить его в config.php, и вы можете использовать $this->input->get('param_name'); для получения параметров.

6 голосов
/ 24 июня 2010

parse_str($_SERVER['QUERY_STRING'],$_GET); ТОЛЬКО у меня сработало после того, как я добавил следующую строку в apps / config / config.php:

$config['uri_protocol'] = "PATH_INFO";

Я обнаружил, что параметры $ _GET на самом деле не нужны в CI, но Facebook и другие сайты сбрасывают GET-параметры до конца ссылок, которые будут 404 для моего сайта CI !! Добавив строку выше в config.php, эти страницы работали. Я надеюсь, что это помогает людям!

(из http://www.maheshchari.com/work-to-get-method-on-codeigniter/)

4 голосов
/ 28 ноября 2011

Вы можете включить строки запроса, если вы действительно настаиваете. В вашем config.php вы можете включить строки запроса:

$config['enable_query_strings'] = TRUE;

Для получения дополнительной информации вы можете посмотреть внизу этой вики-страницы: http://codeigniter.com/user_guide/general/urls.html

Тем не менее, обучение работе с чистыми URL-адресами является лучшим предложением.

2 голосов
/ 01 июня 2015

Если вам нужен первый параметр, используйте его.

$this->uri->segment('3');

И вам нужен второй параметр, используйте его

$this->uri->segment('4');

У вас есть параметр улучшения многих параметров

2 голосов
/ 13 августа 2009

"не раздражаетесь ли вы повторно отправлять запросы данных, если когда-либо нажимаете после отправки формы"

Вы можете обойти это, выполнив перенаправление со страницы, которая обрабатывает отправку вашей формы на страницу успеха. последним «действием» была загрузка страницы успеха, а не отправка формы, а это значит, что если пользователь выполнит F5, он просто перезагрузит эту страницу и больше не отправит форму.

1 голос
/ 23 мая 2016

Мой параметр -? Uid = 4 и получить его с помощью:

$this->uid = $this->input->get('uid', TRUE);
  echo $this->uid;

И

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