opencart登录后重定向同一页面

时间:2014-03-19 13:24:09

标签: opencart

我是opencart的新手。现在我已经做了一些类别限制意味着用户必须登录才能看到该类别。所以当用户点击该类别时,如果他没有登录,那么他将重定向到登录页面。上面的过程工作正常 现在,一旦我登录,我想重定向到相同的类别页面。 当我来到登录页面时,我可以看到“$ _SERVER ['HTTP_REFERER']”的值是我想要的

site.com/index.php?route=product/category&path=62

现在当我在线阅读教程然后告诉我更改此文件中的一些代码“project \ catalog \ controller \ account \ _login.php” 我已经替换了下面的代码

$this->redirect($this->url->link('account/account', '', 'SSL'));

if (isset($_SERVER['HTTP_REFERER'])) {
                    $this->redirect($_SERVER['HTTP_REFERER']);
                } else {
                    $this->redirect(HTTPS_SERVER . 'index.php?route=account/account');
                }

当我进入登录页面时,我在HTTP_REFERER中有正确的链接,但是当我点击登录时,它就成了referer中的登录链接。那我怎么设置呢?

你可以建议我怎么做? 我很困惑。

3 个答案:

答案 0 :(得分:1)

问题是在登录请求(应该是POST)之后,表单被提交到相同的URL,因此先前的引用者被登录页面替换。它是这样的:

    重定向到登录时
  • 引荐来源:site.com/index.php?route=product/category&path=62
  • 登录请求后
  • 推荐人:site.com/index.php?route=account/login

因此,在重定向到登录之前,请将当前URL存储到类别控制器中的会话中:

$this->session->data['redirect_after_login'] = "<CURRENT URL GOES HERE>";
$this->redirect($this->url->link('account/login'));

现在,在登录控制器成功登录后,检查会话变量是否存在以及是否重定向到它:

if(!empty($this->session->data['redirect_after_login'])) {
    $url = $this->session->data['redirect_after_login'];
    unset($this->session->data['redirect_after_login']);
    $this->redirect($this->session->data['redirect_after_login']);
}

答案 1 :(得分:1)

  1. 在将用户重定向到登录页面之前,您可以将$this->session->data['redirect']变量设置为URL,以便在成功登录后重定向用户。
  2. 例如,以下代码会在成功登录后将访问者重定向到地址列表:

    $this->session->data['redirect'] = $this->url->link('account/address', '', 'SSL');
    $this->redirect($this->url->link('account/login', '', 'SSL'));
    
    1. 或者您可以像这样修改目录/ controller / account / login.php。
    2. 一个。变化

      if ($this->customer->isLogged()) {  
          $this->redirect($this->url->link('account/account', '', 'SSL'));
      }
      

      if ($this->customer->isLogged()) {  
          $this->redirect($this->url->link('account/account', '', 'SSL'));
      }elseif(!isset($this->session->data['redirect']) && isset($_SERVER['HTTP_REFERER'])){
          $this->session->data['redirect'] = $_SERVER['HTTP_REFERER'];
      }
      

      B中。并改变

      $ this-&gt; redirect($ this-&gt; url-&gt; link(&#39; account / account&#39;,&#39;&#39;,&#39; SSL&#39;) );

      if(!empty($this->session->data['redirect'])){
          $redirect = $this->session->data['redirect'];
          unset($this->session->data['redirect']);
          $this->redirect($redirect);
      }else{
          $this->redirect($this->url->link('account/account', '', 'SSL')); 
      }
      

答案 2 :(得分:0)

我在Opencart上为此创建了一个扩展名。

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=13998

它有3个功能: 登录后的页面。 注销后的页面。 加严格登录。