Php 如何在codeigniter中设置数据库中的会话用户数据?
我在codeigniter 3中的会话登录有问题。我无法从数据库获取数据以插入会话。我的代码怎么了 我的控制器Php 如何在codeigniter中设置数据库中的会话用户数据?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我在codeigniter 3中的会话登录有问题。我无法从数据库获取数据以插入会话。我的代码怎么了 我的控制器 function __construct(){ parent::__construct(); $this->load->model('m_login'); } function index(){ $this->load->view('v_login'); } function aksi_login(){ $user
function __construct(){
parent::__construct();
$this->load->model('m_login');
}
function index(){
$this->load->view('v_login');
}
function aksi_login(){
$username = $this->input->post('username');
$password = $this->input->post('password');
$where = array(
'username' => $username,
'password' => md5($password)
);
$cek = $this->m_login->cek_login("admin",$where)->num_rows();
if($cek > 0){
$data_session = array(
'username' => $cek['username'],
'nama' => $cek['nama']
'status' => "login"
);
$this->session->set_userdata($data_session);
redirect(base_url("admin"));
}else{
echo "Username dan password salah !";
}
}
}
我的模型
<?php
class M_login extends CI_Model{
function cek_login($table,$where){
return $this->db->get_where($table,$where);
}
}
像这样试试
function aksi_login(){
$username = $this->input->post('username');
$password = $this->input->post('password');
$where = array(
'username' => $username,
'password' => md5($password)
);
$result = $this->m_login->cek_login("admin",$where);
$cek = $this->m_login->cek_login("admin",$where)->num_rows();
if($cek > 0){
$cek = $result->row_array();//no your records are in array format having matched row
$data_session = array(
'username' => $cek['username'],
'nama' => $cek['nama']
'status' => "login"
);
$this->session->set_userdata($data_session);
redirect(base_url("admin"));
}else{
echo "Username dan password salah !";
}
}
在codeigniter中,row\u array()
以数组格式获取第一个匹配的行。因此您的函数aksi\u login()
必须如下所示
function aksi_login(){
$username = $this->input->post('username');
$password = $this->input->post('password');
$where = array(
'username' => $username,
'password' => md5($password)
);
$result = $this->m_login->cek_login("admin",$where);
$cek = $this->m_login->cek_login("admin",$where)->num_rows();
if($cek > 0){
$cek = $result->row_array();//no your records are in array format having matched row
$data_session = array(
'username' => $cek['username'],
'nama' => $cek['nama']
'status' => "login"
);
$this->session->set_userdata($data_session);
redirect(base_url("admin"));
}else{
echo "Username dan password salah !";
}
}
有关更多信息,请参见此处..1.m\u登录->cek\u登录
此函数返回一个SQL查询对象
2.SQL查询对象->num_rows()函数返回一个INT($cek)
所以$cek是一个整数。所以你不能像数组一样使用($cek['username'])
因此,请尝试此代码
function aksi_login(){
$username = $this->input->post('username');
$password = $this->input->post('password');
$where = array(
'username' => $username,
'password' => md5($password)
);
$cek = $this->m_login->cek_login("admin",$where);//$cek is a Query Object
$rows = $cek->num_rows();//$rows is a INT
if($rows > 0){
$cek = $cek->row_array();//now u get an Array
$data_session = array(
'username' => $cek['username'],
'nama' => $cek['nama']
'status' => "login"
);
$this->session->set_userdata($data_session);
redirect(base_url("admin"));
}else{
echo "Username dan password salah !";
}
}
你加载会话库了吗?是的,我加载了$自动加载['libraries']=array('database','session','form_validation');不工作。。致命错误:调用integeroh上的成员函数row_array(),抱歉,我的坏消息不起作用。致命错误:在/index.php中调用integeran和more…define('ENVIRONMENT','development')上的成员函数row_array()。然后你可以看到错误提示。很高兴能帮你解决这个问题。现在每个输入都可以登录。