Arhn - архитектура программирования

Codeigniter нажимает кнопку выхода из системы и отключает кнопку «Назад» в браузере.

Привет, ребята, я использую CodeIgniter Framework, у меня есть проблема после выхода из системы, сеанс уже уничтожен и перенаправлен на форму входа, а после перенаправления на форму входа кнопку возврата браузера можно вернуть на панель инструментов, но есть ошибки из-за сессия уже уничтожена. Все, что я хочу, это отключить кнопку «Назад» в браузере или все, что не может быть загружено в моем предыдущем. Я читал другие сообщения об этой проблеме и пробовал их решение, но оно не работает. Я уже вставил этот код на основе того, что я прочитал в другом сообщении в своем конструкторе.

The code that I've seen from the post and posted in my constructor :
 header("cache-Control: no-store, no-cache, must-revalidate");
        header("cache-Control: post-check=0, pre-check=0", false);
        // HTTP/1.0
        header("Pragma: no-cache");
        // Date in the past
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
        // always modified
        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 

вот мой выход:

 $sess_array = array(
        'username' => ''
        );
        $this->session->unset_userdata('logged_in', $sess_array);
        $this->session->sess_destroy();
        redirect('auth', 'refresh');

вот с моей приборной панели:

    <li>                                 
<a href="<?= base_url('auth/logout') ?>"><i3 class="glyphicon glyphicon-off"></i3> Logout</a>
   </li>
10.09.2016

Ответы:


1

Я устал реализовывать этот вариант, но он не работает. Поэтому я внедряю новую логику в этом.

Просто проверьте, установлен ли сеанс во всех основных методах. Ниже код поможет вам

При выходе из системы (определить в контроллере)

function __construct()
{
    parent::__construct();
    ob_start(); # add this
}

public function logout()
{
    $this->load->driver('cache');
    $this->session->sess_destroy();
    $this->cache->clean();
    ob_clean();
    redirect('home'); # Login form or some other page         
}

В панели управления (функция)

public function home()
{
    $logged_in = $this->session->userdata('logged_in');
    if($logged_in != TRUE || empty($logged_in))
    {
        #user not logged in
        $this->session->set_flashdata('error', 'Session has Expired');
        redirect('user_logging'); # Login view
    }
    else
    {
        #user Logged in
        $this->load->view("viewname",$data);
    }
}

Вход в систему (функция)

$session = array(
    'username'  => $name,
    'logged_in' => TRUE
);

$this->session->set_userdata($session);
10.09.2016
  • привет сэр, как я могу манипулировать этим кодом $this-›session-›set_userdata('logged_in', $session_data); чтобы удовлетворить условию if о logged_in = TRUE 10.09.2016
  • каковы ваши поля сеанса ?? 10.09.2016
  • $session_data = array ( 'user_email' => $res[0]->user_email, 'user_id' => $res[0]->user_id, 'usertype_name' => $res[0]->usertype_name, 'user_fname' =› $res[0]-›user_fname, 'user_mname' =› $res[0]-›user_mname, 'user_lname' =› $res[0]-›user_lname ); $this-›session-›set_userdata('logged_in', $session_data); 10.09.2016
  • @AbdullaNilam, можете ли вы объяснить, почему вы загружаете драйвер кеша? любопытный 24.07.2018
  • @ Алекс, что для этого требования Jc John. Он был использован в кеше, когда я проверял его код. ясно теперь? 24.07.2018
  • у меня есть одно сомнение, когда v входит в нашу учетную запись, она должна оставаться на той же странице, она не должна возвращаться, даже если пользователь нажимает клавишу «назад», я пытаюсь это сделать, но я не могу сделать, пожалуйста, ребята, подскажите мне ? 24.07.2018
  • stackoverflow.com/questions/51493658/ пожалуйста, ребята, можете пройти по этой ссылке 24.07.2018

  • 2

    Вы пытаетесь решить не ту проблему: если возврат после выхода приводит к странице, полной ошибок, прямой переход на эту страницу вызовет ту же проблему.

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

    Кроме того, вы не должны портить работу браузера пользователя. Так что даже вы могли бы, вы не должны отключать кнопку «Назад». И даже если бы вы могли, это, вероятно, можно было бы легко обойти, отключив javascript (например...).

    10.09.2016
  • спасибо за ваш ответ, сэр. Мой код работает хорошо, он выдает ошибки после выхода из системы, потому что сеанс уже уничтожен. Как я могу решить это, сэр? 10.09.2016

  • 3

    прежде всего, установите значение сеанса userdata, когда вы успешно войдете в панель администратора, используйте эту строку после всей проверки, которую вы сделали при входе из

    $this->session->set_userdata('admin_id',$admin_id);

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

    public function __construct()
    {
        parent::__construct();
        if(! $this->session->userdata('admin_id')){
            return redirect('login_controller');//your login controller which have login page as view in index function//
        }
    } 
    

    и используйте функцию выхода из системы следующим образом:

    public function logout()
    {
        $this->session->unset_userdata('admin_id');
        return redirect('login_controller');
    }
    

    таким образом, после того, как вы выйдете из панели администратора и попытаетесь использовать кнопку «Назад» или попытаетесь использовать прямой вызов любой страницы или функции панели администратора, она не откроется, это работает для меня и все еще использует этот код в создание пользовательской и админ панели

    25.05.2018

    4

    Надеюсь, это поможет вам

    Ваша функция входа

    function login() {
    
         $query = $this->login_model->get_user($username, $password);
    
         foreach ($query as $row) {
              $username = $row->username;
         }
    
         $session_array = array(
              'username' => $username,
              'logged_in' => TRUE
         );
    
         $this->session->set_userdata('logged_in', $session_array);
    }
    

    Ваша функция выхода

    public function logout() {
    
        $this->session->unset_userdata('logged_in');
        $this->session->sess_destroy();
        redirect('login', 'refresh');
    }
    

    И в приборной панели или домашнем контроллере

    function index() {
    
        if ($this->session->userdata('logged_in') !== FALSE && ($this->session->userdata['logged_in']['login_type'] == "" ))
        {
             // Your codes 
        } else {
           redirect('login/logout');
        }
    }
    
    28.07.2018
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..