プロジェクトでプリコントローラーフック codeigniter を使用しています
説明: サブドメインの概念と 3 つのテンプレート (テーマ) を使用しています。例: 私のサイトは xyz.com です。これには最初のテンプレートが 1 つあります。
この xyz サイトでのビジネス サインアップ。たとえば。abc(ビジネス)。abc.xyz.com を作成します。abc は 2 つのテンプレートを選択します。ブラウザの abc.xyz.com は、2 番目のテンプレートを表示する必要があります。2 番目のテンプレートが表示されていません。最初のテンプレートのみを表示しています。
サイト上の任意のリンクを複数回クリックすると、テンプレート 2 が abc.xyz.com リンクに設定されます。
コードイグナイターを使用しています。ロードされたセッション、自動ロード ファイル内のデータベース。
プリコントローラーフックを使用して、URL が xyz かサブドメイン abc.xyz.com かを確認しました。URL がサブドメイン 1 の場合、フックでテンプレートを設定しています。
ただし、abc.xyz.com がブラウザーにある場合、テンプレートは表示されません。いくつかのクリックの URL を更新するか、ヘッダー リンクのいずれかをクリックすると、ビジネス abc の実際のテンプレートが表示されます。
この問題を解決するか、解決策を教えてください。
<?php
class Subdomain_check extends CI_Controller{
public function __construct(){
parent::__construct();
$this->CI =& get_instance();
if (!isset($this->CI->session))
{
$this->CI->load->library('session');
}
}
function checking()
{
$subdomain_arr = explode('.', $_SERVER['HTTP_HOST']); //creates the various parts
if($subdomain_arr[0] == 'www')
{
$subdomain_name = $subdomain_arr[1]; //2ND Part
}
else
{
$subdomain_name = $subdomain_arr[0]; // FIRST Part
}
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
if( $subdomain_name != 'xyz' )
{
$where = array();
$where['subdomain_name'] = $subdomain_name;
$where['status'] = 1;
$this->db->from('subdomain_map');
$this->db->where($where);
$query = $this->db->get();
if($query->num_rows() < 1)
{
header('Location:http://xyz.com/index.php?/error');
}
else
{
$result = $query->row_array();
$this->CI->session->set_userdata('subdomain_id',$result['subdomain_id']);
$this->CI->session->set_userdata('subdomain_name',$result['subdomain_name']);
$org_id = gat_organisationid_using_subdomainid($result['subdomain_id']);
$this->CI->session->set_userdata('organisation_id', $org_id);
if($org_id)
{
$templ_id = get_templid_using_organisationid($org_id);
$org_logo = get_organisation_logo($org_id);
}
if($templ_id){
if($this->session->userdata('pinlogin'))
$this->CI->session->set_userdata('template_set', 4);
else
$this->CI->session->set_userdata('template_set', $templ_id);
}
if($org_logo)
$this->CI->session->set_userdata('org_logo', $org_logo);
}
}
else
{
$this->CI->session->unset_userdata('subdomain_id');
$this->CI->session->unset_userdata('subdomain_name');
if( $this->CI->session->userdata('user_id') && $this->CI->session->userdata('user_category')<=2 )
{
$this->CI->session->unset_userdata('organisation_id');
$this->CI->session->unset_userdata('org_logo');
}
}
}
}