定制 novay/icaptcha 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

novay/icaptcha

最新稳定版本:1.0.0

Composer 安装命令:

composer require novay/icaptcha

包简介

Custom Image Captcha Package for Laravel.

README 文档

README

Package Laravel Icaptcha menyediakan solusi keamanan berbasis image CAPTCHA yang fleksibel untuk aplikasi Laravel Anda. Icaptcha menawarkan berbagai tipe tantangan (teks, matematika, dan pengetahuan umum) dan mudah diintegrasikan menggunakan Blade Directive sederhana.

✨ Fitur Utama

  • Tiga Tipe Tantangan: Mendukung Captcha Teks Acak, Matematika Sederhana, dan Tebak Nama Kota (pengetahuan umum).
  • Kustomisasi Runtime: Konfigurasi dapat ditimpa langsung di view Anda.
  • Validasi Satu Kali Pakai (One-Time Use): Jawaban Captcha dihapus dari session segera setelah validasi untuk keamanan.
  • Noise dan Rotasi: Teks dan gambar diacak untuk mencegah bot OCR (Optical Character Recognition).
  • Modularitas: Menggunakan view dan data yang dapat dipublikasikan untuk kustomisasi mudah.

🚀 Instalasi

1. Instalasi Composer

composer require novay/icaptcha

2. Publikasi Aset

Setelah instalasi, jalankan perintah publish untuk menyalin config, view, dan data ke direktori aplikasi Anda:

php artisan vendor:publish --tag=icaptcha-config  # [config/icaptcha.php]
php artisan vendor:publish --tag=icaptcha-views   # [resources/views/vendor/icaptcha/icaptcha.blade.php]
php artisan vendor:publish --tag=icaptcha-data    # [storage/app/vendor/icaptcha/cities.json]

Disarankan: Periksa dan sesuaikan pengaturan di config/icaptcha.php sesuai kebutuhan Anda, terutama path font dan dimensi gambar.

🔑 Penggunaan

1. Menampilkan Captcha di View

Gunakan Blade Directive @icaptcha di mana pun Anda membutuhkan kode keamanan (biasanya di formulir login atau pendaftaran).

<div class="form-group">
    <label for="icaptcha">Kode Keamanan</label>
    <div class="icaptcha-wrapper">
        @icaptcha 
    </div>
    <input type="text" name="icaptcha" required class="form-control" placeholder="Masukkan jawaban di atas">
    </div>

2. Kustomisasi Tipe Captcha (Runtime)

Anda dapat menimpa tipe dan parameter konfigurasi Captcha langsung saat pemanggilan directive:

Tipe Deskripsi Contoh Pemanggilan
text Karakter acak dengan rotasi per karakter. @icaptcha(['length' => 6])
math Soal aritmatika sederhana. @icaptcha(['type' => 'math', 'math_operator' => ['+']])
city Tebak nama kota (vokal disamarkan). @icaptcha(['type' => 'city'])

🔒 Validasi Jawaban

Gunakan aturan validasi icaptcha yang disediakan oleh package di Request atau Controller Anda.

// Dalam FormRequest atau Controller

public function store(Request $request)
{
    $request->validate([
        // ... aturan validasi lainnya
        'icaptcha' => 'required|icaptcha', 
    ], [
        'icaptcha.required' => 'Mohon masukkan kode keamanan.',
        'icaptcha.icaptcha' => 'Jawaban kode keamanan tidak tepat.',
    ]);
    
    // ... Logika login atau pendaftaran berhasil
}

Perhatian: Aturan icaptcha secara otomatis mengambil jawaban yang benar dari session, membandingkannya dengan input pengguna, dan menghapus kunci session setelah validasi.

⚙️ Detail Konfigurasi

Berikut adalah kunci-kunci penting di config/icaptcha.php:

Kunci Tipe Deskripsi Default
type string Tipe Captcha: 'text', 'math', atau 'city'. 'text'
session_key string Kunci yang digunakan untuk menyimpan jawaban di session. 'icaptcha_code'
width int Lebar gambar Captcha (piksel). 180
height int Tinggi gambar Captcha (piksel). 50
font_path string Path ke file font TTF yang digunakan. Path default
math_operator array Operator yang digunakan untuk tipe math (e.g., ['+', '-']). ['+', '-']

Lisensi

Package ini dirilis di bawah Lisensi MIT.

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-11-26