2013-11-15 5 views
1

У меня проблема в моей сессии входа в систему.Сегмент входа в CodeIgniter не уничтожается

Это то, что я пытался до сих пор: контроллер

User.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class User extends CI_Controller{ 
public function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('user_model'); 
} 
public function index() 
{ 
    //if(($this->session->userdata('logged_in') == TRUE)) 
    if(($this->session->userdata('username') != "")) 
    { 
     $this->welcome(); 
    } 
    else { 
     $data['title']= 'Home'; 
     $this->load->view('include/header',$data); 
     $this->load->view("frontpage", $data); 
     $this->load->view('include/footer',$data); 
    } 
} 
public function welcome() 
{ 
    $data['title']= 'Welcome'; 
    $this->load->view('include/header',$data); 
    $this->load->view('include/navbar',$data); 
    $this->load->view('welcome_view', $data); 
    $this->load->view('include/sidebar',$data); 
    $this->load->view('include/footer',$data); 
} 

public function login() 
{ 
    $username = $this->input->post('username'); 
    $password = $this->input->post('password'); 
    //md5($this->input->post('password')); 
    //$this->input->post('password'); 

    $result = $this->user_model->login($username, $password); 

    if($result) 
     $this->welcome(); 
    else  
     $this->index(); 

} 
public function thank() 
{ 
    $data['title']= 'Thank'; 
    $this->load->view('include/header',$data); 
    $this->load->view('thank_view.php', $data); 
    $this->load->view('include/footer',$data); 
} 
public function registration() 
{ 
    $this->load->library('form_validation'); 
    // field name, error message, validation rules 
    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[4]|xss_clean'); 
    $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]'); 
    $this->form_validation->set_rules('con_password', 'Password Confirmation', 'trim|required|matches[password]'); 

    if($this->form_validation->run() == FALSE) 
    { 
     $this->index(); 
    } 
    else 
    { 
     $this->user_model->add_user(); 
     $this->thank(); 
    } 
} 
public function logout() 
{ 
    $newdata = array(
    //'user_id' =>'', 
    'username' =>'', 
    'logged_in' => FALSE 
    ); 

    $this->session->unset_userdata($newdata); 
    $this->session->sess_destroy(); 
    $this->index(); 
} 
} 
?> 

User_model.php модельную

<?php 
class User_Model extends CI_Model 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    function login($username, $password) 
    { 
     $this->db->where("username", $username); 
     $this->db->where("password", md5($password)); 

     $query = $this->db->get("users"); 
     if($query->num_rows()>0) 
     { 
      foreach($query->result() as $rows) 
      { 
       //add all data to session 
       $newdata = array(
         //'user_id'   => $rows->id, 
         'username' => $rows->username, 
         'logged_in' => TRUE 
        ); 

      } 
       $this->session->set_userdata($newdata); 
       return true;    
     } 
     return false; 
    } 

    public function add_user() 
    { 
     $data=array(
      'username'=> $this->input->post('username'), 
      'password'=> $this->input->post('password')// md5($this->input->post('password')) 
      ); 
     $this->db->insert('users',$data); 
    } 
} 
?> 

вид frontpage.php

 <div class="container"> 
    <div class="jumbotron"> 
    <?php 
    $attributes = array('class' => 'form-signin'); 
    echo form_open(base_url('login'), $attributes); ?> 
     <h2 class="form-signin-heading">VMS Login System</h2> 
     <input type="username" name="username" class="form-control" placeholder="Username" required autofocus> 
     <input type="password" name="password" class="form-control" placeholder="Password" required> 
     <button class="btn btn-primary" type="submit">Login</button> 
     <button class="btn btn-primary" type="reset">Cancel</button> <!-- btn btn-lg btn-primary btn-block --> 
    <?php echo form_close(); ?> 

    </div> 
</div> 

welcome_view.php

