2016-04-02 15 views
0

Ich baue eine Test-Website für mich mit Code Igniter und kämpfe mit Logins. Ich kann neue Benutzer erstellen und speichern sie in der Datenbank ohne Probleme nach phpMyAdmin, aber habe Schwierigkeiten mit der BenutzeranmeldungCode Igniter Login Validierung Probleme

Meine aktuellen Code ist.

Controller:

public function index() 
{ 
    $this->home(); 
} 

public function home() 
{ 
    $this->load->model('model_users'); 

    $data['emails'] = $this->model_users->getEmails(); 
    $data['users'] = $this->model_users->getUsers(); 

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

public function validate_credentials() { 
    $this->load->model('model_users'); 
    $query = $this->model_users->validate(); 


    if($query){ 
     $data = array(
      'email' => $this->input->post('email'), 
      'is_logged_in' => true 
     ); 
     $this->session->set_userdata($data); 
     redirect('trade'); 
    } 
    else{ 
     $this->load->view('about_us'); 
    } 
} 

Modell:

<?php 
class Model_users extends CI_Model { 
    function __construct() { 

     parent::__construct(); //Call the model constructor 
    } 

    function validate() { 
     $this->db->where('email', $this->input->post('email')); 
     $this->db->where('password', md5($this->input->post('password'))); 
     $query = $this->db->get('users'); 

     if($query->num_rows == 1) { 
      return true; 
     } 
    } 

    function create_member() { 
     $email = $this->input->post('email'); 

     $new_user = array(
      'email' => $this->input->post('email'), 
      'name' => $this->input->post('name'), 
      'password' => md5($this->input->post('password')) 
     ); 

     $insert = $this->db->insert('users', $new_user); 
     return $insert; 
    } 

    function check_email_exists($email) { 
     $this->db->where('email', $email); 
     $result = $this->db->get('users'); 

     if($result->num_rows() > 0) { 
      return FALSE; //email taken 
     }else{ 
      return TRUE; //email available 
     } 
    } 

    function getEmails() { 

     $query = $this->db->query('SELECT email FROM users'); 

     if($query->num_rows() > 0){ 
      return $query->result(); 
     } else{ 
      return NULL; 
     } 
    } 

    function getUsers() { 

     $query = $this->db->query('SELECT * FROM users'); 

     if($query->num_rows() > 0) { 
      return $query->result(); 
     } else { 
      return NULL; 
     } 
    } 
} 

Ausblick:

<body>  
    <!-- Page Content --> 
    <div id="page-content-wrapper"> 
     <div class="container-fluid"> 
      <div class="row"> 
       <div class="col-lg-12"> 
        <div id="login_form"> 

         <?php if(isset($successful_creation)) { ?> 
          <h3><?php echo $successful_creation; ?></h3> 
         <?php } else { ?> 
          <h1><i class="fa fa-user fa-fw fa-lg"></i>Login</h1> 
         <?php } ?> 

         <?php 
         echo form_open('welcome/validate_credentials'); 
         echo form_input('email', '', 'placeholder="Email"'); 
         echo form_password('password', '', 'placeholder="Password" class="password"'); 
         echo form_submit('submit', 'Login'); 
         echo anchor('signup', 'Create Account'); 
         echo form_close(); 
         ?> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
    <!-- /#page-content-wrapper --> 
</div> 
<!-- /#wrapper --> 

Als ich getroffen Anmeldung auf der Login-Seite, ich bin immer auf die About_Us Seite umgeleitet, die ich dort war gerade platziert zu testen, ob Anmeldung oder nicht funktioniert. Gibt es Probleme mit meinem Code, den ich übersehen habe? Jede Hilfe würde sehr geschätzt werden.

+0

zeigen Sie das Ergebnis von print_r ($ Ergebnis); –

+0

'var_dump()' Ihre '$ query' Variable in Ihrer' validate() 'Funktion. Wenn Sie weiter zur Seite "Über uns" weitergeleitet werden, gibt validate() 'false zurück. Überprüfen und überprüfen Sie die Abfrage. – Keeleon

+0

@NavnitMishra Okay Ich habe das in check_email_exists gemacht, und es sagt folgendes: '([current_field] => 0 [field_count] => 4 [Längen] => [num_rows] => 0 [type] => 0) [ result_array] => Array() [Ergebnis_Objekt] => Array() [custom_result_object] => Array() [current_row] => 0 [num_rows] => [row_data] =>) ' – Kanery

Antwort

1

Verwenden Sie in Ihrem Modell die validate()-Methode, verwenden Sie $query->num_rows() statt $query->num_rows. Es sollte so sein:

if($query->num_rows() == 1) { 
    return true; 
} 
+0

Mann vielen Dank, es funktioniert jetzt perfekt. Etwas so verdammt kleines, ich fühle mich jetzt albern. Danke noch einmal! – Kanery