我正在为Joomla 2.5编写一个组件,它根据用户输入使用PHP GD库生成图形。
当多个用户使用该组件时,我应该为图像文件指定什么名称以避免冲突。
答案 0 :(得分:0)
你可以在例如帮助下生成随机名称日期和PHP哈希函数: http://www.php.net/manual/en/function.hash.php
因此名称将是唯一的。
或者,取决于组件中使用的功能,您可以以某种方式将用户名添加到图像名称。这取决于组件的功能和我的因素(如果每个用户只有一个图像,或者每个其他功能等)。
扬
答案 1 :(得分:0)
在我看来,你有两种方式。 第一个是使用像
这样的前缀保存图像scotttiger-img12321323.jpg
其中 scotttiger 是用户名, 12321323 是用户输入。 另一种方法是为每个用户使用不同的文件夹
scotttiger/1231321.jpg
但是如果您没有登录用户并且不知道用户名,请使用isfile(http://it1.php.net/is_file)函数进行简单检查并设置增量名称。例如:
$wrote = false;
$prog = 0;
$filename="img-{$user_input}-{$prog}.jpg";
while(isfile($filename)) {
$prog++;
$filename="img-{$user_input}-{$prog}.jpg";
}
write_file($filename);
所以你第一次有img-input-1.jpg第二次img-input-2.jpg等等。 使用此解决方案您没有重复或冲突。
您可以使用此解决方案提高性能:
$wrote = false;
$prog = md5(time());
$filename="img-{$user_input}-{$prog}.jpg";
while(isfile($filename)) {
$prog = md5(time());
$filename="img-{$user_input}-{$prog}.jpg";
}
write_file($filename);