加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – URL缩短:最好的编码方法?

发布时间:2020-12-13 13:57:35 所属栏目:PHP教程 来源:网络整理
导读:我正在创建一个链接缩短服务,我正在使用base64编码/解码增量ID字段来创建我的网址. ID为“6”的网址为: http://mysite.com/Ng== 我还需要允许用户创建自定义的url名称,如http://mysite.com/music 这是我的(可能是错误的)方法到目前为止.帮助修复它将不胜感
我正在创建一个链接缩短服务,我正在使用base64编码/解码增量ID字段来创建我的网址. ID为“6”的网址为: http://mysite.com/Ng==

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

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

当有人创建一个新的链接:

>我从数据库获取最大的链接ID(它不是自动递增)
>将ID增加1
>通过base64_encoding该ID生成一个简短的URL代码(http://website.com/[short url name))
>插入链接表:id,short_url_code,destination_url

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

>我的计划是base64_decode他们的自定义字符串,并使用它作为链接ID,但我没有意识到,你不能只是base64_decode任何字母数字字符串,并将其变成一个数字.

是否有更好的编码方法,让我把任何数字变成一个短的字符串,任何字符串到一个数字,所以我可以随时查找短的URL(不管是自定义还是自动生成)通过将名称变成一个数字和查询链接ID等于该号码?

首先,请确保您在ID和short_url_code列上有单一约束.

当有人创建一个新的链接:

>从数据库获取下一个最大的链接ID(出于性能原因,您应该真正重要使用自动增量或SEQUENCE,具体取决于您的RDBMS提供的内容;否则请选择MAX(ID)1)
>使用base64_encode或任何其他自定义或标准编码方案从ID生成一个简短的URL代码(http://website.com/[short url name))
>插入链接表:ID,destination_url
>如果插入由于约束违规而失败,则返回步骤1尝试新的ID;您可能已经违反了以下原因:

>相同的ID已经被另一个线程/进程等待并行使用(即插入)(如果您使用自动增量或序列,则不会发生),并且/或
>相同的short_url_code已经被用作自定义网址(这将很少发生,除非有人试图在您的网站上造成麻烦)

>如果插入成功,提交并将短URL返回给用户

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

>执行与上述相同的步骤1
>而不是如上面的步骤2从ID生成短的URL部分,使用用户提供的自定义short_url_code
>执行与上述相同的步骤3
>如果插入失败,因为:

> ID上的约束违规:返回步骤1尝试新的ID
> short_url_code的约束违规:向用户请求错误,要求他选择不同的自定义网址,因为他/她提供的短URL已被使用

>执行与上述相同的步骤5

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读