Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] $_FILES - działa ale nie przy includowaniu
Forum PHP.pl > Forum > PHP
arnuch
Witam

Napisany mam bardzo prostu skrypcik do wysyłu pliku na serwer i nawet działa:
Formularz:
  1. <form enctype="multiform/form-data" action="upload.php" method="post"/>
  2. <form enctype="multipart/form-data" action="upload.php" method="post" />
  3. <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
  4. <input type="file" name="plik" id="pliki" />
  5. <input type="submit" value="Wyślij" />
  6. </form>


Odbieranie pliku:
  1. <?php
  2. echo $_FILES['plik']['type'];
  3. echo '<br />';
  4. echo $_FILES['plik']['name'];
  5. echo '<br />';
  6. echo $_FILES['plik']['tmp_name'];
  7. echo '<br />';
  8. echo 'Error: '.$_FILES['plik']['error'];
  9. echo '<br />';
  10. echo $_FILES['plik']['size'];
  11. echo '<br />';
  12. if (is_uploaded_file($_FILES['plik']['tmp_name']))
  13. {
  14. echo "Plik istnieje";
  15. $lokalizacja = './plik/'.$_FILES['plik']['name'];
  16. if (move_uploaded_file($_FILES['plik']['tmp_name'],$lokalizacja))
  17. {
  18. echo "<br />Plik zapisano";
  19. }
  20. else
  21. {
  22. echo "Problemy z zapisem pliku";
  23. }
  24. }
  25. else
  26. {
  27. echo "Plik nie istnieje";
  28. }
  29. echo "<br /><a href='index.php'>Powrót</a> <a href='przegladaj.php'>Przegląd katalogów</a>";
  30. ?>


Piszę na własny użytek malutką wutryne do wymiany plików miedzy uzytkownikami. Maja wrzucac wszystko do jednego wora(pomijamy póki co kwestie walidacji danych). W momencie gdy powyższy kod zawrę w plikach witryny wywala mi błedy:


Notice: Undefined index: plik in C:\xampp\htdocs\sswi\php\upload.php on line 2


Notice: Undefined index: plik in C:\xampp\htdocs\sswi\php\upload.php on line 4


Notice: Undefined index: plik in C:\xampp\htdocs\sswi\php\upload.php on line 6


Notice: Undefined index: plik in C:\xampp\htdocs\sswi\php\upload.php on line 8
Error:

Notice: Undefined index: plik in C:\xampp\htdocs\sswi\php\upload.php on line 10


Notice: Undefined index: plik in C:\xampp\htdocs\sswi\php\upload.php on line 12
Plik nie istnieje

Jedyne co zmieniam to w <form> w action zmieniam cel na: "index.php?id=upload.

Plik Index.php wygląda tak:
  1. <body>
  2. <div id="kontener">
  3. <div id="logo">';
  4. ?>
  5. <?php include "php/logo.php";
  6.  
  7. echo '</div>
  8. <div id="menug">';
  9. include "php/menug.php";
  10.  
  11. echo '</div>
  12. <div id="belka">
  13.  
  14. </div>
  15. <div id="menub">';
  16. include "php/menub.php";
  17.  
  18. echo '</div>
  19. <div id="zawartosc">';
  20. if (!isset($_GET['id']))
  21. {
  22. include "php/zawartosc.php";
  23. }
  24. else
  25. {
  26. include "php/".$_GET['id'].".php";
  27. }
  28. echo '</div>
  29. <div id="stopka">';
  30. include "php/stopka.php";
  31.  
  32. echo '</div>
  33. </div>
  34. </body>
  35. </html>' ?>


Co może przeszkadzać przy otwartej sesji w wytworzeniu superglobalnej $_FILES??
Googluje już trzeci dzień i nie moge się nic doszukać.

PLZ help
darko
Trzy kwestie:
1. Masz dwa razy otwarty formularz: <form enctype="multipart/form-data" action="upload.php" method="post" /> (pierwsza sekcja)
2. dane wysyłasz metodą post, tymczasem w kodzie obsługującym parametr id widzę $_GET, a powinno być $_POST.
3. Zanim sobie ładnie wyplujesz wynik echo $_FILES['plik']['type']; itd. sprawdź czy w ogóle jakikolwiek plik przesłano.

ps. pominę milczeniem i udam, że tego nie widziałem: include "php/".$_GET['id'].".php";
arnuch
Dzięki za odpowiedź.

Ad1. Błąd przy kopiowaniu kodu, nie wiem jak się to stało. Nie otwiera sie dwa razy form.
Ad2. Dane o pliku wysyłam POST, GET przekazuje jaką mam strone otworzyć w div zawartość, czyli obudowuję sobie wewnętrzną część strony jakimiś bajerami.
Ad3. Jak wywołuje echo $_FILES wyrzuca mi wynik: Array, czyli coś tam jest - jak się myle proszę o poprawkę.

Ad ps - wiem że mało elegancki sposób na otwieranie różnych stron ale póki co raczkuje w tym temacie.

Głównym problemam jest to że plik uruchomione oddzielnie działają. Gdy z innych formularzy wysyłam metodą POST na przykład przy logowaniu to nie ma problemu - przesyłają się. SESSION też rejestrują się i pamięta je. Jak chce utworzyć $_FILES['plik'] to sypie błędem.
darko
Ad. 3 zamiast echo sprawdź var_dump($_FILES);
arnuch
array(0) { }

Ok czyli nie przesyła się nic. Łird.
darko
Może plik jest za duży. Ostatecznie formularz ma mieć atrybut multipart/form-data a nie multiform/form-data
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.