使用 Sqids 从数字生成简短、URL 安全的 ID

发布日期 经过

使用 Sqids 图片从数字生成简短、URL 安全的 ID

鱿鱼 它将一个或多个非负整数编码成一个简短的、URL 安全的字符串,并将该字符串解码回原始数字。它是 Hashids 的后继者,并且相同的编码方式被 40 多种语言支持,因此在 PHP 中生成的 ID 在 JavaScript、Python 或 Rust 中使用相同的设置进行解码。PHP 包需要 PHP 8.1 以及以下任一版本: gmp 或者 bcmath 扩展其任意精度数学。

常见用途是将顺序数据库键隐藏在公共 URL 中。 /invoices/1/invoices/2 它会告诉访客你有多少条记录,并邀请他们浏览整个范围。而先对主键进行编码,则会将其转换为不透明的字符串。

数字的编码和解码

构造函数不接受任何必需参数。请传递一个整数数组。 encode() 然后把它们读回去 decode() :

使用 鱿鱼\鱿鱼 ;
$sqids = 新的 鱿鱼 ();
$id = $sqids -> 编码 ([ 7 , 8 , 9 ]); // "ylrR3H"
$数字 = $sqids -> 解码 ($id); // [7, 8, 9]

因为一个 ID 可以包含多个数字,所以你可以将相关的值打包到一个令牌中,例如模型 ID 和类型鉴别器,并在返回时一步解包它们。

垫料长度最短

默认情况下,ID 的长度仅根据需要而定,因此较小的数字会生成非常短的字符串。 minLength 将每个 ID 填充到固定大小,这样可以保持生成的 ID 统一,并使短小、容易猜测的值更难被偶然发现:

$sqids = 新的 鱿鱼 最小长度 : 12 (英文):
$sqids -> 编码 ([ 7 , 8 , 9 ]); // "ylrR3HjJRet1"

自定义字母

字母表决定了 ID 中出现的字符以及它们的排列顺序。提供自定义字母表会改变输出结果,并起到基本的应用程序级加密作用,因此相同的数字会生成与使用默认字母表不同的 ID:

$sqids = 新的 鱿鱼
字母 : 'k3G7QAe51FCsPW92uEOyq4Bg6Sp8YzVTmnU0liwDdHXLajZrfxNhobJIRcMvKt' ,
(英文):
$sqids -> 编码 ([ 7 , 8 , 9 ]); // "fbmzYm"

黑名单

Sqids 内置了一个常用脏话列表,会对包含这些词语的任何 ID 进行重新编码,从而自动避免生成的 ID 中包含这些词语。当您想要筛选特定内容时,可以将该列表替换为您自己的词语:

$sqids = 新的 鱿鱼 黑名单 :[ 'fbmzYm' ]);
// 返回一个避开被屏蔽词的不同 ID
$sqids -> 编码 ([ 7 , 8 , 9 ]);

何时使用Sqids(以及何时不使用)

Sqids 是一个编码器,而非加密工具。任何了解字母表的人都可以逆向破解其输出,因此它不应用于保护敏感数据或替代授权检查。

它适用于面向公众的标识符和链接缩短、数据库主键编码、将少量整数打包成单个引用以减少查找次数,以及一次性登录链接等短期令牌。但对于任何必须保密的内容、个人或敏感数据以及访问控制,它都是不合适的工具。对于这些情况,应该使用真正的加密和适当的授权机制。

使用 Composer 安装:

作曲家 要求 鱿鱼/鱿鱼

您可以阅读源代码和完整文档。 GitHub

Yannick Lyn Fatt 的照片

Laravel News 的特约撰稿人和全栈 Web 开发人员。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
SerpApi

适用于您的 LLM 和 AI 应用的 Web 搜索 API

访问 SerpApi
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
绝不妥协标志

绝不妥协

来自 No Compromises 播客的两位经验丰富的开发者 Joel 和 Aaron 现在可以为您的 Laravel 项目提供服务。⬧ 固定费用 9500 美元/月。⬧ 无冗长的销售流程。⬧ 无需签订合同。⬧ 100% 退款保证。

绝不妥协
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
工具包:适用于 Laravel AI SDK 镜像的可重用 AI 工具

工具包:适用于 Laravel AI SDK 的可重用 AI 工具

阅读文章
Laracon US 2026 公布完整扬声器阵容图片

Laracon US 2026 公布完整演讲嘉宾阵容

阅读文章
PHP 2026 年发展状况调查现已开放(图片)

《2026年菲律宾比索发展状况调查》现已开放

阅读文章
使用 Laradocs 镜像在 Laravel 应用中实现版本控制文档

使用 Laradocs 在 Laravel 应用中实现版本控制文档

阅读文章
Laravel 13.15.0 中的类型化翻译访问器

Laravel 13.15.0 中的类型化翻译访问器

阅读文章
刷新 Laravel 数据库而不删除所有表图片

无需删除所有表即可刷新 Laravel 数据库

阅读文章