PHPackages                             esoftdream/otp - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. esoftdream/otp

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

esoftdream/otp
==============

Library kelola OTP

1.1.2(2mo ago)06561[2 PRs](https://github.com/esoftdream/otp/pulls)proprietaryPHPPHP ^7.0||^8.0CI passing

Since Jan 7Pushed 6d ago1 watchersCompare

[ Source](https://github.com/esoftdream/otp)[ Packagist](https://packagist.org/packages/esoftdream/otp)[ RSS](/packages/esoftdream-otp/feed)WikiDiscussions dev Synced 1mo ago

READMEChangelog (2)Dependencies (7)Versions (17)Used By (0)

Esoftdream OTP Module
=====================

[](#esoftdream-otp-module)

Modul untuk menangani pembuatan dan verifikasi One-Time Password (OTP) secara aman dan tangguh untuk proyek PHP (CodeIgniter 4).

Fitur Utama
-----------

[](#fitur-utama)

- **Resiliensi Tinggi**: Mendukung verifikasi terhadap beberapa kode OTP aktif secara bersamaan (mencegah masalah klik ganda atau delay pengiriman).
- **Normalisasi Input Otomatis**: Secara cerdas membersihkan spasi, simbol, dan menangani *leading zeros* (angka nol di depan).
- **Keamanan**: Penyimpanan kode menggunakan hashing Bcrypt.
- **Standar Waktu UTC**: Menggunakan standar UTC untuk mencegah masalah perbedaan zona waktu server.

Persyaratan
-----------

[](#persyaratan)

- PHP 8.1 atau lebih baru
- Proyek berbasis CodeIgniter 4

Instalasi Database
------------------

[](#instalasi-database)

Jalankan migration untuk membuat tabel `log_otp`:

```
php spark migrate:latest -n Esoftdream\OTP
```

Cara Penggunaan
---------------

[](#cara-penggunaan)

### 1. Inisialisasi

[](#1-inisialisasi)

Ada dua cara untuk menginisialisasi modul ini, tergantung apakah User ID sudah tersedia atau belum:

#### A. Menggunakan User ID (Kasus Umum)

[](#a-menggunakan-user-id-kasus-umum)

Gunakan cara ini jika user sudah terdaftar di database (misalnya untuk Forgot Password, Verifikasi Transaksi, dll):

```
use Esoftdream\OTP\OTP;

// Parameter: userType, userId
$otp = new OTP('member', 123);
$otp->type = 'forgot_password'; // Wajib set tipe kegunaan OTP
```

#### B. Menggunakan Identifier (Kasus Registrasi / User belum ada)

[](#b-menggunakan-identifier-kasus-registrasi--user-belum-ada)

Jika User ID belum dibuat di database (misalnya verifikasi email/telepon saat registrasi), Anda bisa menggunakan *identifier* unik seperti email atau nomor telepon sebagai gantinya:

```
use Esoftdream\OTP\OTP;

// Parameter: userType, userId (null), db connection (null), identifier
$otp = new OTP('member', null, null, 'john.doe@example.com');
$otp->type = 'registration';
```

#### Pengaturan Opsional

[](#pengaturan-opsional)

Anda juga bisa mengatur panjang kode OTP (default 6 digit) dan masa berlaku (default 10 menit):

```
$otp->setLength(6)->setExpiry(5);
```

### 2. Membuat OTP (Generate)

[](#2-membuat-otp-generate)

```
$result = $otp->generate();

/**
 * $result berisi:
 * [
 *    'otp' => '102678',
 *    'expired' => '2026-04-14 14:30:00'
 * ]
 */
```

### 3. Verifikasi OTP

[](#3-verifikasi-otp)

Sistem ini sangat fleksibel. Pengguna dapat menginput kode dengan spasi atau simbol, dan jika ada pengiriman ulang, kode sebelumnya (jika belum expired) akan tetap bisa divalidasi.

```
try {
    // Input bisa berupa ' 10-26 78 ', akan tetap diproses sebagai '102678'
    if ($otp->verify($userInput)) {
        echo "OTP Berhasil divalidasi!";
    }
} catch (\Exception $e) {
    // Menangani error: 'Kode OTP tidak ditemukan', 'Kode OTP tidak valid', atau 'Kode OTP sudah kedaluwarsa'
    echo "Gagal: " . $e->getMessage();
}
```

Kontribusi
----------

[](#kontribusi)

Silakan ajukan PR untuk peningkatan fitur atau perbaikan bug. Pastikan untuk selalu menjalankan unit test sebelum melakukan commit.

```
./vendor/bin/phpunit tests/OTPTest.php
```

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance92

Actively maintained with recent releases

Popularity19

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 90% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~35 days

Recently: every ~0 days

Total

14

Last Release

79d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bdabf715f2ea7ef3658466e6e7cd21d7b713e0c9058be35d5b0a050f674a00a9?d=identicon)[totoprayogo1916](/maintainers/totoprayogo1916)

![](https://avatars.githubusercontent.com/u/4929641?v=4)[Eko Syamsudin](/maintainers/eksyam)[@eksyam](https://github.com/eksyam)

---

Top Contributors

[![totoprayogo1916](https://avatars.githubusercontent.com/u/2387514?v=4)](https://github.com/totoprayogo1916 "totoprayogo1916 (27 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (3 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/esoftdream-otp/health.svg)

```
[![Health](https://phpackages.com/badges/esoftdream-otp/health.svg)](https://phpackages.com/packages/esoftdream-otp)
```

###  Alternatives

[cycle/orm

PHP DataMapper ORM and Data Modelling Engine

1.3k917.0k77](/packages/cycle-orm)[akeneo/pim-community-dev

Akeneo PIM, the future of catalog management is open!

1.0k624.1k86](/packages/akeneo-pim-community-dev)[typo3/cms

TYPO3 CMS is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.

1.2k1.9M122](/packages/typo3-cms)[hyperf/di

A DI for Hyperf.

173.0M691](/packages/hyperf-di)[typo3/cms-extbase

TYPO3 CMS Extbase - Extension framework to create TYPO3 frontend plugins and TYPO3 backend modules.

1813.1M812](/packages/typo3-cms-extbase)[hermawan/codeigniter4-datatables

Serverside Datatables library for CodeIgniter4

11247.7k4](/packages/hermawan-codeigniter4-datatables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
