首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建短链接会导致冲突

创建短链接会导致冲突
EN

Stack Overflow用户
提问于 2011-12-01 16:53:41
回答 2查看 160关注 0票数 0

好了,当我试图创建一个小的3个字符的迷你记录,然后将其添加到mod_rewriten域名url中,创建链接/文件缩写服务时,当涉及到url记录冲突时,我似乎碰壁了。可能是因为我还没有部署任何reall验证系统来检查MySQL是否存在记录并将其推送给用户,或者是否存在标记的记录而不是实际的url/文件,然后重新运行脚本以创建新的短标记。

这是当前的脚本,它导致与标签的冲突,并且由于某种原因创建了一个名称与标签不同的文件(这仅用于文件共享)

代码语言:javascript
复制
function shorten_file() {

     $name = $_FILES['file']['name'];

    $ltr = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIKLM'; 

 srand((double) microtime() * 1000000); 

 $short = '';
     for ($i = 1; $i <= rand(4,4); $i++) { 
 $q = rand() %98; 
 $short = $short . $ltr[$q];
 }

     $file = strtolower($name);

     $rand = mt_rand();
     $short = substr($rand.$file, 0, 3);

     return $short;

}

$filename = $_FILES['file']['name'];
$filename = str_replace("'", "", $filename);
$ext = $parts[count($parts)-1];
$contenttype = strtolower($ext);

$new_file = shorten($filename).".".$ext;
$new_hash = shorten($filename);

如前所述,记录已创建,因此假设我上传了一个名为: img_4032.jpg的文件,该文件将作为临时文件上传,然后将对其进行处理并创建一条记录。现在文件被保存到/server_id (1-8)/md5/hash(a-g的/file_cLO.jpg)文件中,并且应该生成一个记录cLO,但是我得到的是file_cLO.jpg记录lNm,所以在这里脚本没有返回与它提供给文件的记录相同的记录。我还会注意到,由于某些原因,不会返回大写字母,因此它与数字一起都是小写的。

有没有关于修复的建议,或者可能的想法是除了验证将添加的actuall记录之外,还应该做些什么来防止这种冲突的发生?

所有“合乎逻辑的”想法和建议都是受欢迎的

EN

回答 2

Stack Overflow用户

发布于 2011-12-01 16:59:05

问题是您调用shorten函数两次,每次生成一个新的散列,而不是调用它一次并将其分配给两个var

代码语言:javascript
复制
$new_hash = shorten($filename);
$new_file = $new_hash.".".$ext;
票数 1
EN

Stack Overflow用户

发布于 2011-12-01 16:59:14

调用shorten两次,生成两个单独的随机urls (每次调用随机数生成器时都会重新设定它的种子)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8338637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档