2015-05-21 6 views
0

Я проверил похожие вопросы там, но они, похоже, не помогают.CodeIgniter - URL маршрутизации с переменными GET

У меня есть проверка электронной почты как, которая должна быть направлена ​​в CodeIgniter в нужную функцию с данными, переданными функции для дальнейшей обработки.

Пример URL:

http://mysite.dev/verify/[email protected]&hash=562828a975740ac6820e40f7f61b4407 

Текущий маршрут:

$route['verify/(:any)'] = 'formcontroller/verification/$1';

Функция:

public function verification($slug) 
    { 
     parse_str(parse_url($slug, PHP_URL_QUERY), $fileds); 
     var_dump($fields); 
    } 

Проблема заключается в том, я получаю 404, когда я пытаюсь URL, перечисленных выше , Я получаю Message: Undefined variable: fields, когда я пробую что-то вроде http://amazon.dev/verify/asdasdasd

Может кто-нибудь указать мне в правильном направлении?

ADD: Если в адресе нет ?, он работает. Но для стандартного запроса get url should be, я хотел бы знать, как это можно решить.

ответ

0

Проблема на самом деле был, запрос запускается после /.

На самом деле, адрес должен быть в этой модели, ? сразу после названия каталога.

http://mysite.dev/verify/[email protected]&hash=562828a975740ac6820e40f7f61b4407 

Маршрут должен быть

$route['verify'] = 'formcontroller/verification'; 

И переменные должны быть обработаны с использованием get метода CodeIgniter.

$this->input->get('variablename');

Кроме того, URL-адрес должен быть urlencoded просто упаковывают, если есть какие-либо символы, которые не только разрешены в файле конфигурации.

0

Маршрутизируется только сегмент пути URL, и вам не нужно анализировать параметры запроса. .

Доступ к ним через $_GET суперглобальный (как в необработанном PHP) или через Input class' get() method.

+0

доступа к ним через '$ _GET' в функции контроллера? Как перенаправить URL-адрес, чтобы вызвать функцию? В настоящее время из-за '?' Маршрутизация не работает. – Kishor

+0

В официальной документации есть учебник, который частично ориентирован на маршрутизацию ... – Narf

0

? не допускается символ в сегменте URI в

/* 
|-------------------------------------------------------------------------- 
| Allowed URL Characters 
|-------------------------------------------------------------------------- 
| 
| This lets you specify with a regular expression which characters are permitted 
| within your URLs. When someone tries to submit a URL with disallowed 
| characters they will get a warning message. 
| 
| As a security measure you are STRONGLY encouraged to restrict URLs to 
| as few characters as possible. By default only these are allowed: a-z 0-9~%.:_- 
| 
| Leave blank to allow all characters -- but only if you are insane. 
| 
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!! 
| 
*/ 

, который находится в приложении/Config/config.php

$config['permitted_uri_chars'] = 'a-z 0-9~%.:&_\-'; 

можно присоединить? к списку

здесь приведен список URL-адрес закодированные символы http://www.degraeve.com/reference/urlencoding.php

1

Маршрут не получает строку запроса, как я понимаю. Итак, вы должны получить переменную из массива GET. Для этого, первое испытание, которое в config.php установить

$config['allow_get_array'] = TRUE; 

затем в контроллере:

public function verification($slug) 
    { 
    $fields['id'] = $this->input->get('id'); 
    $fields['hash'] = $this->input->get('hash'); 
    var_dump($fields); 
    } 
Смежные вопросы