<div class="container"> 

     <div class="row row-offcanvas row-offcanvas-right"> 

     <div class="col-xs-12 col-sm-9"> 
      <p class="pull-right visible-xs"> 
      <button type="button" class="btn btn-primary btn-xs" data-toggle="offcanvas">Toggle Sidebar</button> 
      </p> 
      <div class="jumbotron"> 
      <h1>Van Management System</h1> 
      <p></p> 
      </div> 
      <div class="row"> 
      <div class="col-6 col-sm-6 col-lg-4"> 
       <h2>What's New</h2> 
       <p>Sample Only</p> 
       <p><a class="btn btn-default" href="#" role="button">View details »</a></p> 
      </div><!--/span--> 
      <div class="col-6 col-sm-6 col-lg-4"> 
       <h2>Charts and Graphs</h2> 
       <p>Check out sample</p> 
       <p><a class="btn btn-default" href="#" role="button">View details »</a></p> 
      </div><!--/span--> 
      <div class="col-6 col-sm-6 col-lg-4"> 
       <h2>Announcements</h2> 
       <p>Announcements</p> 
       <p><a class="btn btn-default" href="#" role="button">View details »</a></p> 
      </div><!--/span--> 
      </div><!--/row--> 
     </div><!--/span--> 

Проблема, когда я выйти из системы и вернуться на страницу входа в систему, я всегда могу вернуться на страницу приветствия, моя сессия не уничтожается. Я хочу, когда я войду, конечно, я нахожусь на странице приветствия. И когда я вернусь на страницу входа в систему, система должна перенаправить меня на экран приветствия и не позволит мне перейти на страницу входа в систему, если я в настоящий момент вошел в систему. Любые идеи? Я пытался, но ничего не происходит :(Помощь в значительной степени оценили

Update:. Это, как я загрузить страницу приветствия:

 public function index() 
{ 
    //if(($this->session->userdata('logged_in') == TRUE)) 
    if(($this->session->userdata('username') != "")) 
    { 
     $this->welcome(); 
    } 
    else { 
     $data['title']= 'Home'; 
     $this->load->view('include/header',$data); 
     $this->load->view("frontpage", $data); 
     $this->load->view('include/footer',$data); 
    } 
} 
public function welcome() 
{ 
    $data['title']= 'Welcome'; 
    $this->load->view('include/header',$data); 
    $this->load->view('include/navbar',$data); 
    $this->load->view('welcome_view', $data); 
    $this->load->view('include/sidebar',$data); 
    $this->load->view('include/footer',$data); 
} 
+0

, когда вы вернетесь к странице приветствия после выхода вы в состоянии получить доступ к вещи, которые, как предполагается, будет доступ к зарегистрированным в только для пользователей? –

+0

У вас есть контроллер приветствия, который отображает приветственный вид? –

+0

@plainjane У меня нет класса контроллера приветствия. и когда я вернусь на страницу приветствия после выхода из системы, я все еще могу получить доступ. –

ответ

0

Я предполагаю, что вы попробуете это

public function logout() 
{ 
    $newdata = array(
     //'user_id' =>'', 
     'username' =>'', 
     'logged_in' => '' 
    ); 

    $this->session->unset_userdata($newdata); 
    $this->session->sess_destroy(); 
    $this->index(); 
} 

Ваша функция индексатора User.php

public function index() 
{ 
    if(($this->session->userdata('logged_in') == TRUE)) 
    { 
    if(($this->session->userdata('username') != "")) 
    { 
     $this->welcome(); 
    } 
    } 
    else { 
     $data['title']= 'Home'; 
     $this->load->view('include/header',$data); 
     $this->load->view("frontpage", $data); 
     $this->load->view('include/footer',$data); 
     } 
} 

Добро пожаловать функция

public function welcome() 
{ 
    if(($this->session->userdata('logged_in') == TRUE)) 
    { 
    if(($this->session->userdata('username') != "")) 
    { 
     $data['title']= 'Welcome'; 
     $this->load->view('include/header',$data); 
     $this->load->view('include/navbar',$data); 
     $this->load->view('welcome_view', $data); 
     $this->load->view('include/sidebar',$data); 
     $this->load->view('include/footer',$data); 
    } 
    } 
    else 
    { 
     $this->index(); 
    } 
} 
+0

Ничего не отображается :( –

+0

отредактировал мой код PLS check изменил функцию индекса –

+0

ваше новое обновленное сообщение показывает мои взгляды уже, но я все еще могу вернуться приветствовать страницу, когда я выхожу из системы. –

Смежные вопросы