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

Форум АНТИЧАТ (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){
    
?>



Время: 01:15