我正在尝试为客户制作网址缩短器。我现在有一个不错的算法,唯一的问题是,如果客户要为不同的促销缩短相同的 URL,它会创建相同的代码。
我能做些什么来防止这种情况发生?
$hash = sha1($this->data[$this->alias]['us_url']);
$this->data[$this->alias]['shortid'] = base_convert(hexdec($hash), 10, 32);
我希望能够为同一个 url 创建多个短代码以不同地跟踪它。
我正在尝试为客户制作网址缩短器。我现在有一个不错的算法,唯一的问题是,如果客户要为不同的促销缩短相同的 URL,它会创建相同的代码。
我能做些什么来防止这种情况发生?
$hash = sha1($this->data[$this->alias]['us_url']);
$this->data[$this->alias]['shortid'] = base_convert(hexdec($hash), 10, 32);
我希望能够为同一个 url 创建多个短代码以不同地跟踪它。
与创建密码哈希时的过程相同:使用一些盐。
$hash = sha1($randomly_generated_salt . $my_url);
因此,相同的输入字符串将创建不同的哈希。盐应该有合适的长度以提供足够的熵。
(尽管您不会使用 sha1 来散列密码!)
添加提供自定义网址的可能性。在伪代码中:
if(isset($customUrl) && isUniqueLabel($customUrl)) {
createCustomUrl()
} else {
createUsualUrl()
}
给定自定义 URL,客户端可以手动定义 url(就像 is.gd 和许多其他服务所做的那样),这将增加自定义的可能性。