Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] nadpisywanie załączników z pierwszego pola input[type=file]
Forum PHP.pl > Forum > Przedszkole
followc
Stworzyłem kod, który czasem wysyła poprawnie załączone pliki a czasem nie... wygląda to tak, że są dwa pol input [type=file] ktore dostarczają plików do załączników. Jeżeli w obu polach wybierzemy te samą liczbę plików to nie ma problemu - wysyłają się poprawnie. Jeżeli jednak liczby załączników są różne, to pliki z drugiego nadpisują te z pierwszego mimo iż nazwy wszystkich plików się zgadzają. Czy ktoś wie gdzie popełniłem błąd? bo na pewno nie ja...

  1.  
  2. $o1 = $_POST['pliki'];
  3. $o12 = $_POST['pliki2'];
  4.  
  5. $o2 = $_POST['o2'];
  6. $o22 = $_POST['o22'];
  7.  
  8.  
  9. $tab1 = explode(',', $o1);
  10. $tab12 = explode(',', $o12);
  11.  
  12. $tab2 = explode(',', $o2);
  13. $tab22 = explode(',', $o22);
  14.  
  15. if(isset($o2) && (bool) $o2) {
  16.  
  17.  
  18. $format_wydruku1=$_POST['format_wydruku1'];
  19. $format_wydruku2=$_POST['format_wydruku2'];
  20.  
  21.  
  22.  
  23.  
  24. $to = "mail@mail.com";
  25.  
  26. $from = "mail@mail2.com";
  27. $subject ='W '.$imie.' '.$nazwisko;
  28. $message = "\n\n";
  29.  
  30.  
  31.  
  32.  
  33. $tab111=array_merge($tab1, $tab12);
  34. $tab222=array_merge($tab2, $tab22);
  35.  
  36. for($i = 0; $i<count($tab111); $i++) {
  37. $plik2 = "../upload/";
  38. $plik2 .= $tab222[$i];
  39.  
  40.  
  41. $name2 = $tab111[$i];
  42. if($i<count($tab1)){
  43. $message .= $name2." ilosc kopii: ".$ile1." format wydruku:".$format_wydruku1."\n";
  44. }else if($i>=count($tab1)){
  45. $message .= $name2." ilosc kopii: ".$ile2." format wydruku:".$format_wydruku1."\n";
  46. }
  47. }
  48.  
  49.  
  50.  
  51. /////////////////////////////////////////////////////////////////////////
  52. $headers = "From: $from";
  53. $semi_rand = md5(time());
  54. $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
  55.  
  56. //$headers .="Content-type: text/html; charset=utf-8";
  57. $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
  58.  
  59.  
  60. $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
  61. $message .= "--{$mime_boundary}\n";
  62. $FfilenameCount = 0;
  63.  
  64.  
  65. for($i = 0; $i<count($tab111); $i++) {
  66. if($i<count($tab1)){
  67. $plik = "../upload/";
  68. $plik .= $tab2[$i];
  69.  
  70. $afile = @fopen($plik,"rb");
  71. if(empty($afile)){
  72. continue;
  73. }
  74.  
  75.  
  76. $data[i] = @fread($afile,filesize($plik));
  77. @fclose($afile);
  78.  
  79. $data[i] = chunk_split(base64_encode($data[i]));
  80. $name = $tab111[$i];
  81.  
  82. $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$name\"\n" .
  83. "Content-Disposition: attachment;\n" . " filename=\"$name\"\n" .
  84. "Content-Transfer-Encoding: base64\n\n" . $data[i] . "\n\n";
  85. $message .= "--{$mime_boundary}\n";
  86. }else if($i>=count($tab1)){
  87. $plik = "../upload/";
  88. $plik .= $tab222[$i];
  89.  
  90. $afile = @fopen($plik,"rb");
  91. if(empty($afile)){
  92. continue;
  93. }
  94.  
  95.  
  96. $data[i] = @fread($afile,filesize($plik));
  97. @fclose($afile);
  98.  
  99. $data[i] = chunk_split(base64_encode($data[i]));
  100. $name = $tab111[$i];
  101.  
  102. $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$name\"\n" .
  103. "Content-Disposition: attachment;\n" . " filename=\"$name\"\n" .
  104. "Content-Transfer-Encoding: base64\n\n" . $data[i] . "\n\n";
  105. $message .= "--{$mime_boundary}\n";
  106. }
  107. }
  108.  
  109. if(mail($to, $subject, $message, $headers)) {
  110. echo '<p>Sent</p>';
  111.  
  112. } else {
  113. echo "<p>error, try again!</p>";
  114. }
  115. }else{
  116.  
Daimos
o22, tab22, tab222 - tak nazywając zmienne, nie dziw się, że masz problemy z ogarnięciem, gdzie są błędy. Podrzuć jeszcze kod formularza
followc
te nazwy wynikły z kombinowania z kodem... i lekkiego już zamieszania.

  1.  
  2. <form class="upload-form" action="" method="post" enctype="multipart/form-data">
  3. <label for="pliki"></label>
  4. <input class="upload-file" data-max-size="100048576" type="file" value="Wybierz pliki" name="pliki[]" multiple="multiple" required><span class="upload-file-ile1">Ilość kopii: </span><input type="number" class="upload-file-ile1" name="ile1" min="1" value="1"><span class="upload-file-ile1"> Format: </span><select class="upload-file-ile11" style="width: 50px;" name="format_pliku1"><option value="a4">A4</option><option value="a3">A3</option><option value="wiekszy-a3">Większy niż A3 (wpisz w uwagach jaki)</option></select><br>
  5. ';
  6.  
  7. echo '
  8. <input class="upload-file2" data-max-size="100048576" type="file" value="Wybierz pliki" name="pliki2[]" multiple="multiple"><span class="upload-file-ile2">Ilość kopii: </span><input type="number" class="upload-file-ile2" name="ile2" min="1" ><span class="upload-file-ile2"> Format: </span><select class="upload-file-ile21" style="width: 50px;" name="format_pliku2"><option value="a4">A4</option><option value="a3">A3</option><option value="wiekszy-a3">Większy niż A3 (wpisz w uwagach jaki)</option></select><br>
  9.  
  10. <input type="submit" name="wyslano" class="sprawdz-button" value="Sprawdź pliki...">
  11.  
  12. </form>
  13.  





a następnie... pobierane są dodatkowe informacje w formularzu, oraz razem z plikami "przesyłane" do kodu z pierwszego postu


  1. if(isset($_POST['wyslano'])){
  2. $max_files = 25; // maksymalna ilość plików
  3. $max_file_size = 100048576; // maksymalny rozmiar 1 pliku w bajtach
  4. $allowed = array('doc','DOC','docx','DOCX','jpg','JPG','png','PNG','gif','GIF','tif','TIF','rtf','RTF','zip','ZIP','rar','RAR','txt','TXT','pdf','PDF','odt','ODT','ppt','PPT'); // dozwolone rozszerzenia plików
  5. $folder = "../upload/"; // folder, do którego mają być zapisywane pliki
  6. $images_id = rand(0,99999); // identyfikator wrzucanej grupy plików
  7.  
  8. $ile1=$_POST['ile1'];
  9. $ile2=$_POST['ile2'];
  10.  
  11. $format_pliku1=$_POST['format_pliku1'];
  12. $format_pliku2=$_POST['format_pliku2'];
  13.  
  14. try{
  15. // SPRAWDZAMY, CZY ZOSTAŁ WYBRANY JAKIKOLWIEK PLIK
  16. if(!is_uploaded_file($_FILES['pliki']['tmp_name'][0])){
  17. throw new Exception("Musisz wybrać plik.");
  18. }
  19.  
  20. // SPRAWDZAMY, ILE PLIKÓW ZOSTAŁO WYBRANYCH
  21. if(count($_FILES['pliki']['tmp_name'])>$max_files){
  22. throw new Exception("Możesz wrzucić maksymalnie ".$max_files." plików.");
  23. }
  24. $o1 = implode(", ",$_FILES['pliki']['name']);
  25. $o12 = implode(", ",$_FILES['pliki2']['name']);
  26.  
  27.  
  28. // TWORZYMY PĘTLĘ, KTÓRA POZWOLI NAM "DOTRZEĆ" DO KAŻDEGO PLIKU PO KOLEI
  29. for($i=0;$i<count($_FILES['pliki']['tmp_name']);$i++){
  30.  
  31. // SPRAWDZAMY, CZY NAZWA PLIKU ZAWIERA KROPKĘ, CO POZWOLI NAM POBRAĆ ROZSZERZENIE
  32. if(preg_match("/\./", $_FILES['pliki']['name'][$i])){
  33. $explode = explode(".", $_FILES['pliki']['name'][$i]);
  34. $ext = end($explode);
  35. // SPRAWDZAMY CZY ROZSZERZENIE WYSŁANEGO PLIKU ZNAJDUJE SIĘ W TABLICY DOZWOLONYCH ROZSZERZEŃ
  36. if(!in_array($ext,$allowed)){
  37. throw new Exception("Plik <i>".$_FILES['pliki']['name'][$i]."</i> posiada niedozwolone rozszerzenie. Dozwolone są: ".implode(", ",$allowed)." <br><a href=\"../wyslij\"><button style=\"margin-bottom: 400px; margin-top: 4%;\">Spróbuj ponownie</button></a>");
  38. }
  39. }
  40.  
  41. // SPRAWDZAMY, CZY ROZMIAR PLIKU JEST ODPOWIEDNI
  42. if($_FILES['pliki']['size'][$i]>$max_file_size){
  43. throw new Exception("Plik <i>".$_FILES['pliki']['name'][$i]."</i> posiada zbyt duży rozmiar. Dopuszczalny maksymalny rozmiar pliku to ".($max_file_size/1048576)."MB");
  44. }
  45.  
  46. // NADJEMY PLIKOWI NAZWĘ WG. WZORU: CZASWYSŁANIA_IDGRUPY_NRZDJĘCIA
  47. $file_name = (isset($ext)) ? time()."_".$images_id."_".$i.".".$ext : time()."_".$images_id."_".$i;
  48.  
  49. $o2 .= $file_name;
  50. $o2 .= ',';
  51. // ZAPISUJEMY PLIK
  52. move_uploaded_file($_FILES['pliki']['tmp_name'][$i], $folder.$file_name);
  53. }
  54.  
  55.  
  56. for($i=0;$i<count($_FILES['pliki2']['tmp_name']);$i++){
  57.  
  58.  
  59.  
  60. // SPRAWDZAMY, CZY NAZWA PLIKU ZAWIERA KROPKĘ, CO POZWOLI NAM POBRAĆ ROZSZERZENIE
  61. if(preg_match("/\./", $_FILES['pliki2']['name'][$i])){
  62. $explode = explode(".", $_FILES['pliki2']['name'][$i]);
  63. $ext = end($explode);
  64. // SPRAWDZAMY CZY ROZSZERZENIE WYSŁANEGO PLIKU ZNAJDUJE SIĘ W TABLICY DOZWOLONYCH ROZSZERZEŃ
  65. if(!in_array($ext,$allowed)){
  66. throw new Exception("Plik <i>".$_FILES['pliki2']['name'][$i]."</i> posiada niedozwolone rozszerzenie. Dozwolone są: ".implode(", ",$allowed)." <br><a href=\"../wyslij\"><button style=\"margin-bottom: 400px; margin-top: 4%;\">Spróbuj ponownie</button></a>");
  67. }
  68. }
  69.  
  70. // SPRAWDZAMY, CZY ROZMIAR PLIKU JEST ODPOWIEDNI
  71. if($_FILES['pliki2']['size'][$i]>$max_file_size){
  72. throw new Exception("Plik <i>".$_FILES['pliki2']['name'][$i]."</i> posiada zbyt duży rozmiar. Dopuszczalny maksymalny rozmiar pliku to ".($max_file_size/1048576)."MB");
  73. }
  74.  
  75. // NADJEMY PLIKOWI NAZWĘ WG. WZORU: CZASWYSŁANIA_IDGRUPY_NRZDJĘCIA
  76. $file_name = (isset($ext)) ? time()."_".$images_id."_".$i.".".$ext : time()."_".$images_id."_".$i;
  77.  
  78. $o22 .= $file_name;
  79. $o22 .= ',';
  80. // ZAPISUJEMY PLIK
  81. move_uploaded_file($_FILES['pliki2']['tmp_name'][$i], $folder.$file_name);
  82. }
  83.  
  84.  
  85. for($i=0;$i<count($_FILES['pliki']['tmp_name']);$i++){
  86.  
  87. //$o1 = $_FILES['pliki']['name'];
  88.  
  89. // SPRAWDZAMY, CZY NAZWA PLIKU ZAWIERA KROPKĘ, CO POZWOLI NAM POBRAĆ ROZSZERZENIE
  90. if(preg_match("/\./", $_FILES['pliki2']['name'][$i])){
  91. $explode = explode(".", $_FILES['pliki2']['name'][$i]);
  92. $ext = end($explode);
  93. // SPRAWDZAMY CZY ROZSZERZENIE WYSŁANEGO PLIKU ZNAJDUJE SIĘ W TABLICY DOZWOLONYCH ROZSZERZEŃ
  94. if(!in_array($ext,$allowed)){
  95. throw new Exception("Plik <i>".$_FILES['pliki2']['name'][$i]."</i> posiada niedozwolone rozszerzenie. Dozwolone są: ".implode(", ",$allowed)." <br><a href=\"../wyslij\"><button style=\"margin-bottom: 400px; margin-top: 4%;\">Spróbuj ponownie</button></a>");
  96. }
  97. }
  98.  
  99. // SPRAWDZAMY, CZY ROZMIAR PLIKU JEST ODPOWIEDNI
  100. if($_FILES['pliki2']['size'][$i]>$max_file_size){
  101. throw new Exception("Plik <i>".$_FILES['pliki2']['name'][$i]."</i> posiada zbyt duży rozmiar. Dopuszczalny maksymalny rozmiar pliku to ".($max_file_size/1048576)."MB");
  102. }
  103.  
  104. // NADJEMY PLIKOWI NAZWĘ WG. WZORU: CZASWYSŁANIA_IDGRUPY_NRZDJĘCIA
  105. $file_name = (isset($ext)) ? time()."_".$images_id."_".$i.".".$ext : time()."_".$images_id."_".$i;
  106.  
  107. $o2 .= $file_name;
  108. $o2 .= ',';
  109. // ZAPISUJEMY PLIK
  110. move_uploaded_file($_FILES['pliki2']['tmp_name'][$i], $folder.$file_name);
  111. }
  112.  
  113.  
  114. ?>
  115. <div id="formularz-wysylka">
  116. <?php
  117. If(count($_FILES['pliki']['tmp_name'])==1){
  118. echo "<font color=\"green\">Następujący plik został sprawdzony: <i>".implode(" ",$_FILES['pliki']['name'])."</i> </font>";
  119.  
  120. }else{
  121. //echo $format_pliku1.$format_pliku2.$format_pliku3.$format_pliku4.$format_pliku5.$ile1
    .$ile2.$ile3.$ile4.$ile5."<font color=\"green\">Następujące pliki zostały sprawdzone: <br><i>".implode("<br>",$_FILES['pliki']['name'])."</i> </font>".$ghj;
  122. echo "<font color=\"green\">Następujące pliki zostały sprawdzone: <br><i>".implode("<br>",$_FILES['pliki']['name'])."</i> </font>";
  123. }
  124.  
  125. If(count($_FILES['pliki2']['tmp_name'])==1){
  126. echo "<font color=\"green\">Następujący plik został sprawdzony: <i>".implode(" ",$_FILES['pliki2']['name'])."</i> </font>";
  127.  
  128. }else{
  129. //echo $format_pliku1.$format_pliku2.$format_pliku3.$format_pliku4.$format_pliku5.$ile1
    .$ile2.$ile3.$ile4.$ile5."<font color=\"green\">Następujące pliki zostały sprawdzone: <br><i>".implode("<br>",$_FILES['pliki']['name'])."</i> </font>".$ghj;
  130. echo $ghj."<font color=\"green\">Następujące pliki zostały sprawdzone: <br><i>".implode("<br>",$_FILES['pliki2']['name'])."</i> </font>";
  131. }
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140. <form class="upload-form" id="formularz" action="" method="POST" enctype="multipart/form-data">
  141.  
  142. /*
  143.  
  144. dodatkowe dane
  145. */
  146.  
  147. <input type="hidden" name="pliki" value="<?php echo $o1 ?>">
  148. <input type="hidden" name="pliki2" value="<?php echo $o12 ?>">
  149. <input type="hidden" name="o2" value="<?php echo $o2 ?>">
  150. <input type="hidden" name="o22" value="<?php echo $o22 ?>">
  151.  
  152. <input type="hidden" name="ile1" value="<?php echo $ile1 ?>">
  153. <input type="hidden" name="ile2" value="<?php echo $ile2 ?>">
  154.  
  155.  
  156. <input type="hidden" name="format_wydruku1" value="<?php echo $format_pliku1 ?>">
  157. <input type="hidden" name="format_wydruku2" value="<?php echo $format_pliku2 ?>">
  158.  
  159.  
  160. <br><br><input type="submit" id="wyslij" value="Wyślij ►">
  161. </form>
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.