получить параметры в url с codeigniter

<p>я знаю, что codeigniter отключает параметры get по умолчанию.</p><p>но, сделав все в post, вас не раздражает повторная отправка запросов данных, если вы когда-нибудь нажмете после отправки формы?</p><p>это раздражает меня, но я не уверен, хочу ли я разрешить get исключительно по этой причине.</p><p>это такая большая проблема безопасности, чтобы разрешить get параметры тоже?</p>

<p>когда я впервые начал работать с codeigniter, то, что я не использовал get, действительно меня тоже оттолкнуло. но потом я понял, что вы можете моделировать параметры get, манипулируя uri с помощью встроенного <a href="http://codeigniter.com/user\_guide/libraries/uri.html">ri class</a> . это фантастика, и это делает ваши url лучше.</p><p>или, если вам действительно нужно, чтобы get работал, вы можете поместить это в свой контроллер:</p><pre><code>parse\_str($_server['query_string'], $\_get); </code></pre><p>который поместит переменные обратно в массив get.</p>

<p>это сработало для меня:</p><pre><code><?php $url = parse_url($\_server['request\_uri']); parse\_str($url['query'], $params); ?> </code></pre><p>массив <code>$params содержит параметры, переданные после? персонаж

теперь все работает нормально с 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; 

эта функция идентична функции post, только она получает данные:$this->input->get() </code></pre><p> <a href="https://www.codeigniter.com/user\_guide/libraries/input.html">https://www.codeigniter.com/user\_guide/libraries/input.html</a> </p>

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

parse_str($\_server['query\_string'],$_get); только для меня сработало после того, как я добавил следующую строку в apps/config/config.php:$config['uri\_protocol'] = "path\_info";</code></p><p>я обнаружил, что параметры $ _get на самом деле не нужны в ci, но facebook и другие сайты сбрасывают параметры get в конец ссылок, которые будут 404 для моего сайта ci !! добавив строку выше в config.php, эти страницы работали. я надеюсь, что это помогает людям!(из <a href="http://www.maheshchari.com/work-to-get-method-on-codeigniter/">http://www.maheshchari.com/work-to-get-method-on-codeigniter/ )

вы можете включить строки запроса, если вы действительно настаиваете. в вашем config.php вы можете включить строки запроса:$config['enable\_query\_strings'] = true; </code></pre><p>для получения дополнительной информации вы можете посмотреть внизу этой вики-страницы: <a href="http://codeigniter.com/user\_guide/general/urls.html">http://codeigniter.com/user\_guide/general/urls.html</a> </p><p>тем не менее, обучение работе с чистыми url-адресами является лучшим предложением.</p>

<p>"не раздражаетесь ли вы повторно отправлять запросы данных, если вы когда-нибудь нажмете после отправки формы"</p><p>это можно обойти, перенаправив страницу, которая обрабатывает отправку формы на страницу успеха. последним "действием" была загрузка страницы успеха, а не отправка формы, а это значит, что если пользователь выполнит f5, он просто перезагрузит эту страницу и больше не отправит форму.</p>

<p>если вам нужен первый параметр, используйте его.</p><pre><code>$this->uri->segment('3'); и вам нужен второй параметр, используйте его$this->uri->segment('4'); </code></pre><p>имейте свой параметр улучшения многих параметров</p>

<p>my\_input.php:</p><pre><code><?php // this class extension allows for $_get access class my_input extends ci_input { function _sanitize_globals() { // setting allow_get_array to true is the only real modification $this->allow\_get\_array = true; parent::\_sanitize\_globals(); } } /* end of file my\_input.php */ /* location: .application/libraries/my\_input.php */ </code></pre><p>my\_uri.php:</p><pre><code><?php /* | this class extension allows for $_get access by retaining the | standard functionality of allowing query strings to build the | uri string, but checks if enable_query_strings is true / class my_uri extends ci_uri{ function _fetch_uri_string() { if (strtoupper($this->config->item('uri\_protocol')) == 'auto') { // if the url has a question mark then it's simplest to just // build the uri string from the zero index of the $_get array. // this avoids having to deal with $\_server variables, which // can be unreliable in some environments // // *** the only modification (extension) to this method is to check // if enable\_query\_strings is true in the line below *** if ($this->config->item('enable_query_strings') === true && is_array($\_get) && count($_get) == 1 && trim(key($\_get), '/') != '') { $this->uri_string = key($\_get); return; } // is there a path\_info variable? // note: some servers seem to have trouble with getenv() so we'll test it two ways $path = (isset($\_server['path\_info'])) ? $_server['path_info'] : @getenv('path_info'); if (trim($path, '/') != '' && $path != "/".self) { $this->uri\_string = $path; return; } // no path_info?... what about query_string? $path = (isset($_server['query_string'])) ? $\_server['query\_string'] : @getenv('query\_string'); if (trim($path, '/') != '') { $this->uri\_string = $path; return; } // no query_string?... maybe the orig_path_info variable exists? $path = str\_replace($_server['script_name'], '', (isset($\_server['orig\_path\_info'])) ? $_server['orig_path_info'] : @getenv('orig_path_info')); if (trim($path, '/') != '' && $path != "/".self) { // remove path and script information so we have good uri data $this->uri\_string = $path; return; } // we've exhausted all our options... $this->uri\_string = ''; } else { $uri = strtoupper($this->config->item('uri\_protocol')); if ($uri == 'request_uri') { $this->uri\_string = $this->_parse_request_uri(); return; } $this->uri\_string = (isset($_server[$uri])) ? $_server[$uri] : @getenv($uri); } // if the uri contains only a slash we'll kill it if ($this->uri\_string == '/') { $this->uri_string = ''; } } } / end of file my_uri.php / / location: .application/libraries/my_uri.php / 

немного не в тему, но я искал функцию get в codeigniter, чтобы просто передавать переменные между контроллерами и получать flashdata. см .: <a href="http://codeigniter.com/user_guide/libraries/sessions.html">http://codeigniter.com/user_guide/libraries/sessions.html  flashdata позволяет создавать быстрые данные сеанса, которые будут доступны только для следующего запроса к серверу, а затем автоматически очищаются.

мой параметр? uid = 4 и получить его с:$this->uid = $this->input->get('uid', true); echo $this->uid; </code></pre><p>исв</p>

<p>параметры get кэшируются веб-браузером, post нет. таким образом, с post вам не нужно беспокоиться о кэшировании, поэтому его обычно предпочитают.</p>

<p>вы можете попробовать это</p><pre><code>$this->uri->segment(''); </code></pre>