Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Переименование дубликата (https://forum.antichat.xyz/showthread.php?t=100907)

Vinsik 12.01.2009 21:39

Переименование дубликата
 
вот возник опять вопрос, например файл 1.mp3 есть на шаре. Кто то пытаеца залить 1.mp3 =) шара перезапишет файл :( а содержание то может различатся! :( Как сделать чтобы шара переименовывала дубликаты?
Например переименовала этот файл в 1(copy).mp3
PHP код:

<?
    
include("include/common.php");
    
    if(
$loggedin){
        include(
"include/accmenu.php");
    }
    if( 
$_POST['submit'] && $_FILES['attached']['name'] ){
        
$ok_filetypes explode("|",$att_filetypes);
        if (!
$_FILES['attached']['error'] && $_FILES['attached']['size'] > $att_max_size*1024){
            
errform('<CENTER>Извините, слишком большой размер файла!</CENTER><BR><BR>'); // #err
            
$step 1;
        }
        
$filename = (!$_FILES['attached']['error'] ? substrbasename($_FILES['attached']['name']), -30 ) : '');
        
$x strtolowersubstr($_FILES['attached']['name'], -3));
        if(
$filename && !in_array($x$ok_filetypes) ){
            
errform('<CENTER>Не поддерживаемый тип файла!!!</CENTER><BR><BR>');
            
$step 1;
        }
        if(!
$posterr){
            if(!isset(
$_GET["ipaddress"]) || ($_GET["ipaddress"] == "")) {
                
$ipaddress $_SERVER['REMOTE_ADDR'];
                
$local 1;
            } else {
                
$ipaddress $_GET["ipaddress"];
                
$local 0;
            }
    

                  
$ru=array("а","б","в"," ","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");
                  
$tr=array("a","b","v","_","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja");
                  
$uniq strtolower(str_replace($ru,$tr,$_FILES['attached']['name']));

            
move_uploaded_file($_FILES['attached']['tmp_name'], $att_path."/".$uniq.".".$ext );
            
$strQuery  "INSERT INTO images25 SET ";
              
$strQuery .= "filename='($uniq)',"
            if(
$myuid){
                
$strQuery .= "user='{$myuid}',";
            }
            
$strQuery .= "status='1'";
            
$result mysql_query($strQuery) or die( mysql_error() );
            
$aid mysql_insert_id();
            if(
$aid){
                
$filen $siteurl."/".str_replace('./'''$att_path)."/".$uniq."";
                
$filen str_replace('http://','%%',$filen);
                
$filen str_replace('//','/',$filen);
                
$filen str_replace('%%','http://',$filen);

                
                
//ITS AN IMAGE
                
if($x=="jpg" or $x=="jpeg" or $x=="gif" or $x=="png" or $x=="jif" or $x=="jfif")
                {
                    
$filenx=$filen;
                }
                else
                {
                    include(
"include/const.inc.php");
                    
$filenx $siteurl."/icons/".$Icons[$ext];
                }


                
$step 2;
            }else{
                
$step 1;
            }
        }
    }else{
        
$step 1;
    }
    if(
$step == 1){
    
?>


Kaimi 12.01.2009 22:01

Проверяй наличие используя скажем file_exists и добавляй к имени файла префикс или присваивай файлам имя самостоятельно, а в бд храни оригинальные названия

Vinsik 13.01.2009 11:23

Цитата:

Сообщение от Kaimi
Проверяй наличие используя скажем file_exists и добавляй к имени файла префикс или присваивай файлам имя самостоятельно, а в бд храни оригинальные названия

а хотяб пример кода можно?

groundhog 13.01.2009 11:59

Обрати внимание на хак в виде кода:

Код:

if (file_exists($att_path."/".$uniq.".".$ext)) $uniq = $uniq . '(copy)';
PHP код:

<?
    
include("include/common.php");
    
    if(
$loggedin){
        include(
"include/accmenu.php");
    }
    if( 
$_POST['submit'] && $_FILES['attached']['name'] ){
        
$ok_filetypes explode("|",$att_filetypes);
        if (!
$_FILES['attached']['error'] && $_FILES['attached']['size'] > $att_max_size*1024){
            
errform('<CENTER>Извините, слишком большой размер файла!</CENTER><BR><BR>'); // #err
            
$step 1;
        }
        
$filename = (!$_FILES['attached']['error'] ? substrbasename($_FILES['attached']['name']), -30 ) : '');
        
$x strtolowersubstr($_FILES['attached']['name'], -3));
        if(
$filename && !in_array($x$ok_filetypes) ){
            
errform('<CENTER>Не поддерживаемый тип файла!!!</CENTER><BR><BR>');
            
$step 1;
        }
        if(!
$posterr){
            if(!isset(
$_GET["ipaddress"]) || ($_GET["ipaddress"] == "")) {
                
$ipaddress $_SERVER['REMOTE_ADDR'];
                
$local 1;
            } else {
                
$ipaddress $_GET["ipaddress"];
                
$local 0;
            }
    

                  
$ru=array("а","б","в"," ","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");
                  
$tr=array("a","b","v","_","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja");
                  
$uniq strtolower(str_replace($ru,$tr,$_FILES['attached']['name']));
            if (
file_exists($att_path."/".$uniq.".".$ext)) $uniq $uniq '(copy)';
            
move_uploaded_file($_FILES['attached']['tmp_name'], $att_path."/".$uniq.".".$ext );
            
$strQuery  "INSERT INTO images25 SET ";
              
$strQuery .= "filename='($uniq)',"
            if(
$myuid){
                
$strQuery .= "user='{$myuid}',";
            }
            
$strQuery .= "status='1'";
            
$result mysql_query($strQuery) or die( mysql_error() );
            
$aid mysql_insert_id();
            if(
$aid){
                
$filen $siteurl."/".str_replace('./'''$att_path)."/".$uniq."";
                
$filen str_replace('http://','%%',$filen);
                
$filen str_replace('//','/',$filen);
                
$filen str_replace('%%','http://',$filen);

                
                
//ITS AN IMAGE
                
if($x=="jpg" or $x=="jpeg" or $x=="gif" or $x=="png" or $x=="jif" or $x=="jfif")
                {
                    
$filenx=$filen;
                }
                else
                {
                    include(
"include/const.inc.php");
                    
$filenx $siteurl."/icons/".$Icons[$ext];
                }


                
$step 2;
            }else{
                
$step 1;
            }
        }
    }else{
        
$step 1;
    }
    if(
$step == 1){
    
?>


Vinsik 13.01.2009 12:49

спасибо! держи заслуженый + только вот как сделать чтобы строка
PHP код:

if (file_exists($att_path."/".$uniq.".".$ext)) $uniq $uniq '(copy)'

Переименовывала не в j._timberlake_-_rock_your_body.mp3(copy) а в j._timberlake_-_rock_your_body(copy).mp3

Joker-jar 13.01.2009 13:22

А мое мнение что файлы нужно хранить изначально под уникальными именами, а уже при загрузке из базы тянуть его реальное имя

Kaimi 13.01.2009 13:22

Навскидку
$uniq = preg_replace('/\.mp3/', '(copy).mp3', $uniq);

Vinsik 13.01.2009 13:25

Цитата:

Сообщение от Joker-jar
А мое мнение что файлы нужно хранить изначально под уникальными именами, а уже при загрузке из базы тянуть его реальное имя

согласен, так в этом коде и было изначально. только при загрузке тоже было кривое имя) И мне не удобно смареть выкладывали этот файл на форум или нет. И удалять лишнее.

