2015-11-06 41 views
1

我是codeigniter的新手。我无法以我的登录表单设置会话。如何使用codeigniter以登录形式设置会话

我的模型页面user.php的:

<?php 
class User extends CI_Model 

{ 

    function __construct() 
{ 

     parent::__construct(); 

     $this->load->database(); 

     $this->load->library('session'); 

     $this->load->helper('url'); 
    } 

    public function login_model($username,$password) 
{ 

     $where = array('username'=>$username, 'password'=>$password); 

      $query = $this->db->get_where('signtable', $where); 

      if($query->num_rows() == 1) 
{ 

       $row = $query->row(); 

         $data = array(
            'user_logged_in' => TRUE, 
            'password' => $row->password, 
            'username' => $row->username); 

          $this->session->set_userdata($data); 

           } 
           else 

            { 


       echo "invalid username or password"; 

      } 


      } 

    } 


?> 

我控制器页面login1.php:

<?php 
class Login1 extends CI_Controller 
{ 

    function __construct() 
{ 
     parent::__construct(); 
     $this->load->database(); 
     $this->load->model('User'); 
     $this->load->helper('form'); 
    } 
    public function index() 
{ 
     if($this->input->post()) 
{ 
     $this->load->library('form_validation'); 

$this->form_validation->set_rules('name','Username','required|callback_username_check|trim|xss_clean'); 
      $this->form_validation->set_rules('pass','Password','required|callback_password_check|trim'); 

      if ($this->form_validation->run() == FALSE) 
{ 
        $this->load->view('login'); 
    } 
      else 
      { 

      $username = $this->input->post('name'); 
         $password = $this->input->post('pass'); 
         $this->User->login_model($username,$password); 

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

我的其他控制器页面login2.php

<?php 
    class Login2 extends CI_Controller 
{ 
    function __construct() 
{ 
    parent::__construct(); 
     $this->load->database(); 
     $this->load->model('User'); 
     $this->load->helper('url'); 
     } 
    public function index() 
{ 
      $this->load->model('Retrieve_model'); 
      $data['result'] = $this->Retrieve_model->retrieve(); 
      $this->load->view('logout',$data); 
} 
    } 
?> 

我会话控制页面是session_ctrl.php:

<?php 
class Session_ctrl extends CI_Controller 
{ 
    public function __construct() 
{ 
      parent::__construct(); 
      $this->load->library('session'); 
      $this->load->helper('url'); 
      $this->load->database(); 
      $this->load->model('User'); 
      } 
     public function index() 
{ 
     if($this->User->login_model($username,$password)) 
         { 
            redirect('login2','refresh');   
         } 
         else 
         { 
          redirect('login1','refresh'); 
           } 
         $this->load->view('login'); 
        } 
        } 
     ?> 

我的登录视图页面的login.php:

<?php 
echo validation_errors(); 
echo form_open('login1'); 
?> 
<html> 
    <body> 
     <tr> 
     <td>Username <input type="text" name="name" value = "<?php echo set_value('name'); ?>"></td><td><?php echo form_error("name");?></td><br><br> 
     <td>Password <input type="password" name="pass" ></td><td><?php echo form_error("pass");?></td><br><br> 
     <input type="submit" name="submit" value ="LogIn"> 
     <?php form_close(); ?> 
     </tr></body> 
    </html> 

我的注销视图页是logout.php:

<?php 
echo validation_errors(); 
echo form_open('login2'); 
?> 
<html> 
    <body> 
     <h1>Welcome<h1> 
      <table border="1"> 
     <tbody> 
     <tr> 
      <td>username</td> 
      <td>email</td> 
      <td>dob</td> 
      <td>address</td> 
      <td>password</td> 
     </tr> 
     <?php 
     foreach ($result->result() as $r) 
     { 
      ?><tr> 
      <td><?php echo $r->username;?></td> 
      <td><?php echo $r->email;?></td> 
      <td><?php echo $r->dob;?></td> 
      <td><?php echo $r->address;?></td> 
      <td><?php echo $r->password;?></td> 
      </tr> 
     <?php } 
     ?> 
     </tbody> 
    </table> 
     <a href = "logout1/logout"><h5>Logout<h5></a> 
     </body> 
     <?php echo form_close(); ?> 
</html> 
+0

什么是你有问题??检索会话值 –

回答

0

在控制器

public function index() 
{ 

    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('name','Username','required|callback_username_check|trim|xss_clean'); 
    $this->form_validation->set_rules('pass','Password','required|callback_password_check|trim'); 

    if ($this->form_validation->run() == FALSE){ 
     echo "Invalid User Loging"; 
     # $this->load->view('login'); 
    } 
    else{ 

     $username = $this->input->post('name'); 
     $password = $this->input->post('pass'); 
     $result  = $this->model_name->check_login($username,$password); 

     if ($result != FALSE) { 
      # Inavlid User... 
      $this->load->view('login'); 
     } 
     else{ 
      # Valid user 
      $this->load->view('home'); 
     } 
    } 
} 

在型号

public function check_login($username,$password) 
{ 

    $query = $this->db->query("SELECT * FROM signtable WHERE username = '$username' AND password = '$password' ") 
    $result = $query->result_array(); 
    $count =count($result); 


    if(empty($count) || $count >1){ 
     return FALSE; 
    } 
    else{ 

     $data = array(
      'user_logged_in' => TRUE, 
      'username' => '$username' 
      ); 

     $this->session->set_userdata($data); 
    } 
} 

形式开放应该是

echo form_open('controller_name/index'); 
+0

你在代码中犯了很多错误 – Saty

+0

错误?可以指定? –

+0

1)''username'=>'$ rusername'' 2)'if(empty($ count)|| $ count> 1){' – Saty

1

尝试在方法

public function login_model($username,$password) 
{ 
    $this->load->library('session'); # Load session 

    $where = array('username'=>$username, 'password'=>$password); 

    $query = $this->db->get_where('signtable', $where); 

     if($query->num_rows() == 1){ 

      $row = $query->row(); 

      $data = array(
        'user_logged_in' => TRUE, 
        'password' => $row->password, 
        'username' => $row->username); 

        $this->session->set_userdata($data); 

     }else{ 


      echo "invalid username or password"; 

     } 


} 

加载会议和这样呼叫会话 -

$this->session->userdata('username');