Codeigniter:无法区分管理页面和会员页面
Codeigniter: Unable to differentiate between admin and member page
这是登录控制器代码:
public function login_validation(){
$this->load->library('form_validation');
$this->load->model('model_users');
$this->form_validation->set_rules('username', 'Username', 'required|trim|alpha_numeric|xss_clean|strip_tags');
$this->form_validation->set_rules('password', 'Password', 'required|md5|trim|xss_clean|strip_tags');
if ($this->form_validation->run()){
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => 1
);
if($this->model_users->get_status($data['username'])){
$data = array(
'username' => $this->input->post('username'),
'status' => 'member',
'is_logged_in' => 1
);
$this->session->set_userdata($data);
redirect('member');
} else {
$data = array(
'username' => $this->input->post('username'),
'status' => 'admin',
'is_logged_in' => 1
);
$this->session->set_userdata($data);
redirect('admin');
}
} else {
$this->login();
}
}
这是管理控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin extends CI_Controller {
public function __construct(){
parent::__construct();
if (! $this->session->userdata('is_logged_in')){
$status = $this->session->userdata('status');
if ($status == 'member'){
redirect('main/restricted');
}
redirect('main/restricted');
}
}
public function index() {
$data = array(
'title' => 'Admin Page'
);
$this->load->view("header", $data);
$this->load->view("admin");
$this->load->view("nav");
$this->load->view("footer");
}
}
这是会员控制器代码:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Member extends CI_Controller {
public function __construct(){
parent::__construct();
if (! $this->session->userdata('is_logged_in')){
$status = $this->session->userdata('status');
if ($status == 'admin'){
redirect('main/restricted');
}
redirect('main/restricted');
}
}
public function index() {
$data = array(
'title' => 'Member Page'
);
$this->load->view("header", $data);
$this->load->view("member");
$this->load->view("nav");
$this->load->view("footer");
}
}
我想知道为什么会员登录后可以进入管理页面,而且管理员登录后也可以进入会员页面。
我希望它的工作原理是,会员登录后,会员将只能访问会员页面。 admin登录后admin将只能访问admin页面
有人可以帮我吗
您需要将会话状态与 'member' 或 'admin' 进行比较,而不仅仅是检查它是否已设置。
在管理控制器中:
$status = $this->session->userdata('status')
if ($status == 'member'){
redirect('main/restricted');
}
与成员控制器中的'admin'类似。
if (! $this->session->userdata('is_logged_in'))
我觉得你的if
条件returnsfalse
.
您没有为 else
condition.Write 编写任何代码 else
。
如果您的 if
条件是 false
每个人都可以访问成员和管理员控制器。
确保你的if
条件returnstrue
我想你的代码可能是这样的
if (! $this->session->userdata('is_logged_in'))
{
//write code for not loged user
}
else
{
$status = $this->session->userdata('status');
if ($status == 'member'){
redirect('main/restricted');
}
}
这是登录控制器代码:
public function login_validation(){
$this->load->library('form_validation');
$this->load->model('model_users');
$this->form_validation->set_rules('username', 'Username', 'required|trim|alpha_numeric|xss_clean|strip_tags');
$this->form_validation->set_rules('password', 'Password', 'required|md5|trim|xss_clean|strip_tags');
if ($this->form_validation->run()){
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => 1
);
if($this->model_users->get_status($data['username'])){
$data = array(
'username' => $this->input->post('username'),
'status' => 'member',
'is_logged_in' => 1
);
$this->session->set_userdata($data);
redirect('member');
} else {
$data = array(
'username' => $this->input->post('username'),
'status' => 'admin',
'is_logged_in' => 1
);
$this->session->set_userdata($data);
redirect('admin');
}
} else {
$this->login();
}
}
这是管理控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin extends CI_Controller {
public function __construct(){
parent::__construct();
if (! $this->session->userdata('is_logged_in')){
$status = $this->session->userdata('status');
if ($status == 'member'){
redirect('main/restricted');
}
redirect('main/restricted');
}
}
public function index() {
$data = array(
'title' => 'Admin Page'
);
$this->load->view("header", $data);
$this->load->view("admin");
$this->load->view("nav");
$this->load->view("footer");
}
}
这是会员控制器代码:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Member extends CI_Controller {
public function __construct(){
parent::__construct();
if (! $this->session->userdata('is_logged_in')){
$status = $this->session->userdata('status');
if ($status == 'admin'){
redirect('main/restricted');
}
redirect('main/restricted');
}
}
public function index() {
$data = array(
'title' => 'Member Page'
);
$this->load->view("header", $data);
$this->load->view("member");
$this->load->view("nav");
$this->load->view("footer");
}
}
我想知道为什么会员登录后可以进入管理页面,而且管理员登录后也可以进入会员页面。
我希望它的工作原理是,会员登录后,会员将只能访问会员页面。 admin登录后admin将只能访问admin页面
有人可以帮我吗
您需要将会话状态与 'member' 或 'admin' 进行比较,而不仅仅是检查它是否已设置。 在管理控制器中:
$status = $this->session->userdata('status')
if ($status == 'member'){
redirect('main/restricted');
}
与成员控制器中的'admin'类似。
if (! $this->session->userdata('is_logged_in'))
我觉得你的if
条件returnsfalse
.
您没有为 else
condition.Write 编写任何代码 else
。
如果您的 if
条件是 false
每个人都可以访问成员和管理员控制器。
确保你的if
条件returnstrue
我想你的代码可能是这样的
if (! $this->session->userdata('is_logged_in'))
{
//write code for not loged user
}
else
{
$status = $this->session->userdata('status');
if ($status == 'member'){
redirect('main/restricted');
}
}