• logo
  • PHP
  • PHP OOPs
  • script
    • JavaScript
    • JQuery
    • Ajax
    • AngularJs
    • VueJs
    • NodeJs
    • ReactJs
  • wordpress
  • Codeigniter
  • Codeigniter 4
  • Laravel
  • Python
  • MySql
  • Json
  • C
  • C++
  • More ...
    • Cakephp Framework
    • MongoDb
    • MySqli PDO
    • .htaccess
    • HTML 5
    • CSS
    • SEO
    • DCA

Codeigniter 4 Tutorials

  • Codeigniter 4
  • Application Run
  • Application Structure
  • Configuration files
  • Errors
  • Controller
  • View
  • Model
  • How to remove index.php from URL
  • Route
  • CodeIgniter URLs
  • Helper
  • Session
  • Global Functions and Constants
  • Logging Information in CI4
  • Error Handling
  • Signin / SignUp
  • Login / Register
  • CRUD
  • Crud 1
  • Form Validation
  • Data Table
  • Pagination
  • File Upload
  • Show Data Using Ajax
  • Select2 AJAX Autocomplete Search
  • Curl Post
  • Rest API
  • Weblink
Home » Codeigniter 4  » 

What is Codeigniter 4?


Table

File name : index.php

CREATE TABLE users(
user_id INT PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(100),
user_email VARCHAR(100),
user_password VARCHAR(200),
user_created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=INNODB;

Model

File name : UserModel.php

<?php namespace App\Models;

use CodeIgniter\Model;

class UserModel extends Model{
protected $table = 'users';
protected $allowedFields = ['user_name','user_email','user_password','user_created_at'];
}

Register Controller

File name : index.php

<?php namespace App\Controllers;

use CodeIgniter\Controller;
use App\Models\UserModel;

class Register extends Controller
{
public function index()
{
//include helper form
helper(['form']);
$data = [];
echo view('register', $data);
}

public function save()
{
//include helper form
helper(['form']);
//set rules validation form
$rules = [
'name' => 'required|min_length[3]|max_length[20]',
'email' => 'required|min_length[6]|max_length[50]|valid_email|is_unique[users.user_email]',
'password' => 'required|min_length[6]|max_length[200]',
'confpassword' => 'matches[password]'
];

if($this->validate($rules)){
$model = new UserModel();
$data = [
'user_name' => $this->request->getVar('name'),
'user_email' => $this->request->getVar('email'),
'user_password' => password_hash($this->request->getVar('password'), PASSWORD_DEFAULT)
];
$model->save($data);
return redirect()->to('/login');
}else{
$data['validation'] = $this->validator;
echo view('register', $data);
}

}

}

View :- Register

File name : register.php

<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css" integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I" crossorigin="anonymous">

<title>Register</title>
</head>
<body>
<div class="container">
<div class="row justify-content-md-center">

<div class="col-6">
<h1>Sign Up</h1>
<?php if(isset($validation)):?>
<div class="alert alert-danger"><?= $validation->listErrors() ?></div>
<?php endif;?>
<form action="/register/save" method="post">
<div class="mb-3">
<label for="InputForName" class="form-label">Name</label>
<input type="text" name="name" class="form-control" id="InputForName" value="<?= set_value('name') ?>">
</div>
<div class="mb-3">
<label for="InputForEmail" class="form-label">Email address</label>
<input type="email" name="email" class="form-control" id="InputForEmail" value="<?= set_value('email') ?>">
</div>
<div class="mb-3">
<label for="InputForPassword" class="form-label">Password</label>
<input type="password" name="password" class="form-control" id="InputForPassword">
</div>
<div class="mb-3">
<label for="InputForConfPassword" class="form-label">Confirm Password</label>
<input type="password" name="confpassword" class="form-control" id="InputForConfPassword">
</div>
<button type="submit" class="btn btn-primary">Register</button>
</form>
</div>

</div>
</div>

<!-- Popper.js first, then Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js" integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/" crossorigin="anonymous"></script>
</body>
</html>

Create Controller Login

File name : Login.php

<?php namespace App\Controllers;

use CodeIgniter\Controller;
use App\Models\UserModel;

class Login extends Controller
{
public function index()
{
helper(['form']);
echo view('login');
}

public function auth()
{
$session = session();
$model = new UserModel();
$email = $this->request->getVar('email');
$password = $this->request->getVar('password');
$data = $model->where('user_email', $email)->first();
if($data){
$pass = $data['user_password'];
$verify_pass = password_verify($password, $pass);
if($verify_pass){
$ses_data = [
'user_id' => $data['user_id'],
'user_name' => $data['user_name'],
'user_email' => $data['user_email'],
'logged_in' => TRUE
];
$session->set($ses_data);
return redirect()->to('/dashboard');
}else{
$session->setFlashdata('msg', 'Wrong Password');
return redirect()->to('/login');
}
}else{
$session->setFlashdata('msg', 'Email not Found');
return redirect()->to('/login');
}
}

public function logout()
{
$session = session();
$session->destroy();
return redirect()->to('/login');
}
}

View :- login

File name : login.php

<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css" integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I" crossorigin="anonymous">

<title>Login</title>
</head>
<body>
<div class="container">
<div class="row justify-content-md-center">

<div class="col-6">
<h1>Sign In</h1>
<?php if(session()->getFlashdata('msg')):?>
<div class="alert alert-danger"><?= session()->getFlashdata('msg') ?></div>
<?php endif;?>
<form action="/login/auth" method="post">
<div class="mb-3">
<label for="InputForEmail" class="form-label">Email address</label>
<input type="email" name="email" class="form-control" id="InputForEmail" value="<?= set_value('email') ?>">
</div>
<div class="mb-3">
<label for="InputForPassword" class="form-label">Password</label>
<input type="password" name="password" class="form-control" id="InputForPassword">
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
</div>

</div>
</div>

<!-- Popper.js first, then Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js" integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/" crossorigin="anonymous"></script>
</body>
</html>

Create a Controller Dashboard.php

File name : Dashboard.php

<?php namespace App\Controllers;

use CodeIgniter\Controller;

class Dashboard extends Controller
{
public function index()
{
$session = session();
echo "Welcome back, ".$session->get('user_name');
}
}

Create a Filters Auth.php File

CodeIgniter 4 provides a filter feature that functions to handle Before Request or After Request.

In this case, we will protect the function index() on the “Dashboard.php” Controller from users who have not logged in using Filter.

Create a filter file named "Auth.php" in the "app/Filters" folder,

File name : index.php

<?php namespace App\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;

class Auth implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
// if user not logged in
if(! session()->get('logged_in')){
// then redirct to login page
return redirect()->to('/login');
}
}

