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