Hashids ist eine kleine PHP-Bibliothek zum Generieren von YouTube-ähnlichen IDs aus Zahlen. Verwenden Sie es, wenn Sie die numerischen IDs Ihrer Datenbank nicht für Benutzer sichtbar machen möchten: https://hashids.org/php
Benötigen Sie dieses Paket mit Composer im Stammverzeichnis Ihres Projekts.
composer require hashids/hashids
Anschließend können Sie die Klasse in Ihre Anwendung importieren:
use Hashids Hashids ;
$ hashids = new Hashids ();
$ hashids -> encode ( 1 );
Hinweis Hashids erfordern entweder die Erweiterung
bcmath
odergmp
um zu funktionieren.
use Hashids Hashids ;
$ hashids = new Hashids ();
$ id = $ hashids -> encode ( 1 , 2 , 3 ); // o2fXhV
$ numbers = $ hashids -> decode ( $ id ); // [1, 2, 3]
encode()
zu übergeben: 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
Übergeben Sie einen Projektnamen, um Ihre Ausgabe-IDs eindeutig zu machen:
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
Beachten Sie, dass Ausgabe-IDs nur so aufgefüllt werden, dass sie mindestens einer bestimmten Länge entsprechen. Das bedeutet nicht, dass sie genau diese Länge haben werden.
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
Nützlich, wenn Sie Mongos ObjectIds kodieren möchten. Beachten Sie, dass es keine Begrenzung für die Größe einer Hexadezimalzahl gibt , die Sie übergeben können (es muss nicht Mongos ObjectId sein).
use Hashids Hashids ;
$ hashids = new Hashids ();
$ id = $ hashids -> encodeHex ( ' 507f1f77bcf86cd799439011 ' ); // y42LW46J9luq3Xq9XMly
$ hex = $ hashids -> decodeHex ( $ id ); // 507f1f77bcf86cd799439011
Beim Dekodieren ist die Ausgabe immer ein Zahlenarray (auch wenn Sie nur eine Zahl kodiert haben):
use Hashids Hashids ;
$ hashids = new Hashids ();
$ id = $ hashids -> encode ( 1 );
$ hashids -> decode ( $ id ); // [1]
Die Kodierung negativer Zahlen wird nicht unterstützt.
Wenn Sie eine falsche Eingabe an encode()
übergeben, wird eine leere Zeichenfolge zurückgegeben:
use Hashids Hashids ;
$ hashids = new Hashids ();
$ id = $ hashids -> encode ( ' 123a ' );
$ id === '' ; // true
Verwenden Sie diese Bibliothek nicht als Sicherheitsmaßnahme. Verschlüsseln Sie damit keine sensiblen Daten. Hashids ist keine Verschlüsselungsbibliothek.
Der Hauptzweck von Hashids besteht darin, numerische IDs zu verschleiern. Es ist nicht dafür gedacht oder getestet, als Sicherheits- oder Komprimierungstool verwendet zu werden. Allerdings versucht dieser Algorithmus, diese IDs zufällig und unvorhersehbar zu machen:
Beim Codieren mehrerer identischer Zahlen wird kein Muster angezeigt (3 im folgenden Beispiel):
use Hashids Hashids ;
$ hashids = new Hashids ();
$ hashids -> encode ( 5 , 5 , 5 ); // A6t1tQ
Das Gleiche gilt für die Codierung einer Reihe von Zahlen im Vergleich zur separaten Codierung:
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
Dieser Code wurde mit der Absicht geschrieben, die Ausgabe-IDs an sichtbaren Stellen wie der URL zu platzieren. Daher versucht der Algorithmus, die Generierung der häufigsten englischen Schimpfwörter zu vermeiden, indem er IDs generiert, bei denen die folgenden Buchstaben niemals nebeneinander stehen:
c, f, h, i, s, t, u