php - 仅使用一个代码即可多个站点

标签 php mysql sql database codeigniter

当用户打开我们应用程序的任何链接时,我需要一个名为 site_check 的 Controller 或任何其他执行以下操作的 Controller ,首先让网站网址完全像“www.google.com”一样打开,我需要存储如下数据仅 google.com,并且通过数据库检查该值是否存在。 如果存在,请尝试添加相同的本地 cookie。在 session 被删除之前不需要再次检查。 我将存储这些值,就像我需要将标题 Logo 和其他静态数据从平台拉到此一样。

我们可以尝试用多少种可能的方法来锻炼。

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

最佳答案

您好,这是我的解决方案,我用它来开发单核多个站点创建一个设置表,在该表中保存基本信息,如域、站点名称和模板信息,稍后添加许多设置,在核心目录下创建 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 扩展您的页面 Controller 或新闻 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,就像模型其他库和 Controller 一样

$this->setting->site_id;

希望这能解决您的问题。

关于php - 仅使用一个代码即可多个站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43336799/

相关文章:

php - 从字符串中删除所有非数字字符; [^0-9] 与预期不匹配

php - lastInsertId() 是否获取该脚本或整体插入的最后一个 ID?

mysql - 哪个数据库用于存储文件路径?

mysql - 如何修复我的 MySQL select 语句以获得正确的结果

php - 事件类不适用于某些菜单项

mysql - 计算与连接表不匹配

sql - 在 ColdFusion 中,属性值周围的单引号和双引号有什么作用?

php - 如何获取自上次在 PHP 中编辑 MySQL 数据库以来的时间

SQL Server 2008 物理服务器切换时打开主 key 错误

javascript - 使用ajax提交表单后表单消失