Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy ten kod jest dobry i optymalny?
Balus
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 24.06.2009

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


  1. <?php
  2. $haslo = 'tajnehaslo';
  3. $f_haslo = $_POST['haselko'];
  4. $p_tmp = $_FILES['pliczek']['tmp_name'];
  5. $p_nazwa = $_FILES['pliczek']['name'];
  6. $p_rozmiar = $_FILES['pliczek']['size'];
  7. // $p_typ = $_FILES['pliczek']['type'];
  8. // $p_blad = $_FILES['pliczek']['error'];
  9.  
  10. if($f_haslo != $haslo)
  11. {
  12. echo 'Niepoprawne haslo!';
  13. }
  14. else
  15. {
  16. if(is_uploaded_file($f_tmp))
  17. {
  18. move_uploaded_file($p_tmp, '/pliczki/'$p_nazwa);
  19. echo 'Plik <strong>'.$p_nazwa.'</strong> ('.$p_rozmiar.') zostal wrzucony na serwer!';
  20. }
  21. else
  22. {
  23. echo 'Blad podczas wrzucania pliku!';
  24. }
  25. }
  26. ?>

Tak jak w temacie (IMG:style_emoticons/default/winksmiley.jpg)
Czy ten kod jest dobry i optymalny?
Szczególnie chodzi mi o move_uploaded_files

Ten post edytował Balus 30.11.2009, 15:30:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
MateuszS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Tzn jeżeli jest to do jakiegoś Hostingu czy coś to trochę źle, bo ci ktoś może plik PHP wrzucić na serwer a potem rzeźnia - po stronie ;D Właściwie nawet jeżeli tylko ty z tego korzystasz powinieneś jakoś to zabezpieczyć. No i skąd wiesz że plik zostanie wrzucony?

  1. @ $a=move_uploaded_file($p_tmp, '/pliczki/'$p_nazwa);
  2. if($a==true)
  3. echo 'Plik <strong>'.$p_nazwa.'</strong> ('.$p_rozmiar.') zostal wrzucony na serwer!';
  4. else
  5. echo 'Blad';
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




O jaką optymalność Ci chodzi? W takim krótkim kodzie ciężko cokolwiek spaprać. A jednak:
- niepotrzebnie tworzysz tyle zmiennych dla $_FILES,
- komunikat błędu nie sprawdza czy upload się powiódł, tylko czy jest plik do uploadu (dodaj analogiczny warunek dla funkcji move_uploaded_file).
Go to the top of the page
+Quote Post
Balus
post
Post #4





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 24.06.2009

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


  1. <?php
  2. $haslo = 'tajnehaslo';
  3. $f_haslo = $_POST['haselko'];
  4. $p_tmp = $_FILES['pliczek']['tmp_name'];
  5. $p_nazwa = $_FILES['pliczek']['name'];
  6. $p_rozmiar = $_FILES['pliczek']['size'];
  7.  
  8. if($f_haslo != $haslo)
  9. {
  10. echo 'Niepoprawne haslo!';
  11. }
  12. else
  13. {
  14. if(is_uploaded_file($f_tmp))
  15. {
  16. $przenies = move_uploaded_file($p_tmp, $p_nazwa);
  17. if($przenies == true)
  18. {
  19. echo 'Plik <strong>'.$p_nazwa.'</strong> ('.$p_rozmiar.') zostal wrzucony na serwer!';
  20. }
  21. else
  22. {
  23. echo 'Blad podczas przenoszenia pliku!';
  24. }
  25. }
  26. else
  27. {
  28. echo 'Blad podczas wrzucania pliku!';
  29. }
  30. }
  31. ?>

A teraz co powiecie? :]
Go to the top of the page
+Quote Post
darko
post
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


  1. $przenies = move_uploaded_file($p_tmp, $p_nazwa);
  2. if($przenies == true)
  3. {
  4. echo 'Plik <strong>'.$p_nazwa.'</strong> ('.$p_rozmiar.') zostal wrzucony na serwer!';
  5. }
  6. else
  7. {
  8. echo 'Blad podczas przenoszenia pliku!';
  9. }


zamieniłbym na

  1. if(move_uploaded_file($p_tmp, $p_nazwa)) {
  2. echo 'Plik <strong>'.$p_nazwa.'</strong> ('.$p_rozmiar.') zostal wrzucony na serwer!';
  3. }
  4. else {
  5. echo 'Blad podczas przenoszenia pliku!';
  6. }
Go to the top of the page
+Quote Post
Balus
post
Post #6





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 24.06.2009

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


  1. if(move_uploaded_file($p_tmp, $p_nazwa)) {
  2. echo 'Plik <strong>'.$p_nazwa.'</strong> ('.$p_rozmiar.') zostal wrzucony na serwer!';
  3. }
  4. else {
  5. echo 'Blad podczas przenoszenia pliku!';
  6. }

if(move_uploaded_file($p_tmp, $p_nazwa)) {
pierw chyba trzeba php rozkazac przeniesc ten plik zeby potem sprawdzic czy zostal przeniesiony (IMG:style_emoticons/default/smile.gif)
poprawcie mnie jesli zle mowie (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
darko
post
Post #7





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Nie mogę coś edytować, więc napiszę nowego posta. Popracowałbym na tym
1. $f_haslo = $_POST['haselko']; - w ogóle nie filtrujesz danych z formularza
2. przed move_uploaded_file sprawdzałbym za pomocą ini_get czy $p_rozmiar jest mniejszy/równy maksymalnemu dopuszczalnemu i jesli jest, dopiero move_uploaded_file

Cytat
poprawcie mnie jesli zle mowie

Poprawiam: źle mówisz, sam sprawdź

Ten post edytował darko 30.11.2009, 15:52:22
Go to the top of the page
+Quote Post
Balus
post
Post #8





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 24.06.2009

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


1.
  1. $f_haslo = strip_tags(HTMLSpecialChars($_POST['haselko']));

Tyle wystarczy czy jeszcze jkaieś metody filtrowania polecacie? (IMG:style_emoticons/default/smile.gif)
2
  1. if($p_rozmiar >= 666)
  2. {
  3. ...
  4. }

cos takiego? (IMG:style_emoticons/default/smile.gif)

Ten post edytował Balus 30.11.2009, 15:55:28
Go to the top of the page
+Quote Post
darko
post
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Z wartości ini_get("upload_max_filesize") usuń literę "M" na końcu, przelicz sobie na bajty tę wartość, bo z tego, co pamiętam $_FILES["jakis_name"]["size"] zwraca rozmiar w bajtach i potem:
sprawdź czy $_FILES["jakis_name"]["error"] == 0 (czyli wszystko OK) i:

if($p_rozmiar <= $przeliczone_na_bajty && $_FILES["jakis_name"]["error"] == 0) {
move_uploaded_file...

Ten post edytował darko 30.11.2009, 16:05:57
Go to the top of the page
+Quote Post
wookieb
post
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(darko @ 30.11.2009, 15:59:35 ) *
przelicz sobie na bajty wartość ini_get("upload_max_filesize"), bo z tego, co pamiętam $_FILES["jakis_name"]["size"] zwraca rozmiar w bajtach i potem:
if($p_rozmiar <= $przeliczone_na_bajty) {

maksymalny rozmiar wysyłanego pliku
Go to the top of the page
+Quote Post
Balus
post
Post #11





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 24.06.2009

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


Ok dla wszystkich pomógł (IMG:style_emoticons/default/winksmiley.jpg)
troszkę pokombinuję i odezwę się (IMG:style_emoticons/default/smile.gif)
Proszę o nie zamykanie tematu (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 18.09.2025 - 09:45