php - HOW to set_userdata login codeigniter
Get the solution ↓↓↓I get Message error: Trying to get property of non-object, and i dont know solved this problem. please help
CONTROLLER
public function login_user(){
$user =array( 'email_user'=> $this->input->post('email_user'),
'password_user'=> $this->input->post('password_user'));
$myquery= $this->user_model->login_check($user['email_user'],
$user['password_user']);
if ($myquery== TRUE) {
foreach($myquery as $d){
$session_array = array(
'id_user'=>$d->id_user,
'username_user'=>$d->username_user,
'email_user'=>$d->email_user,
'phone_user'=>$d->phone_user,
'tanggal_lahir'=>$d->tanggal_lahir
);
$this->session->set_userdata('loggedIn',$session_array);}
$this->load->view('v_formluar.php');
}
else{
$this->session->set_flashdata('error_msg', 'Error occured,Try again.');
$this->load->view('v_login.php');
}
}
I don't know to get data from model to controller,
MY MODEL
public function login_check($email, $password){
$this->db->select('registrasi.user_id,
registrasi.username_user,
registrasi.email_user,
registrasi.password_user')
->from('registrasi')
->where("registrasi.email_user = '$email' OR registrasi.username_user = '$email' ");
$query = $this->db->get();
if($query->num_rows() == 1){
return $query->row();
} else {
return false;
}
}
Answer
Solution:
Your use of$myquery
is not correct since your model return data or false. Change the controller code as follows:
public function login_user(){
$user =array( 'email_user'=> $this->input->post('email_user'),
'password_user'=> $this->input->post('password_user'));
$myquery= $this->user_model->login_check($user['email_user'],
$user['password_user']);
if ($myquery!=FALSE) {
foreach($myquery as $d){
$session_array = array(
'id_user'=>$d->id_user,
'username_user'=>$d->username_user,
'email_user'=>$d->email_user,
'phone_user'=>$d->phone_user,
'tanggal_lahir'=>$d->tanggal_lahir
);
$this->session->set_userdata('loggedIn',$session_array);}
$this->load->view('v_formluar.php');
}
else{
$this->session->set_flashdata('error_msg', 'Error occured,Try again.');
$this->load->view('v_login.php');
}
}
Answer
Solution:
First you load the model in your controller:
$this->load->model('your_model_name_m');
Then you can use the model in your controller:
$logged_in = $this->your_model_name_m->login_check('[email protected]', 'password!#$');
If you frequently use this model, you can also autoload it via the config file in the model section:
$autoload['model'] = array( "your_model_name" );
Answer
Solution:
Your Model
Use brackets with your database condition
public function login_check($email, $password){
$this->db->select('registrasi.user_id,
registrasi.username_user,
registrasi.email_user,
registrasi.password_user')
->from('registrasi')
->where("(registrasi.email_user = '$email' OR registrasi.username_user = '$email' )");
$query = $this->db->get();
if($query->num_rows() == 1){
return $query->row();
} else {
return false;
}
}
Your Controller
if(isset($myquery) && $myquery != ''){
//foreach loop
}else{
//No record found
}
You can also usewhere()
andor_where()
for your condition
Answer
Solution:
Try by replacing
if($myquery==TRUE){
// your code
}
with
if($myquery){
// your code
}
Share solution ↓
Additional Information:
Link To Answer People are also looking for solutions of the problem: using $this when not in object context
Didn't find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.