【问题标题】:how can a page redirect users back to previous page if they try to access the page via url?如果用户尝试通过 url 访问页面,页面如何将用户重定向回上一页?
【发布时间】:2014-11-27 20:34:59
【问题描述】:

我有一个登录页面,如果用户已经登录,则无法访问该页面。因此登录页面尝试将登录的用户重定向回他们来自的页面。

如果用户单击链接转到页面,则重定向有效。问题是如果用户在About 页面尝试通过 url 访问登录页面,则不会设置referrer agent,因此登录页面不会将用户重定向回About 页面,而是重定向回@987654324 @(我正在使用 codeigniter 和 ion auth 库)。 登录页面的重定向代码如下:

if($this->ion_auth->logged_in())
{
  redirect($this->agent->referrer(), 'refresh');
}

是否可以运行此代码并正确重定向,而不是始终重定向到基本 url? 当用户登录时,我没有显示登录页面的链接。所以登录的用户只能使用url输入进入登录页面,我想要的是如果他们这样做,他们将被重定向回他们来自的页面。

【问题讨论】:

    标签: codeigniter redirect http-referer ion-auth


    【解决方案1】:

    我正在这样做。

    重定向($_SERVER['HTTP_REFERER']);

    【讨论】:

      【解决方案2】:

      试试这个:

      $this->load->library('user_agent'); redirect($this->agent->referrer());

      其他

      使用SESSION 登录和注销。如果会话存在,则阻止登录页面,否则使用if 语句允许登录页面。

      【讨论】:

        【解决方案3】:

        在您想要返回的页面中可以执行以下操作:

        $this->session->set_userdata('referred_from', current_url());
        

        然后重定向回那个页面

        $referred_from = $this->session->userdata('referred_from');
        redirect($referred_from, 'refresh');
        

        【讨论】:

          【解决方案4】:

          我不知道有没有更好的方法,但我总是这样做:

          当用户在关于页面并点击登录时,获取关于页面的url地址,可能对其进行base64_encode,然后通过GET将其作为参数发送到登录页面。在登录页面上,如果凭据有效,则从 GET、base64_decode 获取该参数并重定向到那里。

          如果您只对主页执行此操作,则只能从 url 获取控制器,但如果您想在每个页面 (/controller/method/var1/var2) 上应用它,则使用整个 URL 或整个 url 减去基本 url。

          如果这个提示有帮助,请告诉我。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-23
            • 2016-08-13
            • 2021-03-16
            • 1970-01-01
            • 2012-09-17
            相关资源
            最近更新 更多