Ich habe eine Webanwendung mit Codeigniter entwickelt. Alles funktioniert perfekt auf localHost, aber jetzt, da ich es auf einen Server hochgeladen habe, habe ich ein einziges Problem. Alles funktioniert, da es meine Weiterleitung ausschließen soll, wenn der Benutzer das falsche Passwort eingibt. Es sollte zurück zur Anmeldeseite umgeleitet werden und eine Fehlermeldung anzeigen (was mit localhost funktioniert), aber ich bekomme die folgenden Fehler.Codeigniter Versuch, die Eigenschaft von nicht Objekt zu bekommen
Ich beschloss, nicht umgeleitet und einfach wieder Anmeldungs Ansicht zu laden, es funktioniert, aber ich habe immer noch die Trying Eigenschaft nicht Objekt Fehlermeldung zu erhalten, die ich seltsame Sache ist das nicht hast Fehler beim Arbeiten mit localhost.
Mein Controller:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Login extends CI_Controller {
public function index()
{
$this->load->view('header');
$this->load->view('login_view');
$this->load->view('footer');
}
public function to_login() {
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
$this->form_validation->set_rules('password', 'Password', 'trim|required');
if($this->form_validation->run() == FALSE) {
$data = array(
'errors' => validation_errors()
);
$this->session->set_flashdata($data);
redirect('index.php/Login');
} else {
$email = $this->input->post('email');
$password = $this->input->post('password');
// the following lines are 38 and 39
$user_id = $this->Login_model->login_user($email, $password)->user_id;
$first_name = $this->Login_model->login_user($email, $password)->first_name;
if($user_id) {
$user_data = array(
'user_id' => $user_id,
'first_name' => $first_name,
'logged_in' => true
);
$this->session->set_userdata($user_data);
redirect('http://gc200322197.computerstudi.es/app/index.php/Main');
} else {
$this->session->set_flashdata('login_fail', 'Invalid login. Please check the email and password fields.');
$this->load->view('header');
$this->load->view('login_view');
$this->load->view('footer');
}
}
}
Mein Modell:
<?php
class Login_model extends CI_Model{
public function login_user($email, $password) {
$this->db->where('email', $email);
$result = $this->db->get('users');
$db_password = $result->row(4)->password;
if(password_verify($password, $db_password)) {
return $result->row(0);
} else {
return false;
}
}
}
Ich habe so viele Fragen zu diesem Fehler zu lesen und ich konnte immer noch nicht herausfinden, was falsch ist und warum es funktioniert auf localhost und nicht online. Ich würde wirklich etwas Hilfe bei diesem Thema zu schätzen wissen.
Also, welche sind Linie # 38 und # 39? Es scheint, dass Ihr Controller den Klassenkonstruktor komplett vermisst, zB 'Klasse Login extends CI_controller {' – MonkeyZeus
Oh, tut mir leid, ich habe nicht den ganzen Controller Code eingefügt, nur die Funktion, die Klasse ist da, genau wie in Ihrem Kommentar. Zeilen 38 und 39 sind die folgenden: $ user_id = $ this-> Login_model-> login_user ($ email, $ password) -> user_id; $ erster_name = $ this-> Login_modell-> login_user ($ email, $ passwort) -> vorname; – Lberteh
Ist das 'Login_model' geladen?Normalerweise werden Modellnamen deklariert und über Kleinbuchstaben wie '$ this-> login_model-> login_user(); ' – MonkeyZeus