Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML]Wysłanie pliku rar przez formularz
radziopoke
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

Ostrzeżenie: (0%)
-----


Mam zwykły formularz, w którym mam kilka pól input typu text, i jeden typu file.
Problem polega na tym, że gdy chce wysłać plik rar strona wysyła plik na serwer ale w ogóle ani nie można się do niego dostać, ani nie wysyła innych danych formularza. Tak jakby serwer całkowicie stracił te dane.

tak wygląda formularz
  1. <form method="post" id="uploadform" action="" enctype="multipart/form-data">
  2. <input type="hidden" name="submitted" value="true">
  3. <p><label for="namefrom">Pseudonim/Imię Nazwisko <span class="required">*</span></label>
  4. <input name="namefrom" id="namefrom" type="text" class="field" value="" tabindex="1"></p>
  5.  
  6. <p><label for="emailfrom">Email <span class="required">*</span></label>
  7. <input name="emailfrom" id="emailfrom" type="text" class="field" value="" tabindex="3"></p>
  8.  
  9. <p><label for="subject">Temat <span class="required">*</span></label>
  10. <input name="subject" id="subject" type="text" class="field" value="" tabindex="5"></p>
  11.  
  12. <p><label for="comments">Komentarz <span class="required">*</span></label>
  13. <textarea name="comments" id="comments" rows="7" cols="10" class="field" tabindex="6"></textarea></p>
  14.  
  15. <p><label for="attachment">Załącz plik <span class="required">*</span><br />(Maksymalny rozmiar 10MB,<br />dozwolone formaty pliku: .zip, .rar)</label>
  16. <input name="attachment" id="attachment" type="file" tabindex="7">
  17. </p><p><input type="submit" name="submit" id="submit" value="Wyślij!" tabindex="8"></p>
  18.  
  19. </form>

część php tego pliku to tylko próba sprawdzenia czy formularz został wysłany(wychudziłem go ale nadal przy wysłaniu wyskakuje napis błąd)
  1. if(isset($_POST['submitted']))
  2. {
  3. echo "ok";
  4. }
  5. else
  6. {
  7. echo "błąd";
  8. }


Ten problem nie występuję z żadnym innym plikiem przynajmniej nie zauważyłem tego smile.gif
Plik nie zawiera ani grama skryptu javascript.

Czy może być to wina serwera. Mam zainstalowanego XAMPP-a.
Go to the top of the page
+Quote Post
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


  1. if(isset($_POST['submit']))
  2. {
  3. echo "ok";
  4. }
  5. else
  6. {
  7. echo "błąd";
  8. }
a bardziej poprawnie
  1. if( ! empty($_POST))
  2. {
  3. echo "ok";
  4. }
  5. else
  6. {
  7. echo "błąd";
  8. }
Czemu 2 rozwiazanie jest bardziej poprawne? Poniewaz jest odporne na wszelkiego rodzaju bledy zwiazane z nazewnictwem (wlasnie takie, jakie popelniasz). Pozdrawiam

Ten post edytował lukaskolista 11.09.2012, 17:26:34
Go to the top of the page
+Quote Post
peter13135
post
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


@up
1. Powiedz nam, czemu submitted jest źle, a submit jest dobrze ? Przecież w formularzu są pola z name="submitted" i name="submit"
2. Czemu isset($_POST['pole']) jest źle, a empty($_POST) to jest dobrze ? Przecież oba sposoby są dobre, chociaż pierwszy chyba lepszy w przypadku kilku formularzy.

Edit://
Cytat
Czemu 2 rozwiazanie jest bardziej poprawne? Poniewaz jest odporne na wszelkiego rodzaju bledy zwiazane z nazewnictwem (wlasnie takie, jakie popelniasz). Pozdrawiam

To żaden argument.

Ten post edytował peter13135 11.09.2012, 17:45:49


--------------------
:)
Go to the top of the page
+Quote Post
radziopoke
post
Post #4





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

Ostrzeżenie: (0%)
-----


mi nie chodzi o to jak sprawdzać czy formularz został wysłany czy nie tylko dlaczego gdy próbuję go wysłać z plikiem rar nic się nie wysyła?
sprawdziłem to
if( ! empty($_POST))
tablica jest pusta mimo wpisania danych. Z plikami innymi niż rar formularz wysłany jest normalnie. dlaczego?
Go to the top of the page
+Quote Post
peter13135
post
Post #5





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Skopiowałem Twój formularz wraz z kodem i wszystko jest okej
Kod
<form method="post" id="uploadform" action="" enctype="multipart/form-data">

    <input type="hidden" name="submitted" value="true">

    <p><label for="namefrom">Pseudonim/Imię Nazwisko <span class="required">*</span></label>

    <input name="namefrom" id="namefrom" type="text" class="field" value="" tabindex="1"></p>



    <p><label for="emailfrom">Email <span class="required">*</span></label>

    <input name="emailfrom" id="emailfrom" type="text" class="field" value="" tabindex="3"></p>



    <p><label for="subject">Temat <span class="required">*</span></label>

    <input name="subject" id="subject" type="text" class="field" value="" tabindex="5"></p>



    <p><label for="comments">Komentarz <span class="required">*</span></label>

    <textarea name="comments" id="comments" rows="7" cols="10" class="field" tabindex="6"></textarea></p>



    <p><label for="attachment">Załącz plik <span class="required">*</span><br />(Maksymalny rozmiar 10MB,<br />dozwolone formaty pliku: .zip, .rar)</label>

    <input name="attachment" id="attachment" type="file" tabindex="7">

    </p><p><input type="submit" name="submit" id="submit" value="Wyślij!" tabindex="8"></p>



