Core features in CodeIgniter: form validation using CI validation library; session management and flashdata; handling file uploads; loading helpers and libraries

CodeIgniter's built-in tools do the repetitive work: a validation library with reusable rules, session and one-time flashdata, safe file uploads, and loadable helpers and libraries.

11 min read · 9 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

Stop rewriting the plumbing

Earlier in this unit you HAND-WROTE input validation, session handling, and file uploads. It worked, but every project would rewrite the same fiddly, security-sensitive code, and every hand-rolled version risks a new bug.

This is exactly what a framework spares you. CodeIgniter ships tested, reusable tools for the repetitive jobs: a validation library, session and flash messaging, safe uploads, and loadable helpers. This final PHP lesson shows the portal using the framework's power tools instead of reinventing them, which is the whole reason to adopt a framework.

Theory

Validation and flashdata

Form validation library: instead of hand-writing checks, you declare RULES: required, valid_email, min_length[6]: and CodeIgniter checks them all in one call, generating consistent error messages. Cleaner, and harder to get wrong than bespoke if statements.

Sessions and flashdata: CI wraps PHP sessions and adds flashdata: session data that survives for exactly ONE next request and then auto-deletes. It is perfect for a one-time message: after a successful registration you REDIRECT to a confirmation page and set a flash message "Registration successful!"; it shows once, then vanishes, so a page refresh does not repeat it. This is the standard post-redirect-get pattern.

Practical

Validation + a flash message after redirect

<?php
// Inside a controller method handling the registration POST
public function submit() {
  $rules = [
    "name"  => "required|min_length[2]",
    "email" => "required|valid_email",
  ];

  if (! $this->validate($rules)) {
    // Validation failed: show the form again with errors
    return view("register", ["errors" => $this->validator->getErrors()]);
  }

  // Success: save via the Model, then set a ONE-TIME flash message
  session()->setFlashdata("msg", "Registration successful!");
  return redirect()->to("/thanks");   // flash shows once on /thanks
}
?>

Theory

Uploads, helpers, and libraries

File uploads: CI's upload handling validates type and size and moves the file safely: wrapping the raw $_FILES and move_uploaded_file work (and its traps) from Unit 2 into a tested tool.

Helpers vs libraries, a common exam pair:

  • Helpers are collections of standalone FUNCTIONS (e.g. form_helper, url_helper) you load when needed
  • Libraries are CLASSES that provide features (session, validation, email)

You LOAD the helper or library you need and use it, reusing the framework's tested code. The whole theme: a framework gives you reliable building blocks so you assemble features instead of hand-crafting plumbing every time.

Quiz

What is flashdata in CodeIgniter used for?

  1. Permanent data stored forever in the database
  2. Session data that persists for exactly ONE next request then auto-deletes: ideal for one-time messages like 'Registration successful!'
  3. A faster type of cookie
  4. Data shown in a Flash animation
Show the answer

Session data that persists for exactly ONE next request then auto-deletes: ideal for one-time messages like 'Registration successful!'

Flashdata is session data that lives for exactly the NEXT request and is then automatically removed, which makes it perfect for one-time notifications shown after a redirect (the post-redirect-get pattern): the 'Registration successful!' message appears once on the confirmation page and does not reappear if the user refreshes. Option A describes permanent storage (the database/Model), the opposite of flashdata's one-shot nature. Option C confuses it with cookies (flashdata is server-side session data). Option D is a pun on an unrelated technology. Remember: flashdata = one-request-only session message.

Think first

Why redirect, then flash?

After a successful registration, why does the controller REDIRECT and set a FLASH message, rather than just echoing 'Success!' directly on the same page? Then tap.

Show the answer

Because of the post-redirect-get pattern, which solves the double-submission problem. If you echo 'Success!' directly after processing a POST, and the user then REFRESHES, the browser RE-SUBMITS the form: registering them twice. By REDIRECTING to a confirmation page (a GET request) after a successful POST, a refresh just reloads the harmless confirmation page, not the submission. Flashdata carries the 'Registration successful!' message across that one redirect and then vanishes, so it shows exactly once. So redirect-then-flash gives a clean, refresh-safe confirmation: a small pattern that prevents a real, common bug, which is why frameworks build flashdata in.

Watch out

CI core-feature traps

Hand-rolling what CI provides: use the validation library, session and upload tools rather than rewriting them.

Confusing helpers and libraries: helpers are function collections; libraries are classes.

Expecting flashdata to persist: it lasts ONE request only, by design.

Echoing success without redirect: causes double-submission on refresh; use redirect + flash.

Not loading a helper before use: load the helper/library first, or its functions are unavailable.

Theory

Units 1-3 complete: a real PHP application

You have taken the event portal from a hello.php to a structured, database-backed, framework-organised application: Core PHP, advanced features, MySQL with injection-safe queries, AJAX, and CodeIgniter MVC with its power tools. That is server-side web development, end to end. Unit 4 is different in kind: the Indian Knowledge System astronomy topic (Suryasiddhanta and Varahamihira), studied factually and respectfully. The web app is done; the IKS unit stands on its own.

Summary

Key takeaways

  • A framework provides tested, reusable tools so you assemble features instead of hand-rolling plumbing.
  • CI's validation library checks declarative rules (required, valid_email, min_length) in one call with auto error messages.
  • Flashdata is session data lasting exactly one next request then auto-deleting: ideal for one-time messages after a redirect.
  • Redirect-then-flash (post-redirect-get) prevents double submission on refresh.
  • CI's upload handling validates and moves files safely, wrapping raw $_FILES work.
  • Helpers are collections of functions; libraries are feature classes; load what you need.
  • Memory hook: let the framework do the plumbing; flashdata shows once and disappears.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Database Interaction and CodeIgniter Framework

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Core features in CodeIgniter: form validation using CI validation library; session management and flashdata; handling file uploads; loading helpers and libraries · Web Framework and Services (Major-12) · Gri-Learn