Php 检查管理员是否已登录
如果有人登录,这段代码检查会话,我可以成功地查看页面,但现在我想检查用户是否是管理员。我试着在下面的模型检查是什么,我已经尝试,它不工作 方法,该方法检查会话及其是否为管理员Php 检查管理员是否已登录,php,codeigniter,Php,Codeigniter,如果有人登录,这段代码检查会话,我可以成功地查看页面,但现在我想检查用户是否是管理员。我试着在下面的模型检查是什么,我已经尝试,它不工作 方法,该方法检查会话及其是否为管理员 public function index() { $this->load->library('authlib'); $loggedin = $this->authlib->is_loggedin(); ///$admin = $this->auth->admin
public function index()
{
$this->load->library('authlib');
$loggedin = $this->authlib->is_loggedin();
///$admin = $this->auth->admin();
if ($loggedin === false) {
$this->load->helper('url');
redirect('/auth/login');
}
if ($this->auth->admin() === false) {
$message ['msg'] = "You are not an admin!";
$this->load->view('homeview', $message);
}
else
{
$this->load->view('add_view');
}
}
身份验证控制器
public function authenticate()
{
$username = $this->input->post('uname');
$password = $this->input->post('pword');
$user = $this->authlib->login($username,$password);
**>> $this->admin($username,$password); << passes the posted in values**
if ($user !== false) {
$this->load->view('homeview',array('name' => $user['name']));
}
else {
$data['errmsg'] = 'Unable to login - please try again';
$this->load->view('login_view',$data);
}
}
public function admin($username,$password){
//$this->load-model('usermodel');
$admin = $this->authlib->adminlib($username,$password);
if ($admin == false){
return false;
//if ($res->num_rows() != 1){
//return false;
}
}
模型
function chkadmn($username,$password)
{
$this->db-where(array('username' => $username,'password' => sha1($password)));
$res = $this->db->get('users',array('type'));
if ($res->num_rows() != 1) {
return false;
}
}
进行了一些更改,现在我在第54行得到了“C:\xampp\htdocs\ecwm604\application\models\usermodel.php中的未定义函数where()的调用”我个人将替换您的所有if语句,并对其进行测试,如图所示:
public function index()
{
$this->load->library('authlib');
$loggedin = $this->authlib->is_loggedin();
///$admin = $this->auth->admin();
if (!$loggedin) {
$this->load->helper('url');
redirect('/auth/login');
}
if (!$this->auth->admin()) {
$message ['msg'] = "You are not an admin!";
$this->load->view('homeview', $message);
}
else
{
$this->load->view('add_view');
}
}
public function admin(){
$this->load-model('usermodel');
$admin = $this->usermodel->chkadmn($username,$password);
if (!$admin){
return false;
//if ($res->num_rows() !== 1){
//return false;
}
}
function chkadmn($username,$password)
{
$this->db-where(array('username' => $username,'password' => sha1($password)));
$res = $this->db->get('users',array('type'));
if ($res->num_rows() !== 1) {
return false;
}
}
我马上想到的是chkadmn声明时没有参数。但是如果您发布收到的错误消息,您的运气会好得多。有很多语法错误,1)
$this->auth->admin()
您在哪里加载了库/模型?。2) if($this->auth->admin()==false){
没有右大括号。3)在Auth Controller中,您在哪里设置了$res
变量。4)chkadmn函数不声明参数,也不返回任何内容您应该在PHP.ini文件中打开PHP错误,看看您得到了什么。uSuggestion:我不确定您使用的是什么库。我在我的项目中使用了Ion_Authts这是docs link@NickODell除了要打印的未定义变量的通知之外,我没有收到任何错误消息。我已经添加了参数,在正常用户登录后,我仍然可以查看add_视图。这可能是我的if语句吗?
public function index()
{
$this->load->library('authlib');
$loggedin = $this->authlib->is_loggedin();
///$admin = $this->auth->admin();
if (!$loggedin) {
$this->load->helper('url');
redirect('/auth/login');
}
if (!$this->auth->admin()) {
$message ['msg'] = "You are not an admin!";
$this->load->view('homeview', $message);
}
else
{
$this->load->view('add_view');
}
}
public function admin(){
$this->load-model('usermodel');
$admin = $this->usermodel->chkadmn($username,$password);
if (!$admin){
return false;
//if ($res->num_rows() !== 1){
//return false;
}
}
function chkadmn($username,$password)
{
$this->db-where(array('username' => $username,'password' => sha1($password)));
$res = $this->db->get('users',array('type'));
if ($res->num_rows() !== 1) {
return false;
}
}