• 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  » 

How to create Signin / Signup Application in CI4


Create Project

File name : index.php

composer create-project codeigniter4/itechxpert

Set Error Configuration

File name : index.php

go to the app/Config/Boot/production.php and change display_errors value to 1.
ini_set('display_errors', '1');

Create Table into Database

File name : index.php

CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(150),
email VARCHAR(150),
password VARCHAR(150),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=INNODB;

Create User Model

Create UserModel.php file in app/Models folder

File name : index.php

<?php

namespace App\Models;
use CodeIgniter\Model;


class UserModel extends Model{

protected $table = 'users';

protected $allowedFields = [
'name',
'email',
'password',
'created_at'
];

}

Create Controller

Create SignupController.php file in the app/Controllers folder.

File name : index.php

<?php

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

class SignupController extends Controller
{
public function index()
{
helper(['form']);
$data = [];
echo view('signup', $data);
}

public function store()
{
helper(['form']);
$rules = [
'name' => 'required|min_length[2]|max_length[50]',
'email' => 'required|min_length[4]|max_length[100]|valid_email|is_unique[users.email]',
'password' => 'required|min_length[4]|max_length[50]',
'confirmpassword' => 'matches[password]'
];

if($this->validate($rules)){
$userModel = new UserModel();

$data = [
'name' => $this->request->getVar('name'),
'email' => $this->request->getVar('email'),
'password' => password_hash($this->request->getVar('password'), PASSWORD_DEFAULT)
];

$userModel->save($data);

return redirect()->to('/signin');
}else{
$data['validation'] = $this->validator;
echo view('signup', $data);
}

}

}

create ProfileController.php file in the app/Controllers folder

File name : index.php

<?php

namespace App\Controllers;
use CodeIgniter\Controller;


class ProfileController extends Controller
{
public function index()
{
$session = session();
echo "Welcome : ".$session->get('name');
}
}

create SigninController.php file in the app/Controllers directory

File name : index.php

<?php

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


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

public function loginAuth()
{
$session = session();

$userModel = new UserModel();

$email = $this->request->getVar('email');
$password = $this->request->getVar('password');

$data = $userModel->where('email', $email)->first();

if($data){
$pass = $data['password'];
$authenticatePassword = password_verify($password, $pass);
if($authenticatePassword){
$ses_data = [
'id' => $data['id'],
'name' => $data['name'],
'email' => $data['email'],
'isLoggedIn' => TRUE
];

$session->set($ses_data);
return redirect()->to('/profile');

}else{
$session->setFlashdata('msg', 'Password is incorrect.');
return redirect()->to('/signin');
}

}else{
$session->setFlashdata('msg', 'Email does not exist.');
return redirect()->to('/signin');
}
}
}

Create the user registration form

File name : app/View/signup.php

<!doctype html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">

<title>Codeigniter Auth User Registration Example</title>
</head>

<body>
<div class="container mt-5">
<div class="row justify-content-md-center">
<div class="col-5">
<h2>Register User</h2>

<?php if(isset($validation)):?>
<div class="alert alert-warning">
<?= $validation->listErrors() ?>
</div>
<?php endif;?>

<form action="<?php echo base_url(); ?>/SignupController/store" method="post">
<div class="form-group mb-3">
<input type="text" name="name" placeholder="Name" value="<?= set_value('name') ?>" class="form-control" >
</div>

<div class="form-group mb-3">
<input type="email" name="email" placeholder="Email" value="<?= set_value('email') ?>" class="form-control" >
</div>

<div class="form-group mb-3">
<input type="password" name="password" placeholder="Password" class="form-control" >
</div>

<div class="form-group mb-3">
<input type="password" name="confirmpassword" placeholder="Confirm Password" class="form-control" >
</div>

<div class="d-grid">
<button type="submit" class="btn btn-dark">Signup</button>
</div>
</form>
</div>
</div>
</div>
</body>

</html>

create signin Application form

File name : app/View/signin.php

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">

<title>Codeigniter Login with Email/Password Example</title>
</head>
<body>
<div class="container">
<div class="row justify-content-md-center">
<div class="col-5">

<h2>Login in</h2>

<?php if(session()->getFlashdata('msg')):?>
<div class="alert alert-warning">
<?= session()->getFlashdata('msg') ?>
</div>
<?php endif;?>

<form action="<?php echo base_url(); ?>/SigninController/loginAuth" method="post">
<div class="form-group mb-3">
<input type="email" name="email" placeholder="Email" value="<?= set_value('email') ?>" class="form-control" >
</div>

<div class="form-group mb-3">
<input type="password" name="password" placeholder="Password" class="form-control" >
</div>

<div class="d-grid">
<button type="submit" class="btn btn-success">Signin</button>
</div>
</form>
</div>

</div>
</div>
</body>
</html>

Routes with Filter

File name : app/Config/Filters.php

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

create an AuthGuard.php file inside the app/Filters folder

File name : app/Filters/AuthGuard.php

<?php

namespace App\Filters;

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


class AuthGuard implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
if (!session()->get('isLoggedIn'))
{
return redirect()
->to('/signin');
}
}

public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{

}
}

create routes

File name : app/Config/Routes.php

$routes->get('/', 'SignupController::index');
$routes->get('/signup', 'SignupController::index');
$routes->get('/signin', 'SigninController::index');
$routes->get('/profile', 'ProfileController::index',['filter' => 'authGuard']);

Run CI Application

File name :

php spark serve




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.