gpt4 book ai didi

php - URL缩短器: best encoding method?

转载 作者:行者123 更新时间:2023-12-03 01:26:06 25 4
gpt4 key购买 nike

我正在创建一个链接缩短服务,并使用增量 ID 字段的 Base64 编码/解码来创建我的网址。 ID 为“6”的 url 为:http://mysite.com/Ng==

我还需要允许用户创建自定义网址名称,例如 http://mysite.com/music

这是到目前为止我的(可能是错误的)方法。帮助修复它将不胜感激。

当有人创建新链接时:

  • 我从数据库中获取最大的链接 ID(它不会自动递增)
  • 将 ID 加 1
  • 通过该 ID 的 base64_encoding 生成短网址代码(http://website.com/[short 网址名称])
  • 插入链接表:id、short_url_code、destination_url

当有人创建新链接并传递自定义短 URL 时:

  • 我的计划是对其自定义字符串进行 base64_decode 并将其用作链接 ID,但我没有意识到您不能仅对任何字母数字字符串进行 base64_decode 并将其转换为数字。

是否有更好的编码方法,可以让我将任何数字转换为短字符串,并将任何字符串转换为数字,这样我就可以通过将名称转换为数字并查询来始终查找短网址(无论是自定义还是自动生成)对于 ID 等于该数字的链接?

最佳答案

首先,确保在 IDshort_url_code 列上设置唯一性约束

当有人创建新链接时:

  1. 从数据库中获取下一个最大的链接ID(出于性能原因,您应该真正使用autoincrementSEQUENCE,具体取决于您的 RDBMS 提供的功能;否则请继续选择 MAX(ID)+1 )
  2. 使用 base64_encodeID 生成短 URL 代码 (http://website.com/[short url name]) em>任何其他自定义或标准编码方案
  3. 插入links表:ID、short_url_code、destination_url
  4. 如果由于违反约束而导致插入失败,请返回步骤 1 尝试新的 ID;您的违规行为可能是因为:

    1. 相同的 ID 已被另一个线程/进程等并行使用(即插入)。(如果您使用 autoincrement,则不会发生这种情况SEQUENCE,否则可能经常发生),和/或
    2. 相同的 short_url_code 已被用作自定义网址(这种情况很少发生,除非有人试图在您的网站上制造麻烦)
  5. 如果插入成功,则提交并返回短URL给用户

当有人创建新链接并传递自定义短 URL 时:

  1. 执行与上述相同的步骤 1
  2. 不要像上面的步骤 2 那样从 ID 生成短网址部分,而是使用用户提供的自定义 short_url_code
  3. 执行与上述相同的步骤 3
  4. 如果插入失败的原因是:
    1. ID 违反约束:返回第 1 步尝试新的 ID
    2. 违反 short_url_code 的约束:向用户返回错误,要求他选择其他自定义网址,因为他/她提供的短网址已被使用
  5. 执行与上述相同的步骤 5

关于php - URL缩短器: best encoding method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com