php-为每个用户的数据动态创建一个唯一目录,并检查是否有冲突
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-为每个用户的数据动态创建一个唯一目录,并检查是否有冲突,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2224字,纯文字阅读大概需要4分钟。
内容图文
![php-为每个用户的数据动态创建一个唯一目录,并检查是否有冲突](/upload/InfoBanner/zyjiaocheng/673/0cd6a24674fc46b8bf8b634302e8c99a.jpg)
感谢您的所有帮助-请参阅原始问题,以及按照两行规则进行的修改(我还不能以新用户身份回答自己的问题.).
我环顾四周,问题(here)几乎可以满足我的问题的目的:
例如,我正在为Web应用程序上的每个用户创建一个用户数据目录.课程文件夹必须是唯一的,但为了安全起见也必须是抽象的(例如,使用其用户标识是不合适的).
到目前为止,我已经创建了以下函数;它生成一个唯一的文件夹名称,检查以确保它不存在并将其分配给变量.然后,如果该目录已经存在,则会循环返回:
function generate_unique_userDirectory(){
$userDirectory = md5(uniqid($uid)); //Generate a unique folder name.
if (is_dir($userDirectory)) {
return FALSE; //If the dir exists, report so
} else {
return $userDirectory; //Return unique foldername
}
}
While循环用于继续操作,直到找到未使用的文件夹名称为止.
while (!$userDirectory = generate_unique_userDirectory()) {
echo 'folder exists...loop back try another';
//Try another:
$userDirectory = generate_unique_userDirectory();
}
有没有更好的方法可以做到这一点,我主要担心的是程序是否过于复杂?
非常感谢您的宝贵时间.
我的发现归功于所有的贡献!
感谢@Veger,以及其他所有人;您的协助非常出色;此后,我根据您的建议重新设计了该功能:
function generate_unique_userDirectory($uid){
$userDirectory = md5(uniqid($uid));
while (is_dir(BASE_URI . "$userDirectory")){
$userDirectory = md5(uniqid($uid));
}
return $userDirectory;
}//End of generate_unique_userDirectory funcation decleration.
//Example call to function:
$userDirectory = generate_unique_userDirectory($uid);
echo "The generated user directory is: $userDirectory";
如建议的那样,我将文件夹名称的while while循环放在函数中,这现在使函数调用更加简单.
作为对第二个要点@Veger的回应,据我了解,由于我已经将“ uniqid”函数提供给md5函数,因此每次都会产生一个新字符串(尽管我可能会误解).
将$uid传递给generate_unique_userDirectory()的目的是进一步“盐化”所生成的字符串,但是,我可能已经走得太远了!
非常感谢所有人-第一次在stackoverflow上…
解决方法:
我对您的设计的一些想法:
>正如Wesley已经评论过的,generate_unique_userDirectory()建议返回的目录是唯一的.因此,您无需在调用其结果是否为唯一目录后进行检查…
>再次调用该函数会导致相同的失败,因为新用户未更改$uid.
>如果确实发生变化,为什么不将while循环放入函数中?因此,它始终返回唯一的目录.
>通过在while语句和循环本身中调用该函数,导致该函数在失败后被调用两次.循环中的第一个调用被该语句中的调用覆盖.
内容总结
以上是互联网集市为您收集整理的php-为每个用户的数据动态创建一个唯一目录,并检查是否有冲突全部内容,希望文章能够帮你解决php-为每个用户的数据动态创建一个唯一目录,并检查是否有冲突所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。