素材牛VIP会员

PHP实现数字ID转化为唯一字符串代码

 所属分类:PHP实例-函数/算法,常用实例教程

 浏览:2123次  评论:2次  更新时间:2019-09-13
牛币素材VIP可免积分下载
PHP实现数字ID转化为唯一字符串代码
积分说明:注册即送10牛币,每日签到可获得5牛币,成为VIP会员可永久免牛币下载!   充值积分   充值会员   更多说明»
项目地址(website):https://github.com/vinkla/hashids
素材描述:正常情况下,当浏览文章页面时,我们会在URL中看到真实的文章ID。如果你不想将数据库中的数据ID暴露给用户,那你可以使用Hashids,它是一个小型的PHP库,可将数字id生成类似Youku,Weibo之类的字符串id。

基础属性

  • 语言PHP
  • 数据库
  • 难易初级

详细介绍

Hashids是一个能利用整数生成出短小、唯一、非连续标识符的类库,它支持包含php等多种语言。 Hashids支持通过生成出来的标识符进行解码为原数字,还支持加盐加密,不会因为大家都用这个类库就被猜到真实ID。 安装 使用Composer安装Hashids。

Hashids是一个能利用整数生成出短小、唯一、非连续标识符的类库,它支持包含php等多种语言。 Hashids支持通过生成出来的标识符进行解码为原数字,还支持加盐加密,不会因为大家都用这个类库就被猜到真实ID。 安装 使用Composer安装Hashids。


require 'vendor/autoload.php'; 
use Hashids\Hashids; 
 
$hashids = new Hashids(); 
$id = $hashids->encode(1); //1 -> jR 
以上代码中会把数字1转换成字符串jR 
 
可以使用decode()方法还原解码id,注意这里得到的是一个数组。 
 
$numbers = $hashids->decode($id); // [1] 
 
你也可以加盐,或者说是设置一个密钥,与别的项目不一样,可以保证生成唯一的字符串。 
 
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 
 
当然,你也可以将转换后的字符串的长度加长,比如下方代码设置了字符串为10位字符。
use Hashids\Hashids; 
 
$hashids = new Hashids(); // no padding 
$hashids->encode(1); // jR 
 
$hashids = new Hashids('', 10); // pad to length 10 
$hashids->encode(1); // VolejRejNm  
是不是使用很简单,值得注意的是: 
Hashids解码时返回的是数组,哪怕是一个id数字最后也会返回数组。 
Hashids不能转换加密负数。 
Hashids不是安全库,不能将敏感信息作为编码。


讨论这个素材(2)回答他人问题或分享使用心得会奖励牛币

qq***43  
2019年12月01日

可以太厉害了

回复
qq***03  
2020年06月26日

不错!

回复
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取
我的牛币余额:0
所需牛币:20 开始下载

牛币获取:签到、评论、充值    » 在线充值(10牛币=1元)