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);