0

在 Code Igniter 中,我使用的是内置的 URL 类

我这里有问题。我想在当前 URL 中包含一个引用 URL。

例如,localhost/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/login/from/ /account/verify/email/b4a98ddd44 (突出显示的只是参数)

你们中有人知道怎么做吗?

4

2 回答 2

0

如果您的 url 始终以相同的段开头,您可以尝试获取数组中的所有段,并在开头删除不需要的段。

$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"

另一种可能的解决方案:这不是您的问题的解决方案,但可能是(更好的)解决方法。

为什么不将 http referer 与 codeigniter flash 数据结合使用?当用户进入登录页面时,在控制器中设置闪存数据

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

然后在用户登录后,您可以使用它再次检索值

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

闪存数据代码点火器手册

于 2013-06-27T11:28:25.970 回答
0

这只是一个想法

尝试替换/-您的推荐人网址,例如

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

所以你的网址会变成这样

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

现在在您的account controller's登录功能中得到这样的

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

现在您可以通过多种方式执行此操作,例如您可以对 url 进行哈希处理并附加到您的 url 中,但是如果您附加/account/verify/email/b4a98ddd44在 url 中,CI 会将其视为单独的参数,例如

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 段中

希望有意义

于 2013-06-27T09:59:50.493 回答