2017-04-11 50 views
0

當用戶打開我們的應用程序的任何鏈接時,我需要一個名爲site_check的控制器或其他任何執行以下操作的控制器,首先獲取網站URL完全像「www.google.com」我需要像只有google.com那樣存儲數據,並且如果存在數據庫時檢查了這個值。 如果存在,則添加一個相同的本地cookie。在會話被移除之前不需要再次檢查。 我將存儲像我需要拉平臺的標題標誌和其他靜態數據到這個值。只使用一個代碼的多個網站

有多少種可能的方式,我們可以嘗試這種鍛鍊。

我是一個新的codeigniter和編碼,需要你的幫助..如何開始它我沒有任何想法,請幫助我。

+0

到目前爲止你做了什麼? –

+0

我不知道該怎麼做,從哪裏開始以及如何開始.. – Ahmed

+1

你是否至少有你的CI設置和視圖呈現? –

回答

0

嗨,這裏是我的解決方案,我用它來開發單核心多個網站創建一個設置表保存基本信息,如表中的域名,站點名稱和模板信息,稍後添加許多設置,在覈心目錄檢查下創建MY_Controller域存在於數據庫中或不

class MY_Controller extends CI_Controller { 

    public $site_id = 0; 
    public $template = ''; 

    function __construct(){ 
     parenet::__construct() 
     $this->loadSetting(); 
    } 

    function loadSetting(){ 
     $host = $_SERVER['HTTP_HOST']; 
     $row = $this->db->where_like('domain',$host)->get('setting')->row(); 
     $this->site_id = $row->id; 
     $this->template = $row->template; 
    } 
} 

一旦設置完成後,你可以在樣頁的其他表的外鍵,消息得到網站特定頁面和新聞和網站等信息添加SITE_ID。現在使用MY_Controller擴展你的頁面控制器或新聞控制器。

class Page_Controller extends MY_Controller { 
    function __construct(){ 
     parent::__construct(); 
    } 

    function index(){ 
     $page = $this->db->get_where('pages',array('site_id',$this->site_id))->row(); 
    } 
} 

,如果你想進一步提供SITE_ID每一個地方在你的應用程序,你可以創建一個庫和自動加載該庫,你可以把loadSetting方法在該庫中。像

class Setting { 
    private $ci; 
    public $site_id; 
    public $template; 

    function __construct(){ 
     $this->ci = get_instance(); 
     $this->loadSetting(); 
    } 

function loadSetting(){ 
      $host = $_SERVER['HTTP_HOST']; 
      $row = $this->ci->db->where_like('domain',$host)->get('setting')->row(); 
      $this->site_id = $row->id; 
      $this->template = $row->template; 
     } 

} 

現在你可以在你的應用程序中訪問SITE_ID任何地方像模特其他圖書館和控制器這樣

$this->setting->site_id; 

希望這將解決您的問題。

+0

感謝umefarooq還有一件事,當我想檢查數據庫是否存在或不存在,如果他進入像google.com這樣的鏈接 - >我像db這樣保存,如果他輸入像www.google.com這樣的鏈接,那麼如何排除www從輸入檢查分貝 – Ahmed

+0

不要擔心,你可以檢查上面的代碼,我使用像在sql中的條件,它會像這樣的域名像「%google.com%」用戶輸入google.com或www.google.com將工作,請把我的答案也。 – umefarooq

0

我相信你正試圖爲組織中的用戶創建訪問控制層來訪問你想要允許的某些網站。雖然在NAT服務器後面的網絡環境中,但像Microsoft ISA這樣的簡單代理服務器或Kerio等任何第三方都可以通過創建簡單規則來幫助您解決問題

但是,如果您想在Codeigniter中執行相同的操作,以下

第1步

創建數據庫表中允許的站點像

id | website   
---------------------------------- 
1 | facebook.com 
2 | youtube.com  

你需要有用戶表LIK Ë

id | username  | details 
------------------------------------- 
1 | Mudassar  | php developer 

你需要有用戶權限表像

id | user_id | site_id | permission 
---------------------------------------- 
1 | 1  | 2  | allowed 

現在登錄用戶

public function Login() 
{ 
    if($_POST) 
    { 
    // You can perform Validation here 

    $user_data=$this->Login_Model->checkUser($_POST); 
    if($user_data) 
    { 
     $this->session->set_userdata($user_data); 
     redirect(base_url().'user/dashboard'); // or whatever link 
    } 
    } 
    else 
    { 
     $this->load->view('login_view'); 
    } 
} 

所以,現在你在你的會話已經user_id說明。時間到您的儀表盤據稱具有鏈接加載到不同的網站

public function dashboard() 
{ 
    $data['sites']=$this->User_Model->getPermittedSites(); 
    // Now you are only sending permitted sites to the user view 
    $this->load->view('dashboard',$data); 
} 

如果你想使事情複雜化,有噸的方法,但是這是最簡單的。

相關問題