当用户打开我们应用程序的任何链接时,我需要一个名称为site_check的控制器或执行以下操作的任何其他内容,首先将网站URL打开,就像“www.google.com”一样,我需要存储数据,如只有google.com,如果存在,则使用数据库检查此值。 如果存在则给go添加相同的本地cookie。在删除会话之前,不需要再次检查此项。 我将存储像我需要的值,将标题徽标和其他静态数据从平台拉到此。
我们可以通过多少种方式来尝试锻炼。
我是这个codeigniter和编码的新手,需要你的帮助..如何启动它我不知道,请帮助我。
答案 0 :(得分:0)
我相信您正在尝试为组织中的用户创建访问控制层,以访问您要允许的某些网站。虽然在NAT服务器后面的网络环境中,像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
现在登录您的用户
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);
}
如果你想让事情变得复杂,有很多方法,但这是最简单的。
答案 1 :(得分: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;
希望这能解决您的问题。