Vinsik 13.01.2009 13:30

Цитата:

Сообщение от Kaimi
Навскидку
$uniq = preg_replace('/\.mp3/', '(copy).mp3', $uniq);

так любому файлу приписка (copy) ставится

groundhog 13.01.2009 13:32

Извини, не видел что скрипт кривой и не формирует расширение файла. Хак в строчках:

Код:

$attach_name = substr($_FILES['attached']['name'], 0, strrpos($_FILES['attached']['name'], '.') - 1);
$uniq = strtolower(str_replace($ru,$tr,$attach_name));
$ext = substr($_FILES['attached']['name'], strrpos($_FILES['attached']['name'], '.') + 1);
if (file_exists($att_path."/".$uniq.".".$ext)) $uniq = $uniq . '(copy)';

PHP код:

<?
    
include("include/common.php");
    
    if(
$loggedin){
        include(
"include/accmenu.php");
    }
    if( 
$_POST['submit'] && $_FILES['attached']['name'] ){
        
$ok_filetypes explode("|",$att_filetypes);
        if (!
$_FILES['attached']['error'] && $_FILES['attached']['size'] > $att_max_size*1024){
            
errform('<CENTER>Извините, слишком большой размер файла!</CENTER><BR><BR>'); // #err
            
$step 1;
        }
        
$filename = (!$_FILES['attached']['error'] ? substrbasename($_FILES['attached']['name']), -30 ) : '');
        
