2016-11-17 64 views
-1
<?php 
    class Login_model extends CI_Model { 
    public function login() { 
     $username = $_POST['uname']; 
     $password = $_POST['pw']; 
     $query = $this->db->get_where('test_logins', array('name' => $username, 'password' => $password)); 
     $count = $query->num_rows() > 0; 
     if ($count == 1) { 
      foreach ($query->result_array() as $row) 
      { 
       $exam_id=$row['id']; 
      } 
      $query2 = $this->db->get_where('candidates', array('email' =>$_POST['email'])); 
      $count2=$query2->num_rows(); 
      //echo($count2); 
      if($count2==1){ 

       foreach ($query2->result_array() as $row2) 
       { 
       $candidate_id=$row2['id']; 
       $part1=$row2['part1']; 
       $part2=$row2['part2']; 
       $part3=$row2['part3']; 
       $part4=$row2['part4']; 
       } 
       //set session 
       $newdata1 = array(
            'username' => $username, 
            'exam_id'=> $exam_id, 
            'candidate_id'=> $candidate_id, 
            'logged_in' => TRUE 
           ); 
       $this->session->set_userdata($newdata1); 
       if(empty($part1)){ 
        return 'part1'; 
       }else if(empty($part2)){ 
        return 'part2'; 
       }else if(empty($part3)){ 
        return 'part3'; 
       }else if(empty($part4)){ 
        return 'part4'; 
       } 
      }else{ 
      $data = array(
           'name' => $_POST['name'], 
           'email' => $_POST['email'], 
           'exam_id' => $exam_id, 
           'contact' => $_POST['mobile'], 
         ); 
           $this->db->insert('candidates', $data); 
           $candidate_id=$this->db->insert_id(); 
      $newdata = array(
       'username' => $username, 
       'exam_id'=> $exam_id, 
       'candidate_id'=> $candidate_id, 
       'logged_in' => TRUE 
      ); 
      $this->session->set_userdata($newdata); 
      return 'part1'; 
      }//else insert candidate 

     }else { 
      return FALSE; 
     } 

    } 
    } 
?> 

檢查登錄ID和密碼是否正確。如果是,則檢查用戶是否已經註冊參加考試,如果註冊用戶創建會話,然後檢查剩餘部分的考試並重定向到該部分控制器,如果未註冊創建記錄並創建會話,則重定向到考試的第一部分,但會話在第一次嘗試時始終爲空,並從第二次嘗試開始設置。Codeigniter Session Sets第二次登錄時

+0

爲什麼你寫$ count = $ query-> num_rows()> 0;而不是if($ query-> num_rows()> 0){} else {}和你的整個編碼結構。 – MasoodUrRehman

回答

0

你提到的代碼有一些缺陷,所以我把它寫成乾淨的,並以代碼方式在這裏試試這個,然後讓我知道。我無法把這整個代碼作爲評論,所以把它寫爲答案:)

<?php 

class Login_model extends CI_Model { 

    public function login() 
    { 
     $username = $this->input->post['uname']; 
     $password = $this->input->post['pw']; 
     $exam_id = 0; 
     $candidate_id = 0; 

     $query = $this->db->get_where('test_logins', array(
      'name' => $username, 
      'password' => $password 
     )); 

     if ($query->num_rows() > 0) 
     { 
      $row = $query->row(); 
      if (isset($row)) 
      { 
       $exam_id = $row->id; 
      } 

      $query2 = $this->db->get_where('candidates', array(
       'email' => $this->input->post('email') 
      )); 

      if ($query2->num_rows() > 0) 
      { 
       $row2 = $query2->row(); 
       if (isset($row2)) 
       { 
        $candidate_id = $row2->id; 
        $part1  = $row2->part1; 
        $part2  = $row2->part2; 
        $part3  = $row2->part3; 
        $part4  = $row2->part4; 
       } 

       if(empty($part1)) { return 'part1'; } 
       else if(empty($part2)) { return 'part2'; } 
       else if(empty($part3)) { return 'part3'; } 
       else if(empty($part4)) { return 'part4'; } 
      } 
      else 
      { 
       $this->db->insert('candidates', array(
        'name' => $this->input->post('name'), 
        'email' => $this->input->post('email'), 
        'exam_id' => $exam_id, 
        'contact' => $this->input->post('mobile') 
       )); 

       return 'part1'; 
      } 

      $this->session->set_userdata(array(
       'username' => $username, 
       'exam_id'=> $exam_id, 
       'candidate_id'=> $candidate_id, 
       'logged_in' => TRUE 
      )); 

     } else { 
      return FALSE; 
     } 
    } 
} 
相關問題