Codeigniter会话设置在登录期间第二次

时间:2016-11-17 17:02:36

标签: php codeigniter

<?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和密码是否正确。如果是,则检查用户是否已注册考试,如果注册用户创建会话,则检查剩下的考试部分并重定向到该部分控制器,如果未注册创建记录并创建会话,则重定向到考试的第1部分,但是第一次尝试时会话始终为空,并且从第二次尝试开始设置。

1 个答案:

答案 0 :(得分:0)

你提到的代码有一些缺陷,所以我写得很干净,并在codeigniter方式这里plz尝试这个,然后让我知道。我无法将整个代码作为注释,因此将其写为答案:)

<?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;
        }
    }
}
相关问题