Произволно име на снимка при копиране

Pupe64etoo_92

Registered
Ето копирам снимката, погледнете кода.
PHP:
<?php
$file = 'image.png';
//тук някаква функция която да придава произволно име на image,
//и всеки път да е различно, тоест при всяко копиране.
$newfile = 'abcsda.png';
if (!copy($file, $newfile)) {
    echo "kopy yes\n";
}
?>
 
PHP:
<?php
$file = 'image.png';
$format = end(explode(".",$file));
$key = "abcdefghijklmnopqrstuvwxyz1234567890";
$a = str_shuffle($key);
$name = substr($a,0,6);
$filename = "$name.$format";
if (is_file($filename))
{
$b = str_shuffle(str_rev($key));
$c = substr($b,0,6);
$newfile = "$c.$format";
}
else
{
$newfile = $filename;
}
if (!copy($file, $newfile))
{
echo "kopy yes\n";
}
?>
 
$file = 'image.png';
$format = end(explode(".",$file));
$filename =time()."_".rand(10000,99999). ".$format";

Ако се качват от различни потребители, може да добавиш и id:

$filename =$UserID."_".time()."_".rand(10000,99999). ".$format";

Във втория случай може да се махне RAND, защото няма как един потребител да качва два файла едновременно в един и същ момент (поне на теория).
 
Или ей тази функция:

$fname = uniqname( '/var/www/','logo_','jpg');

PHP:
function uniqname($dir, $prefix, $ext ) {
	$i = 0; $filename='';
	while (++$i < 100  and ($filename=='' or file_exists($filename.".".$ext))) {
		$filename = tempnam( $dir, $prefix );
		unlink($filename);
		$filename .= "." . $ext;
	}
	return ($filename);
}
 
Един бързичък вариант за генериране на произволно име:
PHP:
...
$a=md5(mt_rand()); //може и друг алгоритъм, сложих md5 само за пример 
$name = substr($a,0,6);
...
 

Back
Горе