Php opencart在登录前停止查看索引页
我在一个项目中使用opencart 每件事都很好,但我无法找到一个选项,停止查看主页,直到登录 实际上这是项目的要求,只有登录后才能看到家 有没有办法用敞篷车做到这一点Php opencart在登录前停止查看索引页,php,mysql,opencart,Php,Mysql,Opencart,我在一个项目中使用opencart 每件事都很好,但我无法找到一个选项,停止查看主页,直到登录 实际上这是项目的要求,只有登录后才能看到家 有没有办法用敞篷车做到这一点 谢谢据我所知,没有内置的功能,但你可以自己做。根据您对@carpenocutomdc问题的回答,您可能需要做一些挖掘,但这应该让您开始: system/library/customer.php public function isLogged() { ... } if (!$this->customer->isLo
谢谢据我所知,没有内置的功能,但你可以自己做。根据您对@carpenocutomdc问题的回答,您可能需要做一些挖掘,但这应该让您开始: system/library/customer.php
public function isLogged() { ... }
if (!$this->customer->isLogged()) {
// login page
exit;
}
catalog/controller/common/home.php
public function isLogged() { ... }
if (!$this->customer->isLogged()) {
// login page
exit;
}
这是未经测试的,但应该为您指出正确的方向: (OpenCart 1.4.9.x) 将此保存到: catalog/controller/common/check_login.php
<?php
class ControllerCommonCheckLogin extends Controller {
public function index() {
if (!$this->customer->isLogged()) {
// Require to be logged in
$ignore = array(
'account', 'payment'
);
$match = false;
if (isset($this->request->get['route'])) {
foreach ($ignore as $i) {
if (strpos($this->request->get['route'], $i) !== false) {
$match = true;
break;
}
}
}
// Show site if logged in as admin
$this->load->library('user');
$this->registry->set('user', new User($this->registry));
if (!$this->user->isLogged() && !$match) {
return $this->forward('account/login');
}
}
}
}
?>
在以下内容之后添加:
// Login Check
$controller->addPreAction(new Action('common/check_login'));
基本上使用与维护检查相同的逻辑。。。最大的区别是它在字符串中查找单词“account”。。。如果找到它,它允许显示页面,如果没有,它将重定向到登录页面
如果他们需要注册,请使用“帐户”而不是“登录”一词。。。所有的帐户页面都已经检查了日志,所以不用担心
同样,未经测试,因此您可能需要调整一两件事情-但它应该/可能通过删除代码来工作
检查opencart 1.5.3的_login.php
<?php
class ControllerCommonCheckLogin extends Controller {
public function index() {
// Require to be logged in
if (!$this->customer->isLogged()) {
// Require to be logged in
$ignore = array(
'account','payment'
);
$match = false;
if (isset($this->request->get['route'])) {
foreach ($ignore as $i) {
if (strpos($this->request->get['route'], $i) !== false) {
$match = true;
break;
}
}
}
// Show site if logged in as admin
$this->load->library('user');
$this->user = new User($this->registry);
if (!$this->user->isLogged() && !$match) {
$this->redirect($this->url->link('account/login'));
}
}
}
}
?>
正确的方法是打开 /catalog/controller/common/home.php 在代码顶部找到
public function index(){
,然后将
if(!$this->customer->isLogged()) {
$this->session->data['redirect'] = $this->url->link('common/home');
$this->url->redirect('account/login', '', 'SSL');
}
如果您不确定如何正确执行此操作,只需查看中public function index(){
之后的前几行即可
/catalog/controller/account/account.php
将主控制器中的代码设置为
common/home
而不是account/account他们是否可以看到任何页面,或者必须从一开始就强制登录?您想使用基本登录/注册页面还是特殊登录页面?opencart的哪个版本?您为什么要修改isLogged功能?很好。。。此外,该解决方案的问题是,如果他们使用SEO url,他们仍然可以查看除主页以外的任何其他内容……我不是建议修改isLogged()函数,我只是指出isLogged()的位置函数以防他想去查看。是的,我知道这不是一个完整的解决方案,因为问题不完整,也没有对您的评论作出回应,我只是想告诉您如何“开始”。我有opencart_v1.5.1.3.1,但找不到$controller->addPreAction(新操作('common/maintenance/check'));对于opencart 1.5.1.3.x,它是/index.php的原始/未编辑版本中的第221行刚刚编辑了我的回答:它还需要在忽略数组中付款-否则它将拒绝付款回调是的,我添加$controller->addPreAction(新操作('common/check_login'));在index.php中的第221行之后,但仍然不起作用您是否将check_login.php文件添加到/catalog/common/check_login.php您是否以管理员身份登录?(它检查用户登录,然后检查管理员登录…)