Ini_set (): сеанс активен. вы не можете изменить настройки ini модуля сеанса в настоящее время в codiegniter

Я проверил результат, но не могу исправить свою ошибку. Я просто использовал session_start, и он выдает это предупреждающее сообщение.

ini_set(): A session is active. You cannot change the session module's ini settings at this time

Ниже мой код -

$sess_array = array(
                      'id' => $row->empid,
                      'username' => $row->emp_name,
                      'loggedIn' => '1',
                      'usertype' => $usertype
                  );  
$this->session->set_userdata('logged_in', $sess_array); // store session    

Страница Dashboard.php

session_start();   

error_reporting(E_ALL & ~E_NOTICE);    

//error_reporting(0);   

if (!defined('BASEPATH'))    

 exit('No direct script access allowed');    




class Dashboard extends CI_Controller
{

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

}

public function index()
{

    if ($this->session->userdata('logged_in'))
    {
        $EmpName = $this->session->userdata['logged_in']['username'];
        $Emp_id = $this->session->userdata['logged_in']['id'];  
  }  
}  

Хотя задан тот же вопрос, но я не получил правильного решения для этого вопроса. Пожалуйста, решите этот вопрос.

удалить session_start(); из dashboard.php. Codeignitor сам запускал сеанс, когда проект был инициирован через URL. (через файлы конфигурации)

Anant Kumar Singh 10.09.2018 09:04

затем он передает условие if, в котором сеанс проверяется, и переходит в часть else

Maneesh Sharma 10.09.2018 09:13

В этом коде нет части else

brombeer 10.09.2018 09:16

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

Maneesh Sharma 10.09.2018 09:23
1
4
5 999
3

Ответы 3

Вместо использования session_start(); вы должны загрузить библиотеку сеансов, которую предоставляет вам codeigniter, в файле application/config/autoload.php, перейдите в строку, где:

$autoload['libraries'] = array('session');

Или, если вы хотите загрузить библиотеку только с вашего контроллера Dashboard, вы можете загрузить ее через $this->load->library('session');, где вы можете поместить ее в конструктор, чтобы иметь возможность работать с ней внутри контроллера отверстия, или добавить ее с помощью определенного метода.

Я уже сделал это, загрузил сеанс в автозагрузке, и когда я удаляю session_start из dashboard.php, тогда, если часть не работает, она переходит в другую часть. Не аутентифицировать данные пользователя сеанса

Maneesh Sharma 10.09.2018 09:10

$ autoload ['библиотеки'] = array ('база данных', 'электронная почта', 'разбиение на страницы', 'javascript', 'зашифровать', 'сеанс');

Maneesh Sharma 10.09.2018 09:10

Вы уверены, что устанавливаете данные в сеансе, попробуйте сбросить $this->session->userdata('logged_in') после его непосредственной настройки.

MAZux 10.09.2018 09:13

Да, я его сбросил и все значения выставлены правильно. Я не знаю, в чем была проблема. Это произошло впервые за 2 года моей карьеры разработчика.

Maneesh Sharma 10.09.2018 09:22

Попробуйте сбросить его также в свой контроллер приборной панели и попробуйте has_userdata в своем операторе if.

MAZux 10.09.2018 09:24

Я пробовал в контроллере панели инструментов has_userdata, он показывает, что сеанс не имеет значений. хотя я установил значения сеанса после успешного входа в систему. Но я использовал session_start () во всех своих предыдущих проектах, и тогда ошибки не было.

Maneesh Sharma 10.09.2018 09:33

да, но если вы намереваетесь использовать систему сеансов CI, вы не можете использовать session_start (). Я не уверен, где вы делаете $this->session->set_userdata('logged_in', $sess_array);, но я бы проверил до и после использования print_r($_SESSION), чтобы увидеть, где возникает проблема (например, где вы теряете данные сеанса). у нас либо а) недостаточно информации для диагностики, или б) ваша проблема слишком локализована, чтобы кто-либо мог ее решить, и в этом случае начните со свежей копии CI и XAMPP / localhost.

Alex 10.09.2018 09:35

Это действительно работает для меня, в основном вы сначала проверяете сеанс, а затем, если он не инициализирован, вы вызываете ini_set и другие, а затем вызываете session_start ()

if (!isset($_SESSION)) {

// server should keep session data for AT LEAST 24 hour
ini_set('session.gc_maxlifetime', 60 * 60 * 24);

// each client should remember their session id for EXACTLY 24 hour
session_set_cookie_params(60 * 60 * 24);
session_start();
}

поэтому вы начинаете сеанс после вызова ini_set и session_set_cookie_params и т. д.

Я только что обновил файл драйвера redis для сеанса: "system / libraries / Session / drivers / Session_redis_driver.php" с помощью codeigniter 3.11.1 one: новый файл драйвера и эта ошибка исчезла

в файле application / config / config.php укажите следующее:

$config['sess_driver'] = 'redis';
$config['sess_save_path'] = 'your-redis-instance:port'
$config['sess_match_ip'] = FALSE;
$config['sess_regenerate_destroy'] = FALSE;

пока работает.

Другие вопросы по теме