вот возник опять вопрос, например файл 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'] ? substr( basename($_FILES['attached']['name']), -30 ) : ''); $x = strtolower( substr($_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){ ?>
Проверяй наличие используя скажем file_exists и добавляй к имени файла префикс или присваивай файлам имя самостоятельно, а в бд храни оригинальные названия
Обрати внимание на хак в виде кода: Code: 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'] ? substr( basename($_FILES['attached']['name']), -30 ) : ''); $x = strtolower( substr($_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){ ?>
спасибо! держи заслуженый + только вот как сделать чтобы строка 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
А мое мнение что файлы нужно хранить изначально под уникальными именами, а уже при загрузке из базы тянуть его реальное имя
согласен, так в этом коде и было изначально. только при загрузке тоже было кривое имя) И мне не удобно смареть выкладывали этот файл на форум или нет. И удалять лишнее.
Извини, не видел что скрипт кривой и не формирует расширение файла. Хак в строчках: Code: $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'] ? substr( basename($_FILES['attached']['name']), -30 ) : ''); $x = strtolower( substr($_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'], 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)'; 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){ ?>
теперь после загрузки файла я я.mp3 он переименовался в ja_(copy).mp3 хоть и должен был переименоватся в ja_ja(copy).mp3 . И шара выдала ошибку "Файл удачно загружен! Unable to open ./uploads/ja_(copy) " а вообще вот нормальный вид шары) http://uploaded.to/?id=tizq10
В жизни не видел такого кривого скрипта... Кто его писал? Попробуй так... 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'] ? substr( basename($_FILES['attached']['name']), -30 ) : ''); $x = strtolower( substr($_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'], 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)'; 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){ ?>
Файл удачно загружен! Unable to open ./uploads/7-mc_zhan__dj_riga-0 Частично я, и весь Ачат.... =)))) Опять ошибка =(
окей, ток там все криво) Я не чистил ниче) Попозже прям сюда выложу) Это серовно уже достояние обществености.
сразу говорю) Скрипт частично урезал и переписывал я из целого файлообменного движка) Поэтому оч много ненужных *.php файлов, мне некада их убирать. http://depositfiles.com/files/7zsdpmku4