opencart在登录后重定向同一页面

opencart在登录后重定向同一页面,opencart,Opencart,我是opencart的新手。现在我已经做了一些类别限制,这意味着用户必须登录才能看到该类别。因此,当用户单击该类别时,如果他没有登录,他将重定向到登录页面。上述过程运行良好 现在,一旦我登录,我想重定向到相同的类别页面。 当我进入登录页面时,我可以看到“$\u SERVER['HTTP\u REFERER']”的值符合我的要求 site.com/index.php?route=product/category&path=62 现在我在线阅读教程,然后告诉我更改文件“project\ca

我是opencart的新手。现在我已经做了一些类别限制,这意味着用户必须登录才能看到该类别。因此,当用户单击该类别时,如果他没有登录,他将重定向到登录页面。上述过程运行良好 现在,一旦我登录,我想重定向到相同的类别页面。 当我进入登录页面时,我可以看到“$\u SERVER['HTTP\u REFERER']”的值符合我的要求

site.com/index.php?route=product/category&path=62
现在我在线阅读教程,然后告诉我更改文件“project\catalog\controller\account\login.php”中的一些代码 我已经替换了下面的代码

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

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

你能建议我怎么做吗?
我对此感到困惑。

问题是,在登录请求(应该是POST)之后,表单被提交到相同的URL,因此以前的推荐人被登录页面取代。事情是这样的:

  • 重定向到登录时的推荐人:
    site.com/index.php?route=product/category&path=62
  • 登录请求后的推荐人:
    site.com/index.php?route=account/login
因此,在重定向到登录之前,请将当前URL存储到类别控制器内的会话中:

$this->session->data[“登录后重定向”]=”;
$this->redirect($this->url->link('account/login'));
现在,在成功登录操作后的登录控制器中,检查会话变量是否存在,如果存在,则重定向到它:

if(!empty($this->session->data['redirect\u after\u login'])){
$url=$this->session->data[“登录后重定向”];
取消设置($this->session->data['redirect\u after\u login']);
$this->redirect($this->session->data['redirect\u after\u login']);
}
  • 在将用户重定向到登录页面之前,您可以将
    $this->session->data['redirect']
    变量设置为一个URL,用户在成功登录后将被重定向到该URL 例如,以下代码将在成功登录后将访问者重定向到地址列表:

    $this->session->data['redirect'] = $this->url->link('account/address', '', 'SSL');
    $this->redirect($this->url->link('account/login', '', 'SSL'));
    
  • 或者您可以像这样修改catalog/controller/account/login.php
  • A.改变

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

    B.和变化

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


    我已经在Opencart上为此创建了一个扩展

    它有3个特点: 登录后的页面。 登出后翻页。 加上严格的登录

    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'];
    }
    
    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')); 
    }