我是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中的登录链接。那我怎么设置呢?
你可以建议我怎么做? 我很困惑。答案 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)
$this->session->data['redirect']
变量设置为URL,以便在成功登录后重定向用户。 例如,以下代码会在成功登录后将访问者重定向到地址列表:
$this->session->data['redirect'] = $this->url->link('account/address', '', 'SSL');
$this->redirect($this->url->link('account/login', '', 'SSL'));
一个。变化
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个功能: 登录后的页面。 注销后的页面。 加严格登录。