Message: ini_set (): session is active. You cannot currently change the ini session module settings

I created a login page with code, but I got a php message.

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

How to fix it?

view (login.php)

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Admin Login</title> <link rel="stylesheet" href="../css/normalize.css"> <link rel="stylesheet" href="../css/admin-style.css"> </head> <body> <?php echo form_open('Verify_login', ['id'=>'loginForm', 'name'=>'loginForm', 'method'=>'post']) ?> <div class="login"> <div class="log-box"> <h3>Login</h3> <div > <input id="username" name="username" placeholder="User Name" value="" type="text" > <?php echo form_error('username'); ?> <input id="Password" name="password" placeholder="Password" required type="password"> <?php echo form_error('password'); ?> <div class="remember-me"> <input id="checkBox" type="checkbox"> <label for="checkBox">Remember Me</label> </div> <button class="login-button" name="loginButton">Login</button> </div> </div> </div> </form> </body> </html> 

controller (Verify_login.php)

 <?php defined('BASEPATH') OR exit('No direct script access aloowed'); class Verify_login extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('User'); $this->load->helper('url'); $this->load->helper('security'); $this->load->library('form_validation'); $this->load->library('session'); } public function index() { $this->form_validation->set_rules('username', 'Username', 'trim|required'); $this->form_validation->set_rules('password', 'Password', 'trim|required|callback_check_database'); if ($this->form_validation->run() == FALSE) { // if validation failed load the view $this->load->view('admin/login'); } else{ $this->check_database($username , $password); redirect('dashboard', 'refresh'); } } public function check_database($password) { $username = $this->input->post('username'); //query tha database $result = $this->User->login($username, $password); if ($result) { $sess_array = []; foreach ($result as $row) { $sess_array = [ 'id'=>$row->id, 'username'=>$row->name ]; $this->session->set_userdata('logged_in', $sess_array); } return TRUE; } else{ $this->form_validation->set_message('check_database','invalid username and password'); } } } ?> 

controller (admin.php)

 session_start(); //need to call PHP session object to access it though it class Admin extends CI_Controller { public $data; public function __construct() { parent::__construct(); $this->load->helper('url'); $this->load->helper('form'); $this->load->helper('url'); $this->load->library('form_validation'); $this->load->helper('security'); //load user model $this->load->model('User'); } public function index() { // $this->load->view('admin/index'); if ($this->session->userdata('logged_in')) { $session_data = $this->session->userdata('logged_in'); $data['username'] = $session_data['name']; $this->load->view('admin/dashboard', $data); } else{ //if no session redirect to login page redirect('admin', 'refresh'); // redirect('login'); } } public function logout() { $this->session->unset_userdata('logged_in'); session_destroy(); redirect('home', 'refresh'); } 

model (User.php)

 <?php 

/ ** * custom claass that extends MY_Model * * /

 defined('BASEPATH') OR exit('no direct script allowed'); class User extends CI_Model { protected $table = 'users'; public function __construct() { $this->load->database(); } public function login($username ,$password) { var_dump($username); var_dump($password); $this->db->select(['id', 'name', 'password']); $this->db->from($this->table); // $this->db->where('name', $username); // $this->db->where('password', $password); $this->db->limit(1); $query = $this->db->get(); if ($query->num_rows() == 1) { return $query->result(); } else{ return false; } } } ?> 
+5
source share
2 answers

I think you are new to the concept of infrastructure and OOP.

You do not need this line in admin.php

 session_start(); //need to call PHP session object to access it though it 

When you load the session library, the constructor does this for you.

+7
source

The message means that you started the session with session_start() , which is further in the code that you use ini_set() to manage the session module. If you are manipulating a session module, this must be done before the start and activity of the session.

+3
source

Source: https://habr.com/ru/post/1232423/


All Articles