我试图在尝试登录之前将用户重定向到他们正在查看的页面。例如,如果他们正在查看 baseurl/people/abraham_lincoln,然后决定登录,那么在他们登录后,他们将被重定向到 baseurl/people/abraham_lincoln。奇怪的是它适用于某些 URL 而不是其他 URL。对于某些 URL,我将“javascript/jsFunctions.js”附加为 URL,而不是它们之前所在的 URL。
在每个控制器的顶部,我设置了一个会话变量来进行重定向:
$this->session->set_userdata('Redirect', current_url());
我将此会话变量打印到控制器顶部和登录视图顶部以进行测试。这是我在登录时收到的一些结果。
一个有效的 URL 示例:
我尝试从以下网址登录:
baseURL/people
在我的控制器顶部打印的内容作为我的重定向会话变量:
baseURL/people
在我的登录视图顶部打印的内容作为我的重定向会话变量:
baseURL/people
无效的 URL 示例:
我尝试从以下网址登录:
baseURL/people/abraham_lincoln
在我的控制器顶部打印的内容作为我的重定向会话变量:
baseURL/people/abraham_lincoln
在我的登录视图顶部打印的内容作为我的重定向会话变量:
baseURL/people/javascript/jsFunctions.js
我不确定这是否重要,但我也在从 routes.php 文件中路由其中一些 URL:
$route['people/(:any)'] = "people/index/$1";
$route['people/(:any)/(:num)'] = "people/index/$1/$2";
我尝试了许多不同的方式来构建我的会话变量,包括:
current_url()
base_url().uri_string()
base_url().$this->uri->segment(1)....
base_url().$this->uri->rsegment(1)....
如果有人能想到我为什么要获取这些 javascript 变量而不是我正在寻找的 URL,我将不胜感激。
谢谢!
PS 我忘了提到,如果我刷新一个不起作用的页面,例如 abraham_lincoln 页面,然后去登录,我会收到正确的重定向会话变量。几乎就像第一次没有正确设置一样,但不知道如何解决这个问题,因为我尝试在视图加载之前和顶部设置会话变量。