Php 仅使用一个代码创建多个站点

Php 仅使用一个代码创建多个站点,php,mysql,sql,database,codeigniter,Php,Mysql,Sql,Database,Codeigniter,当用户打开我们应用程序的任何链接时,我需要一个名为site_check的控制器,或者执行以下操作的任何其他控制器,首先像“www.google.com”一样打开站点url,我只需要像google.com一样存储数据,如果存在,则使用数据库检查该值。 如果存在,请尝试添加相同的本地cookie。在删除会话之前,无需再次检查此项。 我将存储这些值,就像我需要将标题徽标和其他静态数据从平台拉到这里一样 有多少种可能的方法可以让我们尝试这项运动 我是这个codeigniter的新手,需要你的帮助。。如何

当用户打开我们应用程序的任何链接时,我需要一个名为site_check的控制器,或者执行以下操作的任何其他控制器,首先像“www.google.com”一样打开站点url,我只需要像google.com一样存储数据,如果存在,则使用数据库检查该值。 如果存在,请尝试添加相同的本地cookie。在删除会话之前,无需再次检查此项。 我将存储这些值,就像我需要将标题徽标和其他静态数据从平台拉到这里一样

有多少种可能的方法可以让我们尝试这项运动


我是这个codeigniter的新手,需要你的帮助。。如何开始我不知道,请帮助我。

我相信您正在尝试为您组织中的用户创建访问控制层,以访问您希望允许的某些网站。虽然在服务器背后的网络环境中,一个简单的代理服务器(如Microsoft ISA)或任何第三方(如Kerio)可以通过创建一个简单的规则来帮助您

但如果您想在Codeigniter中执行相同的操作,则需要使用以下命令启动

步骤1

为允许的站点创建数据库表,如

id | website        
----------------------------------
1  | facebook.com   
2  | youtube.com    
您需要有像表一样的用户

id  | username       | details
-------------------------------------
1   | Mudassar       | php developer
id  | user_id   | site_id  | permission
----------------------------------------
1   |    1      |   2      | allowed
您需要有一个用户权限表,如

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');
  }
}
现在会话中有了用户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);
}

如果你想把事情复杂化,有很多方法,但这是最简单的

您好,这是我的解决方案,我用它开发了单核心多个站点创建了一个设置表保存基本信息,如域、站点名称和模板信息,在该表中添加许多设置,稍后在核心目录下创建我的\u控制器检查数据库中是否存在域

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;
    }
}
设置完成后,您可以将站点id作为外键添加到其他表(如pages、news)中,以获取特定于站点的页面、新闻以及有关站点的其他信息。现在用MY_控制器像这样扩展页面控制器或新闻控制器

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();
   }
}
如果您进一步希望站点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;
        }

}
现在,您可以在任何地方访问应用程序中的站点id,如模型、其他库和控制器

$this->setting->site_id;

希望这能解决你的问题。

到目前为止你做了什么?我不知道该做什么,从哪里开始以及如何开始..你至少有你的CI设置和视图呈现吗?谢谢umefarooq当我想检查数据库是否存在该站点时,如果他像google.com一样输入链接->我正在数据库中这样保存,如果他输入的是像www.google.com这样的链接,那么如何将www从输入的数据库中排除以签入数据库不要担心你可以检查上面的代码,我正在使用的代码与sql中的类似,在这种情况下,像“%google.com%”这样的域用户输入google.com或www.google.com都会起作用,请同时输入我的答案。