2013-06-27 2 views
0

В Code Igniter я использую встроенный URL-классCode Igniter - введите URL-адрес в URL-адрес

У меня проблема. Я хочу включить URL-адрес реферера в текущий URL-адрес.

Пример, локальный/from_referrer//account/verify/email/b4a98ddd44

/account/verify/email/b4a98ddd44 является URL-адрес, который я хочу включить в текущий URL.

Я пробовал urlencode(). Это выглядит так:

/account/login/from/%2Faccount%2Fverify%2Femail%2Fb4a98ddd44 

но это не работает. CI предполагает я хочу пойти в

/account/login/from//account/verify/email/b4a98ddd44 

, но я хочу пойти в

/счет/Войти/с//account/verify/email/b4a98ddd44 (выделен один только параметр)

кто-нибудь из вас есть какие-либо идеи, как сделать это?

ответ

0

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

$segs = $this->uri->segment_array(); 
unset ($segs[0]); //unset /account 
unset ($segs[1]); //unset /login 
unset ($segs[2]); //unset /from 

$uri = implode('/', $segs); 
echo $uri; // echoes "account/verify/email/b4a98ddd44" 

другой возможно решение: Это не awnser на ваш вопрос, но, может быть, (Бетер) работать вокруг.

Почему бы не использовать HTTP-референт в сочетании с данными флэш-памяти codeigniter? , когда пользователь переходит на страницу входа в систему, установите данные вспышки в контроллере

$this->session->set_flashdata("referer",$_SERVER['HTTP_REFERER']); 

затем после того, как пользователь вошел в систему, вы можете использовать это, чтобы получить значение снова

$uri = $this->session->flashdata("referer"); 

flash data codeigniters manual

+0

Я думаю, что лучшим способом будет использование данных вспышки: P –

0

Вот только идея

попытка заменить / с - для реферера как

$referrer= str_replace('/', '-', '/account/verify/email/b4a98ddd44'); 

так что ваш URL будет что-то вроде этого

account/login/from/-account-verify-email-b4a98ddd44 

Сейчас в вашей account controller's войдите в систему, получите это как

function login(){ 
$referrer= str_replace('-','/',$this->uri->segment(4)); 
} 

Теперь вы можете сделать это во многих отношениях, как вы можете просто хэш URL и добавьте в свой адрес, но если вы добавите /account/verify/email/b4a98ddd44 в URL CI будет относиться к ней как отдельных Params как

account => is the uri segment(4); 
verify=> is the uri segment(5); 
email=> is the uri segment(6); 
b4a98ddd44=> is the uri segment(7); 

Так вы нужно сделать строку без / так он придет в сегменте один Uri

Надеется, что это имеет смысл