Korzystając z tej strony zgadzasz się z polityką prywatności i regulaminem.
Akceptuj
WebInside.plWebInside.plWebInside.pl
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
Szukaj
  • Kontakt
  • Forum
WebInside.pl © 2023.
Czytasz: Uploader plików w PHP
Udostępnij
Zaloguj się
Powiadomienia
Aa
WebInside.plWebInside.pl
Aa
Szukaj
  • Strona główna
  • Aktualności
  • Technologie webowe
  • Publicystyka
  • E-marketing
  • Poradniki
  • AI
  • Technologie
  • Artykuły partnerskie
  • Więcej
    • Kontakt
    • Mapa strony
Masz już konto? Zaloguj się
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
WebInside.pl © 2023.
WebInside.pl > Technologie webowe > Uploader plików w PHP
Technologie webowe

Uploader plików w PHP

WebInside.pl
Ostatnia aktualizacja: 25.07.2003
WebInside.pl
Udostępnij
Udostępnij

Pierwszym sposobem na rozwiązanie problemu uploadera plików na serwer jest rozdanie dostępu na serwer każdemu użytkownikowi. Co jeśli jednak nie mamy pełnego zaufania do osoby, która korzysta z naszych skryptów?

Zawartość
Dodawanie plikuPrzeglądanie wszystkich plikówUsuwanie plikówPlik główny

Wtedy pozostaje nam możliwość samodzielnego umieszczania wszystkich potrzebnych plików na serwerze, na prośbę konkretnego użytkownika. Po pewnym czasie można jednak stwierdzić, że jest to dość kłopotliwe, a przy większej liczbie użytkowników wręcz nie do wytrzymania. Pozostaje nam wtedy tylko jedno rozwiązanie. Polega ono na skonstruowaniu skryptu, który umożliwia dodawanie plików z poziomu przeglądarki, bez potrzeby podawania haseł dostępu na serwer.

W celu stworzenia takiego skryptu, niezbędna będzie umiejętność posługiwania się katalogami w języku PHP. Cała budowa funkcji umożliwiających dodawanie plików nie jest skomplikowana i ogranicza się do jednej funkcji. My jednak postaramy się napisać skrypt, który umożliwia administrację wszystkimi plikami dodawanymi na serwer za pomocą upload’era. Na dobry początek utwórz katalog, w którym umieszczane będą dodawane pliki. Ja nazwę go ‘materialy’. Teraz wszystkie pliki potrzebne do działania skryptu będziemy umieszczać w katalogu nadrzędnym do utworzonego przed chwilą katalogu zawierającego upload’owane pliki.

Dodawanie pliku

Otwórz dowolny edytor tekstowy (np. Notatnik) i zapisz nowy dokument jako ‘dodaj.php’. Na samym początku skryptu sprawdzimy czy zostały wprowadzone wszystkie potrzebne dane, aby można było upload’ować plik.

