Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]browse - ładowanie pliku
Larges
post
Post #1





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


Kod
$max_rozmiar = 1024*1024;
if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
   if ($_FILES['plik']['size'] > $max_rozmiar) {
   echo 'Błąd! Plik jest za duży!';
   } else {
         echo '<br><br><br><font color="CA0000" size="4"><center>News dodany!</font><br>';
         echo '<a href="dodaj_newsa.php">Dodaj kolejnego</a>';
   move_uploaded_file($_FILES['plik']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);
   }
} else {
      echo 'Błąd przy przesyłaniu danych!';
}



Nie wiem jak zrobić, aby na serwer można było ładować tylko image - gif, jpg. Bardzo prosiłbym o pomoc.

znalazłem w internecie:



Kod
Należy zauważyć, że ten skrypt jest wolny od zabezpieczeń i jeżeli folder do którego wysyłamy pliki jest dostępny z przeglądarki potencjalny włamywacz może wysłac niebezpieczny skrypt *.php i go wykonać. Najlepszym rozwiązaniem jest utworzyć folder poza drzewem katalogów i w nim trymac uploadowane pliki.


[b]poprawiona wersja kodu:[/b]

[img]http://compzone.org/images/numbers/2.png[/img] <?php
[img]http://compzone.org/images/numbers/3.png[/img] $rot = $_SERVER['DOCUMENT_ROOT'];
[img]http://compzone.org/images/numbers/4.png[/img]  
[img]http://compzone.org/images/numbers/5.png[/img] move_uploaded_file($_FILES['plik']['tmp_name'], "$rot/../wyslane/".$_FILES['plik']['name']);
[img]http://compzone.org/images/numbers/6.png[/img] ?>


- czy to zabezpiecza wystarczająco przed włamem? Ktoś może wgrać plik .php...
Czy mój wcześniejszy kod jest dobrze zabezpieczony? Proszę o odopwiedź.

Ten post edytował Larges 26.05.2008, 21:37:36
Go to the top of the page
+Quote Post
xbigos
post
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 27
Dołączył: 13.07.2005
Skąd: Jarocin

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


Przed wysłaniem formularza dać warunek przez np if(eregi($string, $string2)){}else{} polecam manulala pl.php.net/eregi
Go to the top of the page
+Quote Post
Larges
post
Post #3





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


Nie bardzo mi to wyjaśnia sprawę.
Go to the top of the page
+Quote Post
devnul
post
Post #4





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


ja używam funkcji getimagesize" title="Zobacz w manualu PHP" target="_manual do sprawdzenia typu danych/obrazka - rozpoznaje popularne formaty graficzne nawet (!) jeśli rozszerzenie będzie inne, np zdjęcie o nazwie "wakacje.exe" mimo iż jest poprawnym plikiem jpeg to nie przeszło by przez większość walidatorów ze względu właśnie na rozszerzenie a dzięki tej metodzie zostanie rozpoznane i przejdzie poprawnie. Polecam tylko zmianę rozszerzenia plików na właściwe dla danego typu już po dokonaniu uploadu żeby uniknąć innych kwiatków.
Go to the top of the page
+Quote Post
Larges
post
Post #5





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


Kod
$plik_nazwa = $_FILES['plik']['name'];
echo "$plik_nazwa";
$sp = explode(".",$plik_nazwa);

// sprawdzamy rozszerzenie
if($sp[1] == "gif" or $sp[1] == "jpg" or $sp[2] == "JPG" or $sp[3] == "GIF") {
$spp = "1";
}
else {
$spp = "0";
}
if ($spp = "1") {
$max_rozmiar = 1024*1024;
if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  if ($_FILES['plik']['size'] > $max_rozmiar) {
  echo 'Błąd! Plik jest za duży!';
  } else {

        echo '<br><br><br><font color="CA0000" size="4"><center>News dodany!</font><br>';
        echo '<a href="dodaj_newsa.php">Dodaj kolejnego</a>';
  move_uploaded_file($_FILES['plik']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);
  }
} else {
        echo '<br><br><br><font color="CA0000" size="4"><center>News dodany!</font><br>';
        echo '<a href="dodaj_newsa.php">Dodaj kolejnego</a>';
}
}
}


Co w tym kodzie może być złego?
jeśli dam if ($spp = "1") - ładuje się każdy plik, jeśli if ($spp == "1") - żaden.
Dziękuję za pomoc.
Go to the top of the page
+Quote Post
devnul
post
Post #6





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


jeden znak = to przypisanie wartości - zawsze zwraca true w warunku logcznym bo wartość zostaje przypisana do zmiennej == równości to równe === to z kolei dokładnie takie jak/identyczne - nie następuje tu rzutowanie zmiennych na podobne typy
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: 23.08.2025 - 17:29