【发布时间】:2013-03-14 00:08:31
【问题描述】:
如果用户未登录,我正在尝试限制来自页面的访问。奇怪的是,当未经授权的用户尝试访问该网页时,会显示受限访问的页面(带有“未经授权,请登录”消息,并在同一页面上加载仅限会员的页面)。
对于站点控制器:
class Site extends CI_Controller {
function __construct(){
parent::__construct();
$isLogged=$this->session->userdata('logged');
if($isLogged!='logged' || !isset($isLogged)){
$data['content']='denied';
$this->load->view('include/template', $data);
}
}
function members(){
$data['content']='memberArea';
$this->load->view('include/template', $data);
}
登录表单:
class Login extends CI_Controller {
function index () {
$data['content']='loginForm';
$this->load->view('include/template', $data);
}
function validateMember(){
// load the model for the login authentification
$this->load->model('loginModel');
//query should also contain the user details
$query = $this->loginModel->authenticate();
//if it returns something:
if($query){
foreach ($query as $row){
//set user data to be passed
$details=array(
'username'=>$row->user_name,
'id'=>$row->id,
'logged'=>'logged',);
}
//set session
$this->session->set_userdata($details);
redirect('site/members');
}
else{
$this->index();
}
}
登录的模型是:
class LoginModel extends CI_Model {
function authenticate(){
//select active fields
$this->db->select('id, user_name, password');
// query to select from table where conditions
$query = $this->db->get_where('login', array(
'user_name'=>$this->input->post('username'),
'password'=>$this->input->post('password'),),
1);
//if it finds something...must ask if i need to manually close the database with $this->db->close();
if($query->num_rows()==1){
foreach($query->result() as $row){
$data[]=$row;
}
return $data;
}
else {return false;}
}
}
我的测试表明,即使构造函数失败,站点也会继续调用其他函数。会话确实包含数据。如果我使用 die() 或 exit() 网页加载空白。非常感谢!
PS:视图中只有<p>,没什么特别的。
【问题讨论】:
-
您好,如果您想添加自己的答案,请添加 - 但请在答案框中添加,而不是作为问题的更新。与其在标题中添加“已解决”,不如勾选您最喜欢的答案(如果您愿意,也可以选择您自己的答案)。我已将问题回滚到之前的版本,但您可以copy your edit from here。
-
哦,对不起。然后我会选择我最喜欢的答案。没有冒犯的意思。
标签: php codeigniter