<? if (isset($_POST[’plik’]) && $_POST[’plik’] != ” && isset($_POST[’nazwa’]) && $_POST[’nazwa’] != ”) {

Teraz należałoby sprawdzić czy plik o podanej nazwie już istnieje w naszym katalogu. W przypadku, gdy zostanie znaleziony, to w dalszej części skryptu zostanie zwrócony stosowny komunikat.

if (!file_exists($katalog.’/’.$_POST[’nazwa’])) { if (copy($_POST[’plik’], $katalog.’/’.$_POST[’nazwa’])) { @chmod($katalog.’/’.$_POST[’nazwa’], 666); print 'Plik został dodany.’; } else { print 'Nie można było dodać pliku.’; } } else { print 'Plik o podanej nazwie już istnieje.’; }

Po sprawdzeniu czy wskazany plik istnieje przeszliśmy do etapu dodania pliku na serwer. Skorzystaliśmy tu z funkcji ‘copy()’. Posiada ona dwa parametry. Pierwszy to plik, który chcemy dodać na serwer, a drugi to nazwa i miejsce docelowe na serwerze umieszczanego pliku. Następnym ważnym elementem skryptu jest zmiana uprawnień dostępu do pliku za pomocą funkcji ‘chmod’. Kiedy wiemy, że plik został poprawnie dodany, to do zmiennej ‘$kom’ przypisujemy odpowiedni komunikat. W przypadku, gdy tak nie jest, to także przypisujemy stosowny komunikat. Jeśli z kolei plik o podanej nazwie już istnieje na serwerze, to także i o tym będzie informował odpowiedni komunikat przypisany do zmiennej ‘$kom’. Na samym końcu wyświetlamy zawartość zmiennej ‘$kom’. Zakończeniem działalności naszego skryptu będzie wyświetlenie formularza, za pomocą, którego wprowadzane będą parametry nowego pliku.

} else { ?> W celu dodania pliku należy wybrać jego lokalizację na dysku, a następnie wskazać odpowiednią nazwę, pod jaką będzie przechowywany na serwerze.<br><br> <form method=”POST”> <input type=”hidden” name=”do” value=”dodaj”> <input type=”hidden” name=”MAX_FILE_SIZE” value=”500000″> Nazwa pliku na serwerze: <input type=”text” name=”nazwa” size=”43″><br> Lokalizacja: <input type=”file” name=”plik” size=”25″><br> <input type=”submit” value=”dodaj”> </form> <? } ?>

Tak gotowy skrypt dodawania możesz zapisać i przejść do następnej części.

Przeglądanie wszystkich plików

Otwórz edytor tekstu i zapisz nowy dokument jako ‘pokaz.php’. Następnie zapoznaj się z poniższym kodem:

Aby usunąć plik należy zaznaczyć znajdujące się przy nim pole 'checkbox’ a następnie wcisnąć przycisk 'usuń’. Na raz można usunąć jeden lub więcej plików<br><br> <div align=”center”> <form method=”POST”> <input type=”hidden” name=”do” value=”usun”> <table cellpadding=”2″ cellspacing=”1″> <tr> <th width=”30″ height=”15″ align=”center” valign=”middle”>Lp.</th> <th width=”120″ height=”15″ align=”center” valign=”middle”>Nazwa pliku</th> <th width=”40″ height=”15″ align=”center” valign=”middle”>Zaznacz</th> </tr>

Na początku zapisaliśmy krótką informację dotyczącą usuwania danych, a następnie wstępny formularz i układ tabelek, które posłużą nam do usytuowania pobieranych danych. Teraz możemy przystąpić do właściwego kodu:

<? $kat = dir($katalog); $i=1; while($poz = $kat->read()) { if (preg_match(„/^.+..+$/i”, $poz)) { print '<tr> <td height=”15″ align=”left” valign=”middle”>’.$i.'</td> <td height=”15″ align=”left” valign=”middle”><a href=”’.$katalog.’/’.$poz.'” target=”_new”>’.$poz.'</a></td> <td height=”15″ align=”center” valign=”middle”><input type=”checkbox” name=”co[]” value=”’.$poz.'”></td> </tr>’; $i++; } } $kat->close();

Jak już wspominałem wcześniej będzie wymagana tutaj znajomość operacji na katalogach, gdyż nie będę wyjaśniał działania poszczególnych elementów należących do tej dziedziny języka PHP. Jeśli nie nie posiadasz takiej wiedzy to polecam przeczytać odpowiedni artykuł. Na koniec należy zakończyć strukturę formularzy oraz tabelek.

?> </tr> </table> <br> <input type=”submit” value=”usuń zaznaczone”> </form> </div>

Po zapisaniu powyższego kodu możesz przystąpić do następnego etapu.

Usuwanie plików

Otwórz dowolny edytor tekstowy i zapisz nowy dokument jako ‘usun.php’. Na samym początku skryptu sprawdzimy czy zostały podane nazwy plików, aby można było je usunąć.

<? if (isset($_POST[’co’]) && count($_POST[’co’]) != 0) { $popr = 0; $co = $_POST[’co’]; $kat = dir($katalog); while ($poz = $kat->read()) { if (preg_match(„/^.+..+$/i”, $poz)) { for ($j=0; $j < count($co); $j++) { if ($poz == $co[$j]) { $popr = (unlink($katalog.’/’.$poz)) ? $popr+1 : $popr; } } } } $kat->close();

Stworzyliśmy nową zmienną ‘$popr’, która pomoże nam w określeniu poprawności wykonania skryptu. Po otworzeniu katalogu, sprawdzamy, które z wymienionych nazw plików pasują do zawartych nazw w tablicy ‘$co’, która przechowuje dane pobrane z formularza. W przypadku, gdy któraś z nazw pasuje, to jest usuwana i jeśli funkcja ‘unlink()’ zwróci wartość ‘true’ to wartość zmiennej ‘$popr’ jest zwiększana o ‘1’, w przeciwnym wypadku, pozostaje bez zmian. Następnym elementem będzie sprawdzenie czy liczba poprawnie usuniętych plików (czyli wartość ‘$popr’) jest równa liczbie elementów tablicy ‘$co’. W zależności od wyniku, zwróconego przez to porównanie, wyświetlany jest stosowny komunikat. Na zakończenie w przypadku, gdy nie został spełniony pierwszy warunek na początku skryptu, wyświetlany jest komunikat informujący o braku danych do usunięcia.

if (count($_POST[’co’]) == $popr) { print 'Wskazane pliki zostały usunięte.’; } else { print 'Nie można było usunąć kilku lub wszystkich z wybranych plików.’; } } else { print 'Nie zostały zaznaczone pliki do usunięcia.’; } ?>

Ostatnim elementem potrzebnym do całkowitego działania skryptu będzie skonstruowanie pliku głównego z menu umożliwiającym korzystanie ze stworzonych wcześniej modułów.

Plik główny

Otwórz edytor tekstu i zapisz nowy dokument jako ‘index.php’. Następnie zastosuj się do poniższego kodu:

<? $do = $_GET[’do’]; $katalog = ‘materialy’; ?>

Na początku utworzyliśmy zmienną ‘$katalog’, która przechowuje nazwę katalogu, w którym są przechowywane pliki. Następnie tworzymy konstrukcję strony www z tabelką, w której jedna komórka zawiera menu i druga komórka skrypt, który będzie ładował odpowiednie elementy strony.

<html> <head> </head> <body> <table cellpadding=0 cellspacing=0 border=1> <tr> <td width=170 height=300 align=left valign=top> <b>Menu</b><br><br> » <a href=index.php?do=pokaz>pokaż wszystkie </a><br> » <a href=index.php?do=dodaj>dodaj plik</a><br> </td> <td width=400 align=left valign=top> <? if (!$do || $do == 'pokaz’) { print '<b>Wszytskie pliki na serwerze</b><br><br>’; include(’pokaz.php’); } elseif ($do == 'dodaj’) { print '<b>Dodawanie pliku na serwer</b><br><br>’; include(’dodaj.php’); } elseif ($do == 'usun’) { print '<b>Usuwanie pliku z serwera</b><br><br>’; include(’usun.php’); } else { print '<b>error 404</b><br><br>Nie ma takiej strony!’; } ?> </td> </tr> </table> </bode> </html>

Tak otrzymany skrypt jest już gotowy do wykorzystania. Nie jest w pełni zabezpieczony, ale myślę, że spełni Twoje wymagania, chociaż częściowo. Jeśli chcesz możesz rozbudować zamieszczone tutaj funkcje i stworzyć o wiele lepszy krypt, ale wszystko zależy tylko od Ciebie.

Może Cię zainteresować

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

Serwer dla małej firmy – czym kierować się przy jego wyborze?

WebInside.pl 2003-07-25 2003-07-25
Udostępnij ten artykuł
Facebook Twitter Kopiuj link Wydrukuj
Udostępnij
Poprzedni artykuł Ilość zajmowanego miejsca
Następny artykuł Jak uruchamiać skrypty CGI z poziomu PHP?
Zostaw komentarz lub opinię

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze artykuły

Procesor AMD Ryzen 7
Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
Technologie
Jak przygotować sklep internetowy na automatyzację obsługi klienta?
Artykuły partnerskie
the nvidia logo is displayed on a table
Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
AI Aktualności
Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?
E-marketing
4 najczęstsze cyberzagrożenia w przemyśle
Technologie
Jak uratować zaschnięty tusz do drukarki? Skuteczne domowe sposoby i porady
Poradniki
Model 3D jako wspólne źródło danych dla projektu, produkcji i montażu
Artykuły partnerskie
Dlaczego wideo z telefonu sprzedaje na TikToku lepiej niż profesjonalne spoty?
Artykuły partnerskie
Dwa ekrany zawsze pod ręką – zalety korzystania z monitora przenośnego na co dzień
Technologie
Rola nowoczesnych technologii w procesie rehabilitacji
Artykuły partnerskie
banner
Chcesz umieścić swoją reklamę w portalu WebInside.pl?
Skontaktuj się z nami, a zaproponujemy interesujące formy reklamy.
Skontaktuj się

Inne polecane artykuły

Technologie webowe

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

5 min czytania
Technologie webowe

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

7 min czytania
MacBook Pro showing programming language
Technologie webowe

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

9 min czytania
AktualnościTechnologie webowe

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

9 min czytania
woman in black top using Surface laptop
Technologie webowe

Serwer dla małej firmy – czym kierować się przy jego wyborze?

5 min czytania
Technologie webowe

Jaki hosting wybrać pod Laravel? Kompleksowy przewodnik dla twórców aplikacji webowych

6 min czytania
programming language
Technologie webowe

Kaskadowość w CSS – wszystko, co musisz wiedzieć

7 min czytania
two women talking while looking at laptop computer
Technologie webowe

Darmowe kreatory stron WWW – stwórz swoją stronę w godzinę

14 min czytania
//

WebInside.pl – portal technologiczny. Aktualności ze świata technologii, webmastering, marketing internetowy, AI, poradniki.

 

Partnerzy

Wszystkie kategorie

  • AI
  • Aktualności
  • Artykuły partnerskie
  • E-marketing
  • e(Biznes)
  • Poradniki
  • Publicystyka
  • Technologie
  • Technologie webowe

Ostatnio dodane

  • Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
  • Jak przygotować sklep internetowy na automatyzację obsługi klienta?
  • Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
  • Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?

Kontakt

Chcesz się z nami skontaktować? Jesteś zainteresowany reklamą lub artykułem sponsorowanym?

Skorzystaj z formularza kontaktowego lub napisz do nas na kontakt@webinside.pl

WebInside.plWebInside.pl
WebInside.pl © 2023 | Mapa strony | Forum | Polityka prywatności
Witaj ponownie!

Zaloguj się do swojego konta

Zapomniałeś hasła?