首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码点火器-在不使用htaccess的维护模式下放置站点

代码点火器-在不使用htaccess的维护模式下放置站点
EN

Stack Overflow用户
提问于 2015-10-12 15:01:05
回答 1查看 3.4K关注 0票数 1

我已经完成了构建我的网站使用代码点火器,并已经建立了一个管理面板,其中有一个选项,使网站离线。

它以布尔值的形式保存在数据库中,所以如果它是1,站点就打开了,否则它就离线了。我还完成了一个offline.php视图文件的制作。

我还在我的数据库中创建了一个whitelisted_ip列,其中admin保存在一个数组中。唯一的问题是向每个人显示维护页面,但白名单上的IP除外。

我不能为此使用htaccess,因为我是从管理面板和数据库控制。

我想要的:

  • 当站点从管理面板转离线时,向数据库中的whitelisted_ip中的IP用户以外的所有人显示维护页面。

到目前为止我所拥有的是:

  • offline.php控制器 公共函数索引(){ $this->db->select('*');$this->db->from('site');$this->db->where('1',1);$query = $this->db->get();$result = $query->row();$whitelisted_ip =get( ",“,$result>whitelisted);$ip =$this->input->ip();如果($结果->站点_脱机){ if (!in_array($ip,$whitelisted_ip)) {$this->load->视图(‘site_offline’);}offline{}{重定向(base_url());}$this->load->视图(‘site_offline’);

我只需要能够让我的网站上的每一个页面都有这个代码,或者告诉我的网站上的每一个页面,如果该站点是脱机的,显示离线页面。

任何帮助都是非常感谢的。谢谢

编辑:请让我知道这是否有效(对我有用)。

MY_Controller.php文件:

代码语言:javascript
复制
class MY_Controller extends CI_Controller
{
public function __construct()
{
    parent::__construct();
}

function offline_mode()
{

    $this->db->select('*');
    $this->db->from('site');
    $this->db->where('1', 1);
    $query = $this->db->get();
    $result = $query->row();

    $whitelisted_ip = explode(",", $result->whitelisted_ip);
    $ip = $this->input->ip_address();


    if ($result->site_offline) {
        if (!in_array($ip, $whitelisted_ip)) {

            $this->load->view('site_offline');
        }
    } else {
        redirect(base_url());
    }

} }

我所有的其他控制员:

代码语言:javascript
复制
class Page extends MY_Controller
{
public function __construct()
{
    parent::__construct();
    $this->offline_mode();
    $this->load->helper('url');
}

这是个好办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-12 15:42:40

像这样改变。

代码语言:javascript
复制
public function __construct()
{
    parent::__construct();
    $this->db->select('*');
    $this->db->from('site');
    $this->db->where('1', 1);
    $query = $this->db->get();
    $result = $query->row();

    $whitelisted_ip = explode(",", $result->whitelisted_ip);
    $ip = $this->input->ip_address();


    if ($result->site_offline) {
        if (!in_array($ip, $whitelisted_ip)) {

            $this->load->view('site_offline');
        }
    } else {
        redirect(base_url());
    }

    } 
}

我的意思是,不需要每次都保持功能。将代码保存在构造函数中。所以每次它检查网站是否离线。

如果您想保留is作为函数,请像下面这样更改构造函数,

代码语言:javascript
复制
public function __construct()
{
    parent::__construct();
    $this->offline_mode();
}

因此,在这两种情况下,您只编写一次检查代码,不需要调用每个控制器中的函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33084295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档