2016-09-28 5 views
0

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

вид - flashdata_home.php

<form action='add' method='post'> 

    <input type ='text' name='value'/> 
    <input type='submit' value='Enter ' /> 

</form> 

Controller - FlashData_Controller.php

<?php 

class FlashData_Controller Extends CI_Controller { 


    function __construct() { 
     parent::__construct(); 

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

    } 

    public function index(){ 
     $this->load->view('flashdata_home'); 
    } 

    public function add(){ 
    // adding flash data 
    //$this->session->set_flashdata('item','This is me'); 

    $this->session->set_userdata('Name',$this->input->post('value')); 

    //redirect to home page 
    // redirect('flashdata'); 

    if($this->session->has_userdata('Name')){ 

     $data = array('value' => $this->session->Name); 
     $this->load->view('adminflashdata_home',$data); 
    } 
    else 
    { 
     $this->load->view('flashdata_home'); 
    } 
    } 

    public function logout(){ 

     $this->session->unset_userdata('Name'); 
     $this->session->sess_destroy('Name'); 
     $this->load->view('flashdata_home'); 

    } 

} 

вид - adminflashdata_home.php

<?php 
echo $value; 
<li><a href="logout">Logout</a></li> 
?> 

ответ

1

Неудача сеанса в CI очень проста и выглядит так.

В вашем коде вы отменили данные, но вам нужно отключить переменную, как я.

одноместный данные:

$this->session->unset_userdata('some_name'); 

Для массива данных:

$array_items = array('username' => '', 'email' => ''); 
$this->session->unset_userdata($array_items); 

Для уничтожения сессии:

$this->session->sess_destroy(); 
0

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

Например, при входе пользователя в систему с правильными учетными данными URL должен выглядеть следующим образом: localhost/app/controller/function (только, например). И позже, когда пользователь выйдет из системы, вы переадресовываете обратно на страницу входа. Но если мы будем набирать localhost/app/controller/function в url или если мы нажмем кнопку в браузере, браузер загрузит страницу !!! Я считаю, что ваша заявленная проблема такая же.

Для этой проблемы я всегда использую решение в каждой функции контроллера. Подобно;

class MainController extends CI_Controller { 
    function test { 
    $user_name = $this->session->userdata('user_name'); 
    if(isset($user_name)) { 
     //the actual function code goes here 
    } 
    else { 
     //redirect to the login function 
    } 
    } 
} 

Я надеюсь, что это помогло немного один .. ура ..

+0

все еще не работает –

+0

вы можете один раз, пожалуйста, проверьте переменную сеанса правильно установлены или нет? просто откликните все переменные сеанса после входа в систему. –

+0

Дана переменная сеанса. но пока не находят никакого решения. –

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