CodeIgniter Interview Questions

Taaza Content Team

Looking to crack your next PHP or CodeIgniter job interview? This guide covers 20+ advanced CodeIgniter interview questions with clear explanations and real-world code examples. Ideal for experienced developers preparing for backend development roles in 2025.


1. How can you create a custom library in CodeIgniter?

Explanation:
A custom library is useful when you want to encapsulate reusable logic.

Example: Create: application/libraries/My_library.php

class My_library {
    public function greet($name) {
        return "Hello, " . $name;
    }
}

Load it in controller:

$this->load->library('my_library');
echo $this->my_library->greet('Developer');

2. How do you implement CSRF protection in CodeIgniter manually in an API context?

Explanation:
CSRF is enabled in config/config.php. For APIs, you might want to handle it manually.

$config['csrf_protection'] = TRUE;

In views:

<input type="hidden" name="<?=$this->security->get_csrf_token_name();?>" 
value="<?=$this->security->get_csrf_hash();?>" />

3. Explain the use of base_url() and site_url() with differences.

Explanation:

  • base_url() returns the root URL of your site.

  • site_url() generates a complete URL using routing.

Example:

echo base_url('assets/css/style.css');
echo site_url('user/profile');

4. How do you create REST APIs in CodeIgniter?

Explanation:
Use the CodeIgniter REST Server library (e.g., by Chris Kacerguis).

Example (Controller method):

public function users_get() {
    $users = $this->User_model->get_all();
    $this->response($users, REST_Controller::HTTP_OK);
}

5. How do you prevent SQL injection in CodeIgniter?

Explanation:
Use Active Record or Query Bindings.

Example:

$this->db->where('email', $email);
$query = $this->db->get('users');

// OR

$sql = "SELECT * FROM users WHERE email = ?";
$query = $this->db->query($sql, array($email));

6. How to use Middleware (like Laravel) in CodeIgniter?

Explanation:
Though not native in CodeIgniter 3, you can simulate middleware using Hooks or base controllers.

Example (Base controller check):

class MY_Controller extends CI_Controller {
    public function __construct() {
        parent::__construct();
        // Simulate middleware
        if (!$this->session->userdata('logged_in')) {
            redirect('login');
        }
    }
}

7. How do you handle multi-language support in CodeIgniter?

Explanation:
CodeIgniter provides language library.

Example:

// Load language
$this->lang->load('message', 'french');

// Access language line
echo $this->lang->line('welcome');

8. How to implement HMVC (Hierarchical MVC) in CodeIgniter?

Explanation:
You can implement HMVC using the MX_Controller by loading a modular extension package.

Steps:

  1. Download CodeIgniter HMVC package

  2. Extend controllers from MX_Controller

  3. Use Modules::run('module/function')


9. How do you cache query results in CodeIgniter?

Explanation:
Enable caching in database.php and use cache_on:

$this->db->cache_on();
$query = $this->db->get('users');
$this->db->cache_off();

Also supports file-based page caching:

$this->output->cache(10); // Cache for 10 minutes


10. How to handle 404 errors and create a custom error page in CodeIgniter?

Explanation:
Customize the 404 override in routes.php:

$route['404_override'] = 'errors/page_missing';

Create a controller and view for Errors/page_missing to show a user-friendly 404 page.


11. How do you use transactions in CodeIgniter to ensure data integrity?

Explanation:
CodeIgniter supports database transactions to handle operations like inserts/updates/deletes securely.

Example:

$this->db->trans_start();

$this->db->insert('orders', $order_data);
$this->db->insert('order_items', $item_data);

$this->db->trans_complete();

if ($this->db->trans_status() === FALSE) {
    // Rollback happened
}

12. How can you use environment-based configuration in CodeIgniter?

Explanation:
Use different config files or logic for development, testing, and production.

Steps:

  1. Set environment in index.php:

       define('ENVIRONMENT', 'development');

  1. In config:

     if (ENVIRONMENT == 'development') {
         $config['base_url'] = 'http://localhost/';
     } else {
       $config['base_url'] = 'https://production.com/';
     }

13. How do you integrate a third-party PHP library in CodeIgniter?

Explanation:
Use application/libraries/ or use Composer.

Example:

require_once(APPPATH.'third_party/SomeLibrary.php');
$lib = new SomeLibrary();

Or via Composer:

composer require guzzlehttp/guzzle

Then autoload using:

require_once APPPATH . '../vendor/autoload.php';


14. How do you handle file uploads securely in CodeIgniter?

Explanation:
Use CodeIgniter’s file upload library and validate file type, size, and name.

Example:

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'jpg|png|gif';
$config['max_size'] = 2048;

$this->load->library('upload', $config);

if ($this->upload->do_upload('profile_pic')) {
    $data = $this->upload->data();
} else {
    echo $this->upload->display_errors();
}

15. How do you prevent direct script access in CodeIgniter?

Explanation:
By using:

defined('BASEPATH') OR exit('No direct script access allowed');

This ensures scripts run only via the CI controller.


16. How do you create pagination in CodeIgniter?

Explanation:
Use the pagination library and configure base URL, total rows, and per page.

Example:

$this->load->library('pagination');

$config['base_url'] = base_url('users/index');
$config['total_rows'] = $this->db->count_all('users');
$config['per_page'] = 10;
$this->pagination->initialize($config);

$data['users'] = $this->User_model->get_users($config['per_page'], $this->uri->segment(3));

17. How do you use .env files or environment variables in CodeIgniter 4?

Explanation:
In CI4, .env file allows secure environment-based configuration.

Example (.env):

app.baseURL = 'http://localhost:8080/'
database.default.username = root

Then in code:

$db_user = getenv('database.default.username');


18. How to implement user authentication from scratch in CodeIgniter?

Explanation:
Use session-based login system.

Example:

// Login Controller
if ($this->input->post()) {
    $user = $this->User_model->check_credentials($email, $password);
    if ($user) {
        $this->session->set_userdata('user_id', $user->id);
        redirect('dashboard');
    } else {
        $this->session->set_flashdata('error', 'Invalid login');
    }
}

19. How to use AJAX with CodeIgniter for real-time form submission?

Explanation:
Send AJAX requests to CodeIgniter controller methods and return JSON.

JavaScript Example:

$.post("user/submit_form", {name: "John"}, function(response) {
    alert(response.status);
}, 'json');

CodeIgniter Controller:

public function submit_form() {
    $name = $this->input->post('name');
    echo json_encode(['status' => 'success', 'name' => $name]);
}

20. How can you load multiple views inside a layout in CodeIgniter?

Explanation:
Create a layout view and load partials from controller.

Example:

// Controller
$data['main_content'] = 'pages/about';
$this->load->view('layout', $data);

In layout view:

<!DOCTYPE html>
<html>
<head><title>My Site</title></head>
<body>
<?php $this->load->view($main_content); ?>
</body>
</html>

 

Stay Updated!

Would you like to receive notifications when we publish new blogs?