</form>
<?php

print_r($_POST);
print_r($_FILES);
if(isset($_POST['submitted']))
{
  echo "ok";
}
else
{
  echo "błąd";
}


--------------------
:)
Go to the top of the page
+Quote Post
radziopoke
post
Post #6





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

Ostrzeżenie: (0%)
-----


Czyli próbowałeś wysłać plik rar.
czyżby wina mogła leżeć po stronie serwera? Jak tak to gdzie to się ustawia?
Go to the top of the page
+Quote Post
peter13135
post
Post #7





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


tak, oto przykład :

Kod
Array ( [submitted] => true [namefrom] => [emailfrom] => [subject] => [comments] => [submit] => Wyślij! ) Array ( [attachment] => Array ( [name] => 1280_1024.rar [type] => application/x-rar-compressed [tmp_name] => E:\programy\xampp\tmp\phpB68.tmp [error] => 0 [size] => 2350068 ) ) ok




--------------------
:)
Go to the top of the page
+Quote Post
radziopoke
post
Post #8





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

Ostrzeżenie: (0%)
-----


Coś czuję że wina może być ustawień serwera(od samego początku nic nie zmieniałem w ustawieniach). Jak tak to gdzie to można ustawić? No chyba, że tylko mój xampp ma takie odchyły smile.gif
Go to the top of the page
+Quote Post
peter13135
post
Post #9





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


No nie wiem, ja nic nie zmieniałem w swoim xamppie i to to działa ;P


--------------------
:)
Go to the top of the page
+Quote Post
lukaskolista
post
Post #10





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Nie zauwazylem pola submitted smile.gif

id ( ! empty($_POST)) {...} jest lepsze, bo jest bledoodporne, nazewnictwo formularzy nie ma w tym przypadku znaczenia. Kazdy ma tam swoje przyzwyczajenia i nie bede nikomu nic narzucal. Przeslane pliki nie znajduja sie w tablicy $_POST, tylko w tablicy $_FILES w bardzo niewygodnej formie (jesli jest ich wiecej, niz 1). Normalizacje tablicy $_FILES mozna znalezc w manualu
Go to the top of the page
+Quote Post
peter13135
post
Post #11





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Ale błąd w nazewnictwie możesz popełnić wszędzie, zarówno w pliku html, jak i css albo php, czy w zapytaniu sql, więc taki wyjątek, że nie muszę pilnować literówek w tym jednym przypadku, za wiele dobrego nie daje.

Po co piszesz o tym, że pliki nie znajdują się w $_POST, i to że pliki w $_FILES są w niewygodnej formie ? Autor nie pisał o niczym takim i to wszystko nie ma wpływu na problem autora tematu.


--------------------
:)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #12





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Sprawdź w php.ini wartość linii: upload_max_filesize oraz upload_tmp_dir i sprawdź czy katalog ma chmod 777.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
peter13135
post
Post #13





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


O jakim katalogu mówisz ? Przecież on nigdzie nie zapisuje tego pliku wink.gif


--------------------
:)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #14





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Mówię o katalogu, w którym tymczasowo przechowywane są pliki przed zapisaniem w określonej ścieżce (via tmp_name).


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
radziopoke
post
Post #15





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

Ostrzeżenie: (0%)
-----


upload_tmp_dir = "C:\xampp\tmp"
upload_max_filesize = 128M

Ścieszkę znałem już wcześniej i wiem że plik rar jest wysyłany gdyż tworzą się tam nowe pliki w przypadku wysłania pliku rar ale tablica $_POST i $_FILES pozostają puste. Wielkość pliku tu i tak nie gra roli gdyż wtedy chyba dane formularza powinny być przekazane. Już nie raz wgrywałem inne typy plików więc katalog na pewno ma chmod 777.

Wprawdzie mówiąc ten serwer jest dla mnie serwerem testowym gdyż cala strona znajdzie się na płatnym serwerze i mam nadzieję, że ten błąd tam nie wystąpi. Tylko cały czas się ciekawię co ma przeciwko temu bym nie mógł wgrywać plików rar?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:10