admin user.class.php,关于php:CodeIgniter用户/管理员登录

嗨,我是CodeIgniter的新手,目前正在从事一个基本上是管理员/用户系统的项目。

目前,我已经能够创建登录表单,并且在检查用户存在之后可以成功让用户登录。

我只是想为正确的方向指明方向,以便能够将普通用户登录到成员页面,将管理员用户登录到管理页面。

这就是我目前所拥有的,它可以使用引导程序作为前端框架来充分发挥作用。但是允许我的成员表中的任何用户登录。

视图:

<?php $attributes = array("class" =>"form-horizontal","id" =>"loginform","name" =>"loginform");

echo form_open("login/loginchk", $attributes);?>

Please Login

Username

Password

这是我的登录控制器(login.php):

public function loginchk()

{

//get the posted values

$username = $this->input->post("txt_username");

$password = $this->input->post("txt_password");

//set validations

$this->form_validation->set_rules("txt_username","Username","trim|required");

$this->form_validation->set_rules("txt_password","Password","trim|required");

if ($this->form_validation->run() == FALSE)

{

$data["title"] ="SmartAgent";

//validation fails

$this->load->view("site_header");

$this->load->view("content_home", $data);

$this->load->view("site_footer");

}

else

{

//validation succeeds

if ($this->input->post('btn_login') =="Login")

{

//check if username and password is correct

$usr_result = $this->login_model->get_user($username, $password);

if ($usr_result > 0) //active user record is present

{

//set the session variables

$sessiondata = array(

'username' => $username,

'loginuser' => TRUE

);

$this->session->set_userdata($sessiondata);

redirect("site/members");

}

else

{

$this->session->set_flashdata('msg', 'Invalid username and password!');

redirect('site/home');

}

}

else

{

redirect('site/home');

}

}

以下是控制器内指向成员页面(site.php)的代码:

public function members(){

$data["title"] ="Admin Panel";

$this->load->model("notifications");

if ($this->session->userdata('loginuser')){

$this->load->view("site_header");

$this->load->view("site_nav");

$this->load->view('members', $data);

$this->load->view("site_footer");

} else {

redirect('site/restricted');

}

}

最后是我的模型(login_model.php):

function get_user($usr, $pwd)

{

$this->db->where('username', $usr);

$this->db->where('password', md5($pwd));

$query = $this->db->get('members');

//echo $query;

return $query->num_rows();

}

}

为了清楚起见,我有两个控制器,默认情况下,我的主控制器是site.php,而登录控制器名为login.php。总之,我的目标是能够将管理员用户重定向到members.php,并能够将普通用户重定向到agent.php(尚未创建)。

P.S我在PhpMyAdmin的表中已经有一个称为" admin"的列,我只需使用"是"或"否"来识别它们是否为。

离子身份验证是您的CodeIgniter应用程序的出色身份验证库,该库已设置为执行所有这些操作,包括各种用户组。 为什么要重新发明轮子?

@Sparky嗨,谢谢你,将研究它,我处在学习曲线上,因此我可以学到很多:)

这是一个来自我的项目的示例:

if ($this->form_validation->run())

{

$user   = $this->m_user->get_user_by_mail($this->input->post("login_mail"));

//Set session

$this->session->set_userdata(array('user' => $user));

if($user->is_admin == 1)

redirect('BackOffice');

else

redirect('FrontOffice');

}

else

{

$data["view"] ="home";

$this->layout->load_template($data); //This function do stuff an load a view

}

对于您而言,您不能这样做,因为您的模型不会返回用户,而是返回一个num行。

只是改变

return $query->num_rows();

通过

return $query->row();

然后,您应该能够测试您的用户是否是管理员。

嗨,Adrien,谢谢您的回答,我已将num_rows()更改为row(),现在当我使用诸如用户名:等等等等和密码登录时:(任何)它登录我了://有什么想法吗?

@AbdushSamadMiah:可能是因为您没有更改if($ usr_result> 0)。尝试if($ usr_result)

辉煌的工作! ......很抱歉,但是当您编写if($ user)-> is_admin == 1)是" is_admin"时,数据库中的一列,如果是这样,代码如何知道这一点。还是我必须写一些代码?如果" is_admin"是一种方法,那么您在哪里编写了此方法。在模型中?控制器?抱歉成为nooob:/

是的,is_admin是数据库中的表列之一。当您在模型中返回-> row()时,codeigniter将返回一个对象,其中您选择的每一列都将是一个变量。因此,如果您执行"选择ID,名称",则row()将返回具有$ obj-> id和$ obj-> name的对象。希望它的不稳定:)

非常有道理,以最简单的形式给出了最佳答案,非常感谢您的帮助,不胜感激!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值