//--------------------------------------------------------------------

public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// Do something here
}
}

Then open the "Filters.php" file located in the "app/Config" folder, then find the following code:

File name : index.php

public $aliases = [
'csrf' => \CodeIgniter\Filters\CSRF::class,
'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
'honeypot' => \CodeIgniter\Filters\Honeypot::class,
];

Then change it to be like this:

public $aliases = [
'csrf' => \CodeIgniter\Filters\CSRF::class,
'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
'honeypot' => \CodeIgniter\Filters\Honeypot::class,
'auth' => \App\Filters\Auth::class,
];

Route

File name : index.php

$routes->get('/', 'Home::index');
$routes->get('/dashboard', 'Dashboard::index',['filter' => 'auth']);

File name : index.php


File name : index.php


File name : index.php


File name : index.php


File name : index.php


File name : index.php


File name : index.php


File name : index.php


File name : index.php


Output :-







Itechtuto

Connect Us Socially:

Quick Links

  • itech
  • About Us
  • Feedback
  • Trademarks
  • Privacy Policy
  • Terms of Use
  • Sitemap
  • Trademarks
  • Privacy Policy
  • Terms of Use
  • Sitemap

Copyright © 2016 itechxpert (P) Ltd. All rights reserved.

Copyright © 2016 itechxpert (P) Ltd. All rights reserved.