Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: + w nazwie pliku na uploadzie = Problem
Forum PHP.pl > Forum > PHP
Tabus
Witam mam problem z uploadem oto link do niego

http://www.upload-triosat.pl/

problem tkwi w tym że jeżeli ktoś wżuci plik z nazwą np: "D+ _OK_KEY.zip"
to w Panelu administratora nie mogę usunąc tego pliku ani zeedytować jego nazwy gdy chcę go usunąc wyskakuje mi nastepujący błąd:

Kod
Error: w bazie nie ma takiego pliku. (data/D _OK_KEY.zip)
[b]Warning[/b]:  Cannot modify header information - headers already sent by (output started at /home/uploadts/ftp/dots/index.php:111) in [b]/home/uploadts/ftp/dots/index.php[/b] on line [b]215



gdy wchodzę w edycję wyskakuje:

nazwa pliku: D _OK_KEY.zip

Kod
[/b][b]Warning[/b]:  file_get_contents(opisy/D _OK_KEY.zip.opis) [[url="http://uploadts.nazwa.pl/dots/function.file-get-contents"]function.file-get-contents[/url]]: failed to open stream: No such file or directory in [b]/home/uploadts/ftp/dots/index.php[/b] on line [b]324


po zmianie nazwy na :[/b]dsds.zip i zatwierdzeniu wyskakuje

Kod
[/b][b]Warning[/b]:  rename(data/D _OK_KEY.zip,data/dsds.zip) [[url="http://uploadts.nazwa.pl/dots/function.rename"]function.rename[/url]]: No such file or directory in [b]/home/uploadts/ftp/dots/index.php[/b] on line [b]336[/b]

[b]Warning[/b]:  Cannot modify header information - headers already sent by (output started at /home/uploadts/ftp/dots/index.php:336) in [b]/home/uploadts/ftp/dots/index.php[/b] on line [b]215


z góry dziękuje za odpowiedz i pozdrawiam
wizu
Może przy uploadzie pliku zmieniaj nazwę pliku na taką bez tego plusa.
Tabus
no oczywiscie ze ja nie wzucam plików z + ale wzucać mogą wszyscy ludzie pozdrawiam.
ebnott
zablokuj mozliwosc uploadowaniu plikow z "+" w nazwie...
Tabus
mógłbys podpowiedziać jak?? jestem w trakcie czytania kursu php.... z góry dziekuje
vtuner
Po prostu, przy uploadowaniu przez system nadawaj własne nazewnictwo plików np:

  1. <?php
  2. $nazwa_pliku = md5($nazwa_oryginalna_pliku . time()); // Na pewno się nie powtórzy
  3. ?>
Tabus
Po prostu, przy uploadowaniu przez system nadawaj własne nazewnictwo plików np:

Kod
1
2
3
<?php
$nazwa_pliku = md5($nazwa_oryginalna_pliku . time()); // Na pewno się nie powtórzy
?>


mógłbys napisać gdzie to wkleić i czy mam cos edytować z góry dzieki za odpowiedź
wizu
O to mi chodziło... myślałem, że to będzie bardziej oczywiste. Wklej swój fragment kodu, odpowiedzialny za odbieranie plików, to Ci poprawimy.
Tabus
nie jestem pewny czy to jest to.

Kod
//progressbar upload
if ($config['upload_progressbar']){
if (isset($_GET['sid'])) {
$sid = $_GET['sid'];
$tmp_dir = $config['upload_tmpdir'];
$sid = ereg_replace("[^a-zA-Z0-9]","",$sid);//clean sid
$file = $tmp_dir.'/'.$sid.'_qstring';
if(!file_exists($file)) {
$errormsg = $lang['upload_error_sid'];
} else {
$qstr = join("",file($file));
//parse_str($qstr);
parse_str($qstr, $_POST);

//cleaning shit
$exts = array("_flength","_postdata","_err","_signal","_qstring");
foreach($exts as $ext) {
if(file_exists("$tmp_dir/$sid$ext")) {
@unlink("$tmp_dir/$sid$ext");
}
}

//setting vars like without progressbar
$_FILES['file']['name']=basename($_POST['file']['name']['0']);
$_FILES['file']['size']=$_POST['file']['size']['0'];
$_FILES['file']['tmp_name']=$_POST['file']['tmp_name']['0'];
}
} else if (isset($_POST['errormsg'])) {
$errormsg = urldecode($_POST['errormsg']);
if ($errormsg =="The maximum upload size has been exceeded")
$errormsg = $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').';
}
}

