2017-06-11 4 views
1

Ich mache gerade ein Projekt und bei meinem Projekt gibt es ein Login modal. Die Dinge, die ich bisher mit Ajax gemacht habe, sind: 1) Prüfe, dass sowohl der Feldname als auch das Passwort einen Wert haben; 2) Das Feld Benutzername hat nur einen Wert (Passwortfeld ist leer); 3) Überprüfen Sie, ob das Konto verifiziert ist oder nichtÜberprüfen Sie, ob Benutzername und Passwort mit ajax coderigniter übereinstimmen

HINWEIS: Ich habe gerade versucht, wenn ($ data ['validateLogin']> 0) wenn es einen Wert hat, ja es funktioniert, aber wenn ich den richtigen Benutzernamen eingegeben und Passwort es gibt immer noch einen Fehler "Falscher Benutzername oder Passwort"

Frage: Wie kann überprüft werden, ob der Benutzername und das Passwort korrekt sind? Ist mein Zustand falsch? if ($ data ['validateLogin']> 0)? Ansicht

Anmeldung Modal

<!-- Login --> 
      <div id="myLogin" class="modal fade" role="dialog"> 
       <div class="modal-dialog"> 
        <!-- Modal content--> 
        <div class="modal-content"> 
         <div class="modal-header"> 
          <button type="button" class="close" data-dismiss="modal">&times;</button> 
          <h4 class="modal-title">Login</h4> 
         </div> 
         <div class="modal-body"> 
          <form id="login" encrypt="multipart/form-data"> 
           <div class="form-group"> 
            <label> Username: </label> 
            <input type="text" class="form-control" name="username" id="username"> 
           </div> 
           <div class="form-group"> 
            <label> Password: </label> 
            <input type="password" class="form-control" name="password" id="password"> 
           </div> 
         </div> 
         <div class="modal-footer"> 
          <button type="submit" class="btn btn-primary"> Login </button> 
          </form> 
          <a data-toggle="modal" href="#mySignup" data-dismiss="modal">Sign up</a> 
         </div> 
        </div> 

       </div> 
      </div> 

AJAX für die Anmeldungs ​​modal

$("#login").on('submit',function(event){ 

      $.ajax({ 
       url: "http://localhost/itsq/User/validate_user", 
       type: "POST", 
       data: $(this).serialize(), 
       success: function(data) { 
        var result = JSON.parse(data); 
        //alert(data); 
        if(result===1) 
          { 
           swal({ 
            type: 'success', 
            html: 'Update Successful!', 
            timer: 2000, 
            }) 
           setTimeout(function() { 

            document.location.href=base_url + "User/"; 

           }, 2000); 
          // document.location.href="http://localhost/ecom/Administrator/view_staff_Account"; 

          } 
          else 
          { 

           swal({ 
            type: 'error', 
            html: result, 
            timer: 2000, 
            }) 

          console.clear(); 
          } 
        // $.LoadingOverlay("hide"); 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
      console.log(xhr.status); 
      console.log(xhr.responseText); 
      console.log(thrownError); 
     } 
      }) 
      event.preventDefault(); 
    }); 

-Controller

public function validate_user() 
    { 
     $this->form_validation->set_error_delimiters('<div class="alert alert-danger" role="alert" style="padding:2px">', '</div>'); 
     $this->form_validation->set_rules('username', 'Username', 'required|trim'); 
     $this->form_validation->set_rules('password', 'Password', 'required|trim'); 
     if ($this->form_validation->run() == FALSE) 
     { //if validation is false go to itemList 
      echo json_encode(validation_errors()); 

     } 
     else 
     { 

      $username = $_POST['username']; 
      $password = $_POST['password']; 

      $data['validateLogin'] = $this->CrudModel->validate_user($username,md5($password)); 

      if($data['validateLogin'] > 0) // If there's no match then do this 
      { 

       echo json_encode("Incorrect username or password"); 
      } 
      else // Get all the information for that account 
      { 
       foreach($data['validateLogin'] as $vl) // Save it to one variable 
       { 
        $user_id = $vl->id; 
        $status = $vl->status; 
       } 

       if($status != "Verified") // Is not verified 
       { 
        echo json_encode("Your account is not verified"); 


       } 
       else 
       { 
        $this->session->set_userdata(array('user' => true, 'first_name' => $first_name, 'middle_name' => $middle_name, 'last_name' => $last_name,'gender' => $gender,'age' => $age, 'email' => $email,'username' => $username,'address' => $address, 'credit_card' => $credit_card, 'bank_name' => $bank_name)); 
        redirect('administrator/index',$data); 
        echo json_encode(1); 
       } 
      } 


      // $this->CrudModel->insert('users', $customer); 
      // echo json_encode(1); 
     } 


    } 

Modell

// public function validate_user($table,$username_column,$email_column,$password_column,$username, $password) 
public function validate_user($table,$username, $password) 
{ 
    $this->db->select('username,email,password'); 
    $this->db->where("(email = $username OR username = $username) AND password = $password"); 
    // $query = $this->db->get($table); 
    $query = $this->db->get(); 
    echo $this->db->last_query(); 
    return $query->result(); 
    // $query = $this->db->get_where($table,array($username_column => $username,$password_column => $password)); 
// return $query->result(); 
} 
+1

stellen Sie sicher, dass Sie nicht verschlüsseltes Passwort in der Datenbank verwenden !! – Shihas

+0

Verwenden Sie MD5 nicht für Passwörter, die nicht mehr sicher sind, verwenden Sie den php http://php.net/manual/en/function.password-hash.php und bestätigen Sie den Rückruf http://php.net/manual/en/ function.password-verify.php – user4419336

+0

Ihr Code ist anfällig für [** SQL injection **] (https://en.wikipedia.org/wiki/SQL_injection) Angriffe. Sie sollten [** mysqli **] (https://secure.php.net/manual/en/mysqli.prepare.php) oder [** PDO **] (https://secure.php.net/) verwenden. manual/de/pdo.prepared-statements.php) vorbereitete Anweisungen mit gebundenen Parametern wie in [** dieser Beitrag **] beschrieben (https://stackoverflow.com/questions/60174/how-cani-i-prevent-sql -injektion-in-php). –

Antwort

2

Sie benötigen eine Bedingung

if(count($data['validateLogin']) == 0) // If there's no match then do this 
1

zu ändern, wenn es ein Ergebnis von validate_user ist es true zurück. Wenn es keine Ergebnisse gibt, wird false zurückgegeben.

Sie können die Gültigkeit von validate_user result überprüfen, indem Sie folgendermaßen vorgehen. Was wird prüfen "Wenn dieser Wert falsch ist, werden wir einen Fehler zurückgeben. Sonst werden wir mit dem Login-Prozess fortfahren".

// if NOT true 
if(!$data['validateLogin']){ 
    echo json_encode("Incorrect username or password"); 
} 
else { 
... 
} 
Verwandte Themen