Zezwalaj na przesyłanie plików za pomocą PHP
01 z 06Formularz HTML
Jeśli chcesz zezwolić odwiedzającym Twoją witrynę na przesyłanie plików na Twój serwer internetowy, musisz najpierw użyć PHP aby utworzyć formularz HTML, który pozwala ludziom określić plik, który chcą przesłać. Chociaż cały kod został złożony w dalszej części tego artykułu (wraz z kilkoma ostrzeżeniami dotyczącymi bezpieczeństwa), ta część kodu powinna wyglądać tak:
Wybierz plik:
Ten formularz wysyła dane na twój serwer WWW do pliku o nazwie 'upload.php', który jest tworzony w następnym kroku.
02 z 06
Przesyłanie pliku
Samo przesyłanie plików jest proste. Ten mały fragment kodu przesyła pliki wysłane do niego przez formularz HTML.
$target = 'prześlij/';
$cel = $cel . nazwa podstawowa( $_FILES['przesłane']['nazwa']) ;
$ok=1; if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
echo 'Plik'. nazwa podstawowa( $_FILES['uploadedfile']['nazwa']). ' został przesłany';
}
w przeciwnym razie {
echo 'Przepraszamy, wystąpił problem podczas przesyłania pliku.';
}
?>
Pierwsza linia $target = 'prześlij/'; to miejsce, w którym przypisujesz folder, do którego przesyłane są pliki. Jak widać w drugim wierszu, ten folder jest powiązany z upload.php plik. Jeśli plik znajduje się pod adresem www.yours.com/files/upload.php, pliki zostaną przesłane do witryny www.yours.com/files/upload/yourfile.gif. Pamiętaj, aby utworzyć ten folder.
Następnie przenosisz przesłany plik do miejsca, w którym należy, używając move_uploaded_file () . To umieszcza go w katalogu określonym na początku skryptu. Jeśli to się nie powiedzie, użytkownik otrzymuje komunikat o błędzie; w przeciwnym razie użytkownik zostanie poinformowany, że plik został przesłany.
03 z 06Ogranicz rozmiar pliku
Możesz ograniczyć rozmiar plików przesyłanych do Twojej witryny. Zakładając, że nie zmieniłeś pola formularza w formularzu HTML — więc nadal nosi ono nazwę „przesłane” — ten kod sprawdza rozmiar pliku. Jeśli plik jest większy niż 350k, odwiedzający otrzymuje błąd „plik za duży”, a kod ustawia $ok na 0.
if ($ uploaded_size > 350000)
{
echo 'Twój plik jest za duży.
';
$ok=0;
}
Możesz zmienić ograniczenie rozmiaru na większe lub mniejsze, zmieniając 350000 na inną liczbę. Jeśli nie zależy Ci na rozmiarze pliku, pomiń te linie.
04 z 06Ogranicz pliki według typu
Mądre jest ustawianie ograniczeń na typy plików, które mogą być przesyłane do Twojej witryny, oraz blokowanie przesyłania niektórych typów plików.
Na przykład ten kod sprawdza, czy użytkownik nie przesyła pliku PHP do Twojej witryny. Jeśli jest to plik PHP, odwiedzający otrzymuje komunikat o błędzie, a $ok jest ustawiane na 0.
if ($uploaded_type =='text/php')
{
echo 'Brak plików PHP
';
$ok=0;
}
W tym drugim przykładzie tylko pliki GIF mogą być przesyłane do witryny, a wszystkie inne typy otrzymują błąd przed ustawieniem $ok na 0.
if (!($uploaded_type=='image/gif')) {
echo 'Możesz przesyłać tylko pliki GIF.
';
$ok=0;
}
Możesz użyć tych dwóch przykładów, aby zezwolić lub odmówić określonych typów plików.
05 z 06Kładąc wszystko razem
Łącząc to wszystko razem, otrzymujesz to:
$target = 'prześlij/';
$cel = $cel . nazwa podstawowa( $_FILES['przesłane']['nazwa']) ;
$ok=1;
//To jest nasz warunek rozmiaru
if ($ uploaded_size > 350000)
{
echo 'Twój plik jest za duży.
';
$ok=0;
}
//To jest nasz warunek dotyczący limitu typu pliku
if ($uploaded_type =='text/php')
{
echo 'Brak plików PHP
';
$ok=0;
}
//Tutaj sprawdzamy, czy $ok nie zostało ustawione na 0 przez błąd
jeśli ($ok==0)
{
Echo „Przepraszamy, Twój plik nie został przesłany”;
}
//Jeśli wszystko jest w porządku, próbujemy to wgrać
w przeciwnym razie
{
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
echo 'Plik'. nazwa podstawowa( $_FILES['uploadedfile']['nazwa']). ' został przesłany';
}
w przeciwnym razie
{
echo 'Przepraszamy, wystąpił problem podczas przesyłania pliku.';
}
}
?>
Zanim dodasz ten kod do swojej witryny, musisz zrozumieć konsekwencje dotyczące bezpieczeństwa przedstawione na następnym ekranie.
06 z 06Ostatnie myśli o bezpieczeństwie
Jeśli zezwalasz na przesyłanie plików, otwierasz się na ludzi, którzy chcą rozładowywać niepożądane rzeczy. Jednym z mądrych środków ostrożności jest niedopuszczenie do przesyłania jakichkolwiek plików PHP, HTML lub CGI, które mogą zawierać złośliwy kod. Zapewnia to pewne bezpieczeństwo, ale nie jest pewną ochroną przeciwpożarową.
Innym środkiem ostrożności jest ustawienie folderu przesyłania jako prywatnego, aby tylko Ty go widziałeś. Następnie, gdy zobaczysz przesłane, możesz je zatwierdzić — i przenieść — lub usunąć. W zależności od tego, ile plików spodziewasz się otrzymać, może to być czasochłonne i niepraktyczne.
Ten skrypt prawdopodobnie najlepiej przechowywać w prywatnym folderze. Nie umieszczaj go w miejscu, gdzie publiczność może z niego korzystać, bo możesz skończyć z serwerem pełnym bezużytecznych lub potencjalnie niebezpiecznych plików. Jeśli naprawdę chcesz, aby opinia publiczna mogła przesyłać pliki do Twojej przestrzeni serwerowej, napisz w jak najwięcej bezpieczeństwa .