$x strtolowersubstr($_FILES['attached']['name'], -3));
        if(
$filename && !in_array($x$ok_filetypes) ){
            
errform('<CENTER>Не поддерживаемый тип файла!!!</CENTER><BR><BR>');
            
$step 1;
        }
        if(!
$posterr){
            if(!isset(
$_GET["ipaddress"]) || ($_GET["ipaddress"] == "")) {
                
$ipaddress $_SERVER['REMOTE_ADDR'];
                
$local 1;
            } else {
                
$ipaddress $_GET["ipaddress"];
                
$local 0;
            }
    

                
$ru=array("а","б","в"," ","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");
                
$tr=array("a","b","v","_","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja");
                
$attach_name substr($_FILES['attached']['name'], 0strrpos($_FILES['attached']['name'], '.') - 1);
                
$uniq strtolower(str_replace($ru,$tr,$attach_name));
                
$ext substr($_FILES['attached']['name'], strrpos($_FILES['attached']['name'], '.') + 1);

            if (
file_exists($att_path."/".$uniq.".".$ext)) $uniq $uniq '(copy)';
            
move_uploaded_file($_FILES['attached']['tmp_name'], $att_path."/".$uniq.".".$ext );

            
$strQuery  "INSERT INTO images25 SET ";
              
$strQuery .= "filename='($uniq)',"
            if(
$myuid){
                
$strQuery .= "user='{$myuid}',";
            }
            
$strQuery .= "status='1'";
            
$result mysql_query($strQuery) or die( mysql_error() );
            
$aid mysql_insert_id();
            if(
$aid){
                
$filen $siteurl."/".str_replace('./'''$att_path)."/".$uniq."";
                
$filen str_replace('http://','%%',$filen);
                
$filen str_replace('//','/',$filen);
                
$filen str_replace('%%','http://',$filen);

                
                
//ITS AN IMAGE
                
if($x=="jpg" or $x=="jpeg" or $x=="gif" or $x=="png" or $x=="jif" or $x=="jfif")
                {
                    
$filenx=$filen;
                }
                else
                {
                    include(
"include/const.inc.php");
                    
$filenx $siteurl."/icons/".$Icons[$ext];
                }


                
$step 2;
            }else{
                
$step 1;
            }
        }
    }else{
        
$step 1;
    }
    if(
$step == 1){
    
?>


Vinsik 13.01.2009 13:50

теперь после загрузки файла я я.mp3 он переименовался в ja_(copy).mp3 хоть и должен был переименоватся в ja_ja(copy).mp3 . И шара выдала ошибку
"Файл удачно загружен!

Unable to open ./uploads/ja_(copy) "
а вообще вот нормальный вид шары) http://uploaded.to/?id=tizq10

Kaimi 13.01.2009 14:45

Цитата:

так любому файлу приписка (copy) ставится
Так ты перед реплейсом проверяй на уникальность

groundhog 13.01.2009 14:51

В жизни не видел такого кривого скрипта... Кто его писал? Попробуй так...

PHP код:

<?
    
include("include/common.php");
    
    if(
$loggedin){
        include(
"include/accmenu.php");
    }
    if( 
$_POST['submit'] && $_FILES['attached']['name'] ){
        
$ok_filetypes explode("|",$att_filetypes);
        if (!
$_FILES['attached']['error'] && $_FILES['attached']['size'] > $att_max_size*1024){
            
errform('<CENTER>Извините, слишком большой размер файла!</CENTER><BR><BR>'); // #err
            
$step 1;
        }
        
$filename = (!$_FILES['attached']['error'] ? substrbasename($_FILES['attached']['name']), -30 ) : '');
        
