PHP處理唯一code值(邀請碼/優惠券編碼)
阿新 • • 發佈:2018-12-09
在專案中,暴露給使用者真實的專案ID,很有可能被惡意採集,很有可能被猜到目前有多少量(對造假不利)。前兩天群裡有人分享了一個php類庫
Hashids
,就可以解決這個問題。Hashids是一個能利用整數生成出短小、唯一、非連續識別符號的類庫,它支援包含php在內的好多好多(真的好多)種語言。Hashids支援通過生成出來的識別符號進行解碼為原數字,還支援加鹽加密,不會因為大家都用這個類庫就被猜到真實ID。
安裝類庫
composer require hashids/hashids
加密示例
$id = 123;
$hashids = new Hashids\Hashids();
// 編碼
$hashID = $hashids->encode($id);
// 解碼
$decodeResult = $hashids->decode($hashID);
var_dump($hashID, $decodeResult);
// 陣列編碼
$hashID = $hashids->encode([1, 2, 3]);
// 陣列解碼
$decodeResult = $hashids->decode($hashID);
var_dump($hashID, $decodeResult);
// 加鹽編碼
$hashids = new Hashids\Hashids('我是鹽');
// 編碼
$hashID = $hashids->encode($id);
// 解碼
$decodeResult = $hashids->decode($hashID);
var_dump($hashID, $decodeResult);
$hashids = new Hashids('jianchayun',6);//引數一salt,引數二所要的編碼長度
$code = $hashids->encode($user_id);