//uploading
if (isset($_FILES['file'])) {
if ($config['protect_upload']) authorize();
uploadfile($_FILES['file'], $_SERVER["REMOTE_ADDR"]);
}

if (isset($zbanujxD)) {
authorize();
$uah = fopen('zabanowani.txt', 'a+');
fwrite($uah, $zbanujxD.' ');
fclose($uah);
kierowca();
}

function kierowca(){
header('Location:'.rooturl());
return;
}

function uploadfile($file, $ipek) {
global $config, $lang, $max_filesize, $errormsg,$dir;

if ($file['error']!=0) {
$errormsg = $lang['upload_error'][$file['error']];
return;
}

//determine filename
$filename=$file['name'];
if (isset($_POST['filename']) && $_POST['filename']!="") $filename=$_POST['filename'];
$filename=basename($filename);
$filename=explode(".",basename($filename));
$ext = $filename[count($filename)-1];
unset($filename[count($filename)-1]);
$filename=join('_',$filename).'.'.$ext;

if (!in_array(strtolower(extname($filename)), $config['allowed_ext'])) {
$errormsg = $lang['upload_badext'];
return;
}

$filesize=$file['size'];
if ($filesize > $max_filesize) {
@unlink($file['tmp_name']);
$errormsg = $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').';
return;
}

$filedest = $config['storage_path'].'/'.$filename;
if (file_exists($filedest) && !$config['allow_overwrite']) {
@unlink($file['tmp_name']);
$errormsg = "$filename ".$lang['upload_error_fileexist'];
return;
}

$plikx = fopen(("opisy/".$filename.".opis"), w);
fwrite($plikx, $_POST['podpis']);
fclose($plikx);
$pliky = fopen(("opisy/".$filename.".pobran"), w);
fwrite($pliky, "0");
fclose($pliky);
$plikz = fopen(("opisy/".$filename.".ip"), w);
fwrite($plikz, $ipek);
fclose($plikz);

$filesource=$file['tmp_name'];
if (!file_exists($filesource)) {
$errormsg = "$filesource do no exist!";
return;
} else if (!move_uploaded_file($filesource,$filedest)) {
if (!rename($filesource,$filedest)) {
$errormsg = $lang['upload_error_nocopy'];
return;
}
}

if ($errormsg=="") {
chmod ($filedest, 0755);
if ($config['log_upload']) logadm($lang['UPLOAD'].' '.$filedest);
$loc = rooturl();
if (sizeof($dir)>0) $loc .= join("/",$dir)."/";
Header("Location: ".$loc);
exit;
}
ebnott
Pomysł vtunera jest prawie dobry - pod warunkiem, że rozszerzenie pliku jest zawsze takie samo.
A tu całe rozwiązanie z założeniem, że uploudujesz tylko np .jpg:

Kod
//determine filename
$filename= md5($file['name'].time());
$filename .= ".jpg";
if (isset($_POST['filename']) && $_POST['filename']!="") { $filename= md5($_POST['filename'].time()); $filename .= ".jpg"; }
$filename=basename($filename);
$filename=explode(".",basename($filename));
$ext = $filename[count($filename)-1];
unset($filename[count($filename)-1]);
$filename=join('_',$filename).'.'.$ext;



ale łatwiej i znacznie lepiej zrobić to preg_matchem, tutaj opis funkcji: (sam nie korzystalem jeszcze, dlatego mogą być błędy)
http://pl.php.net/preg_match

to będzie coś takiego:

Kod
//determine filename
if(!(preg_match("/^[a-zA-Z0-9.\\-_]/", $file['name'], $filename))) { echo "plik ma nieprawidłową nazwę!"; die; }
if (isset($_POST['filename']) && $_POST['filename']!="") { if(!(preg_match("/^[a-zA-Z0-9.\\-_]/", $_POST['filename'], $filename))) { echo "plik ma nieprawidłową nazwę!"; die; } }
$filename=basename($filename);
$filename=explode(".",basename($filename));
$ext = $filename[count($filename)-1];
unset($filename[count($filename)-1]);
$filename=join('_',$filename).'.'.$ext;


tylko jezeli plik bedzie mial zła nazwe, to caly skrypt sie zatrzyma, nie mam teraz czasu napisac tego inaczej, ale mozesz to zrobic sam, bo to nic trudnego winksmiley.jpg
Tabus
na uploadzie wzucamy pliki .zip i .rar da sie dla tych 2 rozszezen cos zrobic??
ebnott
Kod
$rozszerzenie = substr($file['name'], -4,4);
$filename = md5($file['name'].time());
$filename .= $rozszerzenie;


i analoogicznie w drugim miejscu,

w takim wypadku rozszerzenie moze byc dowolne pod warunkiem, ze jest 3 literowe.
Tabus
zrobiłem tak jak napisałes działa ale po wzuceniu wyskakuje plik o nazwie


68901491c3a8f91fe20a52058128fe19.rar

badź

68901491c3a8f91fe20a52058128fe19.zip

wzucałem plik

+.zip
+.rar

+++RAR.rar
+++ZIP.zip

i cały czas wyskuje ta nazwa

68901491c3a8f91fe20a52058128fe19.rar/.zip dało by się zeby wyskakiwało zamiast + poprostu puste pole tak jakby spacja?
ebnott
68901491c3a8f91fe20a52058128fe19.zip
bo tak ma wyskakiwac, dzieki temu nazwy sie nie powtorza.

co by bylo gdyby ktos zaladowal dwa pliki o takiej samej nazwie?
jezeli taka nazwa Ci przeszkadza to mozna zrobic tak:
usuwamy z nazwy "+" i dodajemy zakodowana MD5 nazwe pliku i aktualny czas (zeby sie nie powtorzyl kod),
przyklad:

plik+12.zip
na
plik_12_68901491c3a8f91fe20a52058128fe19.zip

zamieniamy "+" na "_" w ten sposob:
$filename= str_replace("+", "_", $filename);
Tabus
zmieniłem ale po wzuceniu pliku +++ ZIP.zip wyskakuje normalnie plik i jest problem z usunieciem go moze cos zle wkleiłem podam ponizej kod php jakbyś mógł go zeedytować to byłbym wdzieczny haha.gif


  1. <?php
  2. //determine filename
  3.  $filename=$file['name'];
  4.  if (isset($_POST['filename']) && $_POST['filename']!="") $filename=$_POST['filename'];
  5.  $filename=basename($filename);
  6.  $filename=explode(".",basename($filename));
  7.  $ext = $filename[count($filename)-1];
  8.  unset($filename[count($filename)-1]);
  9.  $filename=join('_',$filename).'.'.$ext;
  10.  
  11.  if (!in_array(strtolower(extname($filename)), $config['allowed_ext'])) {
  12. $errormsg = $lang['upload_badext'];
  13. return;
  14.  }
  15.  
  16.  $filesize=$file['size'];
  17.  if ($filesize > $max_filesize) {
  18. @unlink($file['tmp_name']);
  19. $errormsg = $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').';
  20. return;
  21.  }
  22.  
  23.  $filedest = $config['storage_path'].'/'.$filename;
  24.  if (file_exists($filedest) && !$config['allow_overwrite']) {
  25. @unlink($file['tmp_name']);
  26. $errormsg = "$filename ".$lang['upload_error_fileexist'];
  27. return;
  28.  }
  29.  
  30.  $plikx = fopen(("opisy/".$filename.".opis"), w);
  31.  fwrite($plikx, $_POST['podpis']);
  32.  fclose($plikx);
  33.  $pliky = fopen(("opisy/".$filename.".pobran"), w);
  34.  fwrite($pliky, "0");
  35.  fclose($pliky); 
  36.  $plikz = fopen(("opisy/".$filename.".ip"), w);
  37.  fwrite($plikz, $ipek);
  38.  fclose($plikz);
  39.  
  40.  $filesource=$file['tmp_name'];
  41.  if (!file_exists($filesource)) {
  42. $errormsg = "$filesource do no exist!";
  43. return;
  44.  } else if (!move_uploaded_file($filesource,$filedest)) {
  45. if (!rename($filesource,$filedest)) {
  46.  $errormsg = $lang['upload_error_nocopy'];
  47.  return;
  48. }
  49.  }
  50.  
  51.  if ($errormsg=="") {
  52. chmod ($filedest, 0755);
  53. if ($config['log_upload']) logadm($lang['UPLOAD'].' '.$filedest);
  54. $loc = rooturl();
  55. if (sizeof($dir)>0) $loc .= join("/",$dir)."/";
  56. Header("Location: ".$loc);
  57.  }
  58. ?>
ebnott
w kodzie, ktory wkleiles nie ma ani jednej zmiany, nawet na niego nie spojrzales?
Tabus
wkleiłem z normalnego bo musialem cos zle robic;/


skrypt który zeedytowałem tak:

  1. <?php
  2. //determine filename
  3.  
  4. $rozszerzenie = substr($file['name'], -4,4);$filename = md5($file['name'].time());$filename .= $rozszerzenie;
  5. $filename=basename($filename);
  6. $filename=explode(".",basename($filename));
  7. $ext = $filename[count($filename)-1];
  8. unset($filename[count($filename)-1]);
  9. $filename=join('_',$filename).'.'.$ext;
  10.  
  11. if (!in_array(strtolower(extname($filename)), $config['allowed_ext'])) {
  12. $errormsg = $lang['upload_badext'];
  13. return;
  14. }
  15.  
  16. $filesize=$file['size'];
  17. if ($filesize > $max_filesize) {
  18. @unlink($file['tmp_name']);
  19. $errormsg = $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').';
  20. return;
  21. }
  22.  
  23. $filedest = $config['storage_path'].'/'.$filename;
  24. if (file_exists($filedest) && !$config['allow_overwrite']) {
  25. @unlink($file['tmp_name']);
  26. $errormsg = "$filename ".$lang['upload_error_fileexist'];
  27. return;
  28. }
  29.  
  30. $plikx = fopen(("opisy/".$filename.".opis"), w);
  31. fwrite($plikx, $_POST['podpis']);
  32. fclose($plikx);
  33. $pliky = fopen(("opisy/".$filename.".pobran"), w);
  34. fwrite($pliky, "0");
  35. fclose($pliky);
  36. $plikz = fopen(("opisy/".$filename.".ip"), w);
  37. fwrite($plikz, $ipek);
  38. fclose($plikz);
  39.  
  40. $filesource=$file['tmp_name'];
  41. if (!file_exists($filesource)) {
  42. $errormsg = "$filesource do no exist!";
  43. return;
  44. } else if (!move_uploaded_file($filesource,$filedest)) {
  45. if (!rename($filesource,$filedest)) {
  46. $errormsg = $lang['upload_error_nocopy'];
  47. return;
  48. }
  49. }
  50.  
  51. if ($errormsg=="") {
  52. chmod ($filedest, 0755);
  53. if ($config['log_upload']) logadm($lang['UPLOAD'].' '.$filedest);
  54. $loc = rooturl();
  55. if (sizeof($dir)>0) $loc .= join("/",$dir)."/";
  56. Header("Location: ".$loc);
  57. ?>
vtuner
Cytat(ebnott @ 24.03.2008, 19:51:32 ) *
Pomysł vtunera jest prawie dobry - pod warunkiem, że rozszerzenie pliku jest zawsze takie samo.


Niekonieczenie smile.gif Pobierasz rozszerzenie wgrywanego np do zmiennej $ext, a następnie tworzysz nazwę np. md5($stara_nazwa.time()).'.'.$ext

I plik ma takie samo rozszerzenie co oryginalne.
ebnott
tego nie usuwasz:
if (isset($_POST['filename']) && $_POST['filename']!="") $filename=$_POST['filename'];

tylko zamieniesz na:
Kod
if (isset($_POST['filename']) && $_POST['filename']!="") {
$rozszerzenie = substr($_POST['filename'], -4,4);
$filename = md5($_POST['filename'].time());
$filename .= $rozszerzenie;
}



a jak chcesz, zeby poczatek nazwy byl nazwa pliku, to tak:
całość kodu którą wklejasz za:
//determine filename
a przed:
$filename=basename($filename);

Kod
$nazwa = $file['name'];
$nazwa= str_replace("+", "_", $nazwa);
$rozszerzenie = substr($file['name'], -4,4);
$nazwa2 = md5($file['name'].time());
$filename = $nazwa."_".$nazwa2.$rozszerzenie;

if (isset($_POST['filename']) && $_POST['filename']!="") {
$nazwa = $_POST['filename'];
$nazwa= str_replace("+", "_", $nazwa);
$rozszerzenie = substr($_POST['filename'], -4,4);
$nazwa2 = md5($_POST['filename'].time());
$filename = $nazwa."_".$nazwa2.$rozszerzenie;
}


chyba wszystko o co Ci chodziło

Cytat(vtuner @ 24.03.2008, 21:43:44 ) *
Niekonieczenie smile.gif Pobierasz rozszerzenie wgrywanego np do zmiennej $ext, a następnie tworzysz nazwę np. md5($stara_nazwa.time()).'.'.$ext

I plik ma takie samo rozszerzenie co oryginalne.


napisałem już o tym:

Kod
$rozszerzenie = substr($file['name'], -4,4);
$filename = md5($file['name'].time());
$filename .= $rozszerzenie;
Tabus
zmienilem tak jak napisałes lecz teraz nie działa w ogóle upload podaje poniżej kod moze cos spieprzyłem znowu ?snitch.gif

  1. <?php
  2. //determine filename $filename=$file['name']; if (isset($_POST['filename']) && $_POST['filename']!="") 
  3.  
  4. $filename=$_POST['filename'];$nazwa = $file['name'];$nazwa= str_replace("+", "_", $nazwa);$rozszerzenie = 
  5.  
  6. substr($file['name'], -4,4);$nazwa2 = md5($file['name'].time());$filename = $nazwa."_".$nazwa2.$rozszerzenie;if 
  7.  
  8. (isset($_POST['filename']) && $_POST['filename']!="") {$nazwa = $_POST['filename'];$nazwa= str_replace("+", "_", 
  9.  
  10. $nazwa);$rozszerzenie = substr($_POST['filename'], -4,4);$nazwa2 = md5($_POST['filename'].time());$filename = 
  11.  
  12. $nazwa."_".$nazwa2.$rozszerzenie;} $filename=basename($filename); $filename=explode(".",basename($filename)); $ext = 
  13.  
  14. $filename[count($filename)-1]; unset($filename[count($filename)-1]); $filename=join('_',$filename).'.'.$ext; if 
  15.  
  16. (!in_array(strtolower(extname($filename)), $config['allowed_ext'])) { $errormsg = $lang['upload_badext']; return; } 
  17.  
  18. $filesize=$file['size']; if ($filesize > $max_filesize) { @unlink($file['tmp_name']); $errormsg = 
  19.  
  20. $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').'; return; } $filedest = 
  21.  
  22. $config['storage_path'].'/'.$filename; if (file_exists($filedest) && !$config['allow_overwrite']) {
  23.  
  24. @unlink($file['tmp_name']); $errormsg = "$filename ".$lang['upload_error_fileexist']; return; } $plikx = 
  25.  
  26. fopen(("opisy/".$filename.".opis"), w); fwrite($plikx, $_POST['podpis']); fclose($plikx); $pliky = 
  27.  
  28. fopen(("opisy/".$filename.".pobran"), w); fwrite($pliky, "0"); fclose($pliky); $plikz = fopen(("opisy/".$filename.".ip"), 
  29.  
  30. w); fwrite($plikz, $ipek); fclose($plikz); $filesource=$file['tmp_name']; if (!file_exists($filesource)) { $errormsg = 
  31.  
  32. "$filesource do no exist!"; return; } else if (!move_uploaded_file($filesource,$filedest)) { if 
  33.  
  34. (!rename($filesource,$filedest)) {  $errormsg = $lang['upload_error_nocopy'];  return; } } if ($errormsg=="") { chmod 
  35.  
  36. ($filedest, 0755); if ($config['log_upload']) logadm($lang['UPLOAD'].' '.$filedest); $loc = rooturl(); if (sizeof($dir)>0) 
  37.  
  38. $loc .= join("/",$dir)."/"; Header("Location: ".$loc); exit; }
  39. ?>
ebnott
Juz miales wszystko podane na tacy.

całość kodu którą wklejasz za:
//determine filename
a przed:
$filename=basename($filename);


Kod
$nazwa = $file['name'];
$nazwa= str_replace("+", "_", $nazwa);
$rozszerzenie = substr($file['name'], -4,4);
$nazwa2 = md5($file['name'].time());
$filename = $nazwa."_".$nazwa2.$rozszerzenie;

if (isset($_POST['filename']) && $_POST['filename']!="") {
$nazwa = $_POST['filename'];
$nazwa= str_replace("+", "_", $nazwa);
$rozszerzenie = substr($_POST['filename'], -4,4);
$nazwa2 = md5($_POST['filename'].time());
$filename = $nazwa."_".$nazwa2.$rozszerzenie;
}


i nie mozesz wklejac kodu do tej samej linii co:
//determine filename
bo to komentarz liniowy i cala linia nie jest brana pod uwage!
Wklejaj do nastepnego wiersza.


i sorry, ale nie wklejaja takiego kodu jak ten post wczesniej, bo nie mozna sie nic odczytac, taki balgan;)
Tabus
zrobiłem jak napisałes ale teraz przy kazdej nazwie pliku znowy wyskakuje ten dziwny kod ;/
podaje link żeby było widać jak to wygląda

http://upload-triosat.pl/

podaje kod

  1. <?php
  2. //progressbar upload
  3. if ($config['upload_progressbar']){
  4. if (isset($_GET['sid'])) {
  5. $sid = $_GET['sid'];
  6. $tmp_dir = $config['upload_tmpdir'];
  7. $sid = ereg_replace("[^a-zA-Z0-9]","",$sid);//clean sid
  8. $file = $tmp_dir.'/'.$sid.'_qstring';
  9. if(!file_exists($file)) {
  10. $errormsg = $lang['upload_error_sid'];
  11. } else {
  12. $qstr = join("",file($file));
  13. //parse_str($qstr);
  14. parse_str($qstr, $_POST);
  15.  
  16. //cleaning shit
  17. $exts = array("_flength","_postdata","_err","_signal","_qstring");
  18. foreach($exts as $ext) {
  19. if(file_exists("$tmp_dir/$sid$ext")) {
  20. @unlink("$tmp_dir/$sid$ext");
  21. }
  22. }
  23.  
  24. //setting vars like without progressbar
  25. $_FILES['file']['name']=basename($_POST['file']['name']['0']);
  26. $_FILES['file']['size']=$_POST['file']['size']['0'];
  27. $_FILES['file']['tmp_name']=$_POST['file']['tmp_name']['0'];
  28. }
  29. } else if (isset($_POST['errormsg'])) {
  30. $errormsg = urldecode($_POST['errormsg']);
  31. if ($errormsg =="The maximum upload size has been exceeded")
  32. $errormsg = $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').';
  33. }
  34. }
  35.  
  36. //uploading
  37. if (isset($_FILES['file'])) {
  38. if ($config['protect_upload']) authorize();
  39. uploadfile($_FILES['file'], $_SERVER["REMOTE_ADDR"]);
  40. }
  41.  
  42. if (isset($zbanujxD)) {
  43. authorize();
  44. $uah = fopen('zabanowani.txt', 'a+');
  45. fwrite($uah, $zbanujxD.' ');
  46. fclose($uah);
  47. kierowca();
  48. }
  49.  
  50. function kierowca(){
  51. header('Location:'.rooturl());
  52. return;
  53. }
  54.  
  55. function uploadfile($file, $ipek) {
  56. global $config, $lang, $max_filesize, $errormsg,$dir;
  57.  
  58. if ($file['error']!=0) {
  59. $errormsg = $lang['upload_error'][$file['error']];
  60. return;
  61. }
  62.  
  63. //determine filename
  64. $filename=$file['name'];
  65. if (isset($_POST['filename']) && $_POST['filename']!="") $filename=$_POST['filename'];
  66. $nazwa = $file['name'];
  67. $nazwa= str_replace("+", "_", $nazwa);
  68. $rozszerzenie = substr($file['name'], -4,4);
  69. $nazwa2 = md5($file['name'].time());$filename = $nazwa."_".$nazwa2.$rozszerzenie;
  70. if (isset($_POST['filename']) &&  $_POST['filename']!="") {$nazwa = $_POST['filename'];
  71. $nazwa= str_replace("+", "_", $nazwa);
  72. $rozszerzenie = substr($_POST['filename'], -4,4);
  73. $nazwa2 = md5($_POST['filename'].time());
  74. $filename = $nazwa."_".$nazwa2.$rozszerzenie;}
  75. $filename=basename($filename);
  76. $filename=explode(".",basename($filename));
  77. $ext = $filename[count($filename)-1];
  78. unset($filename[count($filename)-1]);
  79. $filename=join('_',$filename).'.'.$ext;
  80.  
  81. if (!in_array(strtolower(extname($filename)), $config['allowed_ext'])) {
  82. $errormsg = $lang['upload_badext'];
  83. return;
  84. }
  85.  
  86. $filesize=$file['size'];
  87. if ($filesize > $max_filesize) {
  88. @unlink($file['tmp_name']);
  89. $errormsg = $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').';
  90. return;
  91. }
  92.  
  93. $filedest = $config['storage_path'].'/'.$filename;
  94. if (file_exists($filedest) && !$config['allow_overwrite']) {
  95. @unlink($file['tmp_name']);
  96. $errormsg = "$filename ".$lang['upload_error_fileexist'];
  97. return;
  98. }
  99.  
  100. $plikx = fopen(("opisy/".$filename.".opis"), w);
  101. fwrite($plikx, $_POST['podpis']);
  102. fclose($plikx);
  103. $pliky = fopen(("opisy/".$filename.".pobran"), w);
  104. fwrite($pliky, "0");
  105. fclose($pliky);
  106. $plikz = fopen(("opisy/".$filename.".ip"), w);
  107. fwrite($plikz, $ipek);
  108. fclose($plikz);
  109.  
  110. $filesource=$file['tmp_name'];
  111. if (!file_exists($filesource)) {
  112. $errormsg = "$filesource do no exist!";
  113. return;
  114. } else if (!move_uploaded_file($filesource,$filedest)) {
  115. if (!rename($filesource,$filedest)) {
  116. $errormsg = $lang['upload_error_nocopy'];
  117. return;
  118. }
  119. }
  120.  
  121. if ($errormsg=="") {
  122. chmod ($filedest, 0755);
  123. if ($config['log_upload']) logadm($lang['UPLOAD'].' '.$filedest);
  124. $loc = rooturl();
  125. if (sizeof($dir)>0) $loc .= join("/",$dir)."/";
  126. Header("Location: ".$loc);
  127. }
  128. }
  129.  
  130. //make dir
  131. if (isset ($_POST['dir'])) {
  132. if ($config['protect_makedir']) authorize();
  133. if ($dirlevel < $config['enable_folder_maxdepth']) {
  134. $newdir = preg_replace("/[^0-9a-zA-Z()s]/i",'', $_POST['dir']);
  135. if ($newdir <> "") {
  136. $newdir = $config['storage_path']."/".$newdir;
  137. if (file_exists($newdir))
  138. $errormsg = $lang['make_error_exist'];
  139. else {
  140. if (mkdir($newdir)) {
  141. $loc = rooturl();
  142. if (sizeof($dir)>0) $loc .= join("/",$dir)."/";
  143. Header("Location: ".$loc);
  144. } else
  145. $errormsg = $lang['make_error_cant'];
  146. }
  147. }
  148. } else {
  149. $errormsg = $lang['make_error_maxdepth'];
  150. }
  151. }
  152.  
  153. $szukaj1;
  154.  
  155. if (isset ($_POST['szukaj2'])) {
  156. $szukaj1 = $_POST['szukaj2'];
  157. }
  158.  
  159. if(isset($edit1)){
  160. authorize();
  161. echo '<form method="post" action="index.php">
  162. <input id=" " type="submit" value="Powrot" />
  163. </form>';
  164. echo '<form method="post" action="index.php?edit21='.$edit1.'"><br>';
  165. echo 'Nazwa : ';
  166. echo '<input type="text" id="enazwa" name="enazwa" value="'.$edit1.'" size="50" /><br>Opis : ';
  167. $podpis = file_get_contents("opisy/".$edit1.".opis");
  168. echo '&nbsp &nbsp<input type="text" id="eopis" name="eopis" value="'.$podpis.'" size="50" />';
  169. echo '<input id="edycja" type="submit" value="Zatwierdz" />';
  170. }
  171. ?>


coś jeszcze źle zrobiłem?

jak myslisz co zrobic??
ebnott
Cytat(ebnott @ 24.03.2008, 20:57:01 ) *
68901491c3a8f91fe20a52058128fe19.zip
bo tak ma wyskakiwac, dzieki temu nazwy sie nie powtorza.

co by bylo gdyby ktos zaladowal dwa pliki o takiej samej nazwie?
jezeli taka nazwa Ci przeszkadza to mozna zrobic tak:
usuwamy z nazwy "+" i dodajemy zakodowana MD5 nazwe pliku i aktualny czas (zeby sie nie powtorzyl kod),
przyklad:

plik+12.zip
na
plik_12_68901491c3a8f91fe20a52058128fe19.zip

zamieniamy "+" na "_" w ten sposob:
$filename= str_replace("+", "_", $filename);



To jest zalosne zebym cytowal samego siebie, ale moze wtedy przeczytasz. Ja poswiecam swoj czas, zeby Ci pomoc, a Ty mnie olewasz.

Jezleli tak Ci to prrzeszkadza, to zrob tak:
przy uploadowaniu sprawdzaj czy istnieje plik o podanej nazwie, jesli tak to dodaj do nazwy nowego pliku np. aktualna date i godz (ZEBY SIE NIE POWTORZYLY NAZWY, cos takiego musi byc). Ja juz tego pisac nie bede. Powodzenia
wlamywacz
Nie czytalem calego tematu ale ostatni post i tytul wystarcza. Zamiastap nazwe takim kodem i nie bedzie juz zadnego plus.
  1. <?php
  2. $today = date("F j, Y, g:i a");
  3. $nowa_nazwa = md5($today);
  4. ?>


Tyle Ci powinno wystarczyc

P.S. Nie mam pl znakow sad.gif
ebnott
Cytat(wlamywacz @ 26.03.2008, 14:57:27 ) *
Nie czytalem calego tematu ale ostatni post i tytul wystarcza. Zamiastap nazwe takim kodem i nie bedzie juz zadnego plus.
  1. <?php
  2. $today = date(&#092;"F j, Y, g:i a\");
  3. $nowa_nazwa = md5($today);
  4. ?>


Tyle Ci powinno wystarczyc

P.S. Nie mam pl znakow sad.gif


a powinienes, bo nic nowego nie wnosisz.

____________________________________________________________________

(zmiana kodu na zyczenie autora tematu)

  1. <?php
  2. $sciezka = "/miejsce/gdzie/zapisujesz/pliki/";
  3.  
  4. $ii = 1;
  5. $nazwa = $file['name'];
  6. $nazwa = str_replace("+", "_", $nazwa);
  7. $nazwa2 = substr($nazwa, 0, -4);
  8. $rozszerzenie = substr($nazwa, -4,4);
  9. $filename = $nazwa;
  10. $plik = $sciezka.$nazwa;
  11. while(file_exists($plik)) {
  12. $filename = $nazwa2."_".$ii.$rozszerzenie;
  13. $plik = $sciezka.$filename;
  14. $ii++;
  15. }
  16. $ii = 1;
  17. if (isset($_POST['filename']) && $_POST['filename']!="") {
  18. $nazwa = $_POST['filename'];
  19. $nazwa = str_replace("+", "_", $nazwa);
  20. $nazwa2 = substr($nazwa, 0, -4);
  21. $rozszerzenie = substr($nazwa, -4,4);
  22. $filename = $nazwa;
  23. $plik = $sciezka.$nazwa;
  24.  while(file_exists($plik)) {
  25.  $filename = $nazwa2."_".$ii.$rozszerzenie;
  26.  $plik = $sciezka.$filename;
  27.  $ii++;
  28.  }
  29. }
  30. ?>


w miejsce:
$sciezka = "/miejsce/gdzie/zapisujesz/pliki/";
wpisujesz folder w którym trzymasz pliki wzgledem tego ze skryptem, np. jesli jest to folder o nazwie "pliki", wpisujesz "/pliki/"

skrypt sprawdza czy istnieje plik o podanej nazwie, jesli tak dodaje do niej "_1", jesli plik dalej istnieje liczba ta zwieksza sie...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.