$x strtolowersubstr($_FILES['attached']['name'], -3));
        if(
$filename && !in_array($x$ok_filetypes) ){
            
errform('<CENTER>Не поддерживаемый тип файла!!!</CENTER><BR><BR>');
            
$step 1;
        }
        if(!
$posterr){
            if(!isset(
$_GET["ipaddress"]) || ($_GET["ipaddress"] == "")) {
                
$ipaddress $_SERVER['REMOTE_ADDR'];
                
$local 1;
            } else {
                
$ipaddress $_GET["ipaddress"];
                
$local 0;
            }
    

                
$ru=array("а","б","в"," ","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");
                
$tr=array("a","b","v","_","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja");
                
$attach_name substr($_FILES['attached']['name'], 0strrpos($_FILES['attached']['name'], '.') - 1);
                
$uniq strtolower(str_replace($ru,$tr,$attach_name));
                
$ext substr($_FILES['attached']['name'], strrpos($_FILES['attached']['name'], '.') + 1);

            if (
file_exists($att_path."/".$uniq.".".$ext)) $uniq $uniq '(copy)';
            
move_uploaded_file($_FILES['attached']['tmp_name'], $att_path."/".$uniq.".".$ext );

            
$strQuery  "INSERT INTO images25 SET ";
              
$strQuery .= "filename='($uniq.$ext)',"
            if(
$myuid){
                
$strQuery .= "user='{$myuid}',";
            }
            
$strQuery .= "status='1'";
            
$result mysql_query($strQuery) or die( mysql_error() );
            
$aid mysql_insert_id();
            if(
$aid){
                
$filen $siteurl."/".str_replace('./'''$att_path)."/".$uniq.".".$ext;
                
$filen str_replace('http://','%%',$filen);
                
$filen str_replace('//','/',$filen);
                
$filen str_replace('%%','http://',$filen);

                
                
//ITS AN IMAGE
                
if($x=="jpg" or $x=="jpeg" or $x=="gif" or $x=="png" or $x=="jif" or $x=="jfif")
                {
                    
$filenx=$filen;
                }
                else
                {
                    include(
"include/const.inc.php");
                    
$filenx $siteurl."/icons/".$Icons[$ext];
                }


                
$step 2;
            }else{
                
$step 1;
            }
        }
    }else{
        
$step 1;
    }
    if(
$step == 1){
    
?>


Vinsik 13.01.2009 15:03

Файл удачно загружен!

Unable to open ./uploads/7-mc_zhan__dj_riga-0

Частично я, и весь Ачат.... =)))) Опять ошибка =(

groundhog 13.01.2009 15:12

Слуш, дай доступы я тебе сделаю... Просто вслепую такой скрипт отлаживать трудно... Пиши в ПМ

Vinsik 13.01.2009 15:41

Цитата:

Сообщение от groundhog
Слуш, дай доступы я тебе сделаю... Просто вслепую такой скрипт отлаживать трудно... Пиши в ПМ

не получится.... все хранится на локальном сервере... во внеху выхода нет.

groundhog 13.01.2009 15:44

заверни тогда скрипты + БД с которой он работает

Vinsik 13.01.2009 18:37

Цитата:

Сообщение от groundhog
заверни тогда скрипты + БД с которой он работает

окей, ток там все криво) Я не чистил ниче) Попозже прям сюда выложу) Это серовно уже достояние обществености.

groundhog 13.01.2009 18:44

Ок, напиши только потом в ПМ, чтобы я знал :) А то за темой могу не уследить...

Vinsik 13.01.2009 19:05

сразу говорю) Скрипт частично урезал и переписывал я из целого файлообменного движка) Поэтому оч много ненужных *.php файлов, мне некада их убирать.
http://depositfiles.com/files/7zsdpmku4

groundhog 13.01.2009 22:01

Это исправленный index.php... Перетри им свой файл...

http://groundhog.ru/index.txt

Vinsik 14.01.2009 10:31

Цитата:

Сообщение от groundhog
Это исправленный index.php... Перетри им свой файл...

http://groundhog.ru/index.txt

Спасибо) Все работает.

Vinsik 14.01.2009 10:37

Я не знаю как щас но в той версии которуя выложил Я файлы на шаре криво переименовывались, оставались русские буквы 13._зabytyj_polk_feat._lx_(тomsk)_-_вse_na_pol.mp3 это исправленно?

Vinsik 14.01.2009 11:44

как сделать чтоб он нормально переименовывал а не вот так, 028_centr_-_гorod_дorog.mp3 вот код
PHP код:

         $ru=array("а","б","в"," ","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");
         
$tr=array("a","b","v","_","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja");

            
$attach_name substr($_FILES['attached']['name'], 0strrpos($_FILES['attached']['name'], '.'));
         
$uniq strtolower(str_replace($ru,$tr,$attach_name)); 


groundhog 14.01.2009 12:31

В той версии, что я выложил всё корректно переименовывается... Например 028_центр_-_город_дорог.mp3 переименовался в 028_centr_-_gorod_dorog.mp3. Разве нет?

Vinsik 14.01.2009 13:13

Цитата:

Сообщение от groundhog
В той версии, что я выложил всё корректно переименовывается... Например 028_центр_-_город_дорог.mp3 переименовался в 028_centr_-_gorod_dorog.mp3. Разве нет?

Да но почему то скрипт не всегда обрабатывает файл до конца, как видиш.

Vinsik 14.01.2009 13:29

ща почистил mysql мож в этом дело было...


Время: 18:18