как установить сессию в форме входа с помощью codeigniter

1

Я новичок в 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: 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
    В чем проблема у вас ?? получение значений сеанса
Теги:
codeigniter

2 ответа

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');
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
    Вы сделали много ошибок в своем коде
  • 0
    ошибки ?? можете уточнить пожалуйста ??
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню