Эта тема на forum.dklab.ru


Real_EGGMAN: Создание уникального имени фаила
Пожалуйста помогите закончить мой скрипт по созданию уникального имени фаила.
На деле он должен работать, но что то здесь не в порядке... может я какие то ошибки допустил при написании...


<?php


if ($File) {


/* 1 - Распечатка данных о фаиле */
print ("File name: $File_nick<br>");
show_size ("$File,$format=false,$size=true <br>");




/* 2 - Колличество фаилов */
$File_namber = ("files/$Rasdel/nambes.txt");
$Open_file_namber = fopen ($File_namber, "w+");





/* 3 - pathinfo() возвращает ассоциативный массив, который содержит информацию о пути path . Возвращаемый массив состоит из следующих элементов: dirname, basename и extension */
$Path_parts = pathinfo('$File');



/* Главная структура создания униклаьного имени фаила */
[color=red]if ($File_namber_size == 0) {

/* Запись первого фаила в блокнот */
$Namber = 1;
$Write_namber = fwrite ($Open_file_namber, "$Namber");
$Close_namber = fclose ($Open_file_namber);

/* Запись числового значения в имя фаила с сохранением типа */
$File1_name = strtok ($File_name, ".");
$File1_name = $Namber;
$File2_name = $Path_parts['extension'];
$File_name = ($File1_name.".$File2_name");

} else {

/* Добавление к числу в nambes.txt "+1" */
$Namber = ("$File_namber[0] + 1");
$Write_namber = fwrite ($Open_file_namber, "$Namber");
$Close_namber = fclose ($Open_file_namber);

/* Изменение имени фаила на тоже число */
$File1_name = strtok ($File_name, ".");
$File1_name = $Namber;
$File2_name = $Path_parts['extension'];
$File_name = ($File1_name.".$File2_name");[color=black][/color]

}
[/color]



/* 4 - Ссылка */
$File_read = ("files/$Rasdel/read.txt");
$Open_read = fopen ($File_read, "a+");
$URL = ("<a href=files/$Rasdel/$File_name class=link3 target=_blank>$File_nick</a><br>show_size ($File,$format=false,$size=true.bytes\t$Description\n");
$Write_read = fwrite ($Open_read, "$URL");
$Close_read = fclose ($Open_read);

$Worked = TRUE;

/* 5 - Сохранение фаила */
if (copy ($File, "files/$Rasdel/$File_name")) {
$Worked = TRUE;
unlink ($File);

} else {
$Worked = FALSE;
print ("Error"); };

} else {
$Worked = FALSE;
print ("Фаила не получено"); }

?>

WingedFox:
Real_EGGMAN
А http://ru2.php.net/tmpfile не судьба использовать?
Ну или http://ru2.php.net/tempnam
Real_EGGMAN:
WingedFox
Оба этих скрипта _сами создают_ фаил а задача изменить имя _уже готового_ фаила, не потеряв его тип.
WingedFox:
Гм... "Правильно ставьте задачу" (с)
Пожалуйста помогите закончить мой скрипт по созданию уникального имени фаила.

Второй вариант создаёт именно уникальное имя файла, к которому без проблем можно прицепить желаемое расширение.
Real_EGGMAN:
Извиняюсь)
WingedFox
Мне интересно что там может вывестись на экран если распечатать его имя... пологаю что то типа "87fb87fody239d908uf3897y83745&($m9349t369t73084c6)*O^bo84i и т.д."... возможно даже с пробелами, а их ни в коем случае не должно быть, иначе не будет работать ссылка по имени фаила. Смый хороший вариант - начинать первый фаил с единицы и увеличивать это число с каждым новым фаилом. В общем то как я и зделал... я не знаю где тут ошибся, по тому что скрипт перестал принимать самое первое условие $File и пишет фаила не получено. Понятия не имею что может это вызывать.
WingedFox:
Real_EGGMAN
Ну что мешает проверить-то?

tempnam('.','my_file'); // my_filekThYVd

Real_EGGMAN:
WingedFox
Всё равно совпадения могут быть... особенно если очень много фаилов...
WingedFox:
Real_EGGMAN
Эмм...
(26*2)^6 = 19770609664
Файлов может быть больше? ;-)
Real_EGGMAN:
WingedFox
Но как тогда считать их колличество на сайте?)
WingedFox:
Real_EGGMAN
Батенька, Вы просто лентяй...
http://ru2.php.net/scandir
Real_EGGMAN:
WingedFox
Такое понятие здесь не уместно. Слишком много пришлось потратить времени и сил на скрипт...
Ну хорошо, надо будет переделать скрипт. Спасибо)
WingedFox:
Пожалуйста. И помните про магическое RTFM.

Эта тема на forum.dklab.ru