Hashids adalah perpustakaan PHP kecil untuk menghasilkan id seperti YouTube dari angka. Gunakan ketika Anda tidak ingin mengekspos id numerik database Anda kepada pengguna: https://hashids.org/php
Wajibkan paket ini, dengan Composer, di direktori root proyek Anda.
composer require hashids/hashids
Kemudian Anda dapat mengimpor kelas ke dalam aplikasi Anda:
use Hashids Hashids ;
$ hashids = new Hashids ();
$ hashids -> encode ( 1 );
Catatan Hashid memerlukan ekstensi
bcmath
ataugmp
agar dapat berfungsi.
use Hashids Hashids ;
$ hashids = new Hashids ();
$ id = $ hashids -> encode ( 1 , 2 , 3 ); // o2fXhV
$ numbers = $ hashids -> decode ( $ id ); // [1, 2, 3]
encode()
: use Hashids Hashids ;
$ hashids = new Hashids ();
$ hashids -> encode ( 1 , 2 , 3 ); // o2fXhV
$ hashids -> encode ([ 1 , 2 , 3 ]); // o2fXhV
$ hashids -> encode ( ' 1 ' , ' 2 ' , ' 3 ' ); // o2fXhV
$ hashids -> encode ([ ' 1 ' , ' 2 ' , ' 3 ' ]); // o2fXhV
Berikan nama proyek untuk membuat id keluaran Anda unik:
use Hashids Hashids ;
$ hashids = new Hashids ( ' My Project ' );
$ hashids -> encode ( 1 , 2 , 3 ); // Z4UrtW
$ hashids = new Hashids ( ' My Other Project ' );
$ hashids -> encode ( 1 , 2 , 3 ); // gPUasb
Perhatikan bahwa id keluaran hanya diisi agar sesuai setidaknya dengan panjang tertentu. Ini tidak berarti bahwa panjangnya akan persis seperti itu.
use Hashids Hashids ;
$ hashids = new Hashids (); // no padding
$ hashids -> encode ( 1 ); // jR
$ hashids = new Hashids ( '' , 10 ); // pad to length 10
$ hashids -> encode ( 1 ); // VolejRejNm
use Hashids Hashids ;
$ hashids = new Hashids ( '' , 0 , ' abcdefghijklmnopqrstuvwxyz ' ); // all lowercase
$ hashids -> encode ( 1 , 2 , 3 ); // mdfphx
Berguna jika Anda ingin menyandikan ObjectIds Mongo. Perhatikan bahwa tidak ada batasan seberapa besar bilangan hex yang dapat Anda lewati (tidak harus ObjectId Mongo).
use Hashids Hashids ;
$ hashids = new Hashids ();
$ id = $ hashids -> encodeHex ( ' 507f1f77bcf86cd799439011 ' ); // y42LW46J9luq3Xq9XMly
$ hex = $ hashids -> decodeHex ( $ id ); // 507f1f77bcf86cd799439011
Saat mendekode, output selalu berupa array angka (bahkan jika Anda hanya mengkodekan satu angka):
use Hashids Hashids ;
$ hashids = new Hashids ();
$ id = $ hashids -> encode ( 1 );
$ hashids -> decode ( $ id ); // [1]
Pengkodean angka negatif tidak didukung.
Jika Anda meneruskan masukan palsu ke encode()
, string kosong akan dikembalikan:
use Hashids Hashids ;
$ hashids = new Hashids ();
$ id = $ hashids -> encode ( ' 123a ' );
$ id === '' ; // true
Jangan gunakan perpustakaan ini sebagai tindakan pengamanan. Jangan menyandikan data sensitif dengannya. Hashid bukanlah perpustakaan enkripsi.
Tujuan utama Hashid adalah untuk mengaburkan id numerik. Ini tidak dimaksudkan atau diuji untuk digunakan sebagai alat keamanan atau kompresi. Meskipun demikian, algoritme ini mencoba membuat id ini acak dan tidak dapat diprediksi:
Tidak ada pola yang ditampilkan saat menyandikan beberapa nomor identik (3 ditunjukkan pada contoh berikut):
use Hashids Hashids ;
$ hashids = new Hashids ();
$ hashids -> encode ( 5 , 5 , 5 ); // A6t1tQ
Hal yang sama juga berlaku saat mengkodekan serangkaian angka vs. mengkodekannya secara terpisah:
use Hashids Hashids ;
$ hashids = new Hashids ();
$ hashids -> encode ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ); // wpfLh9iwsqt0uyCEFjHM
$ hashids -> encode ( 1 ); // jR
$ hashids -> encode ( 2 ); // k5
$ hashids -> encode ( 3 ); // l5
$ hashids -> encode ( 4 ); // mO
$ hashids -> encode ( 5 ); // nR
Kode ini ditulis dengan tujuan untuk menempatkan id keluaran di tempat yang terlihat, seperti URL. Oleh karena itu, algoritme mencoba menghindari pembuatan kata-kata makian bahasa Inggris yang paling umum dengan menghasilkan id yang tidak pernah memiliki huruf berikut di samping satu sama lain:
c, f, h, i, s, t, u