Codeigniter - Перевести сайт в режим обслуживания БЕЗ использования htaccess

1

Я закончил создание своего сайта с помощью codeigniter, а также создал панель администратора, где есть возможность отключить сайт.

Он сохраняется в базе данных как логическое значение, поэтому если он включен, или он отключен. Я также закончил создание offline.php просмотра offline.php.

Я также сделал столбец whitelisted_ip в моей базе данных, где IP-адрес администратора сохраняется в массиве. Единственная проблема заключается в отображении страницы обслуживания всем, кроме белых IP-адресов.

Я не могу использовать htaccess для этого, потому что я контролирую панель администратора и базу данных.

Что я хочу:

  • Когда сайт помещен в автономный режим с панели администратора, отобразите страницу обслуживания всем, кроме людей, чей IP-адрес находится в базе данных whitelisted_ip.

Что я до сих пор:

  • Контроллер offline.php

        public function index()
    {
    
        $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 {
    
    
            }
        } else {
            redirect(base_url());
        }
    
        $this->load->view('site_offline');
    }
    

Мне просто нужно, чтобы каждая страница на моем сайте имела этот код или рассказывала каждую страницу моего сайта о том, что если сайт находится в автономном режиме, покажите эту страницу офлайн.

Любая помощь высоко ценится. благодаря

Изменение: Пожалуйста, дайте мне знать, если это будет работать (работает для меня).

Файл MY_Controller.php:

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());
    }

} }

Все мои другие контроллеры:

class Page extends MY_Controller
{
public function __construct()
{
    parent::__construct();
    $this->offline_mode();
    $this->load->helper('url');
}

Это хороший способ пойти?

  • 0
    создайте родительский контроллер, пусть все остальные контроллеры наследуют от него. кроме контроллера входа. Затем в главном контроллере проверьте, не отключен ли сайт.
  • 0
    @NiranjanNRaju, поэтому мне нужно добавить extends MY_Controller в каждый контроллер?
Показать ещё 3 комментария
Теги:
codeigniter

1 ответ

1
Лучший ответ

измените это.

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());
    }

    } 
}

что я имею в виду, нет необходимости сохранять функцию и называть ее каждый раз. сохранить код в конструкторе. поэтому каждый раз, когда он проверяет, находится ли сайт в автономном режиме или нет.

Если вы вообще хотите сохранить, это функция, измените конструктор, подобный этому,

public function __construct()
{
    parent::__construct();
    $this->offline_mode();
}

Поэтому в обоих случаях вы можете писать код только один раз, не нужно вызывать функцию в каждом контроллере.

  • 0
    Спасибо человек, я редактировал код. Теперь, если страница находится в автономном режиме, она показывает автономную страницу, но также отображает и другую страницу. Die () тоже не работает.
  • 0
    Другая страница означает ??
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню