Bazy danych 2



Pobieranie 21,78 Kb.
Data23.10.2017
Rozmiar21,78 Kb.

PHP – upload plików, automatyczne wysyłanie emaili

Utwórz rozwiązanie umożliwiające przesyłanie, za pośrednictwem witryny internetowej, plików (np. CV) na serwer odbiorcy.



Opis zadania

Plik przesłany przez użytkownika zostanie zapisany na serwerze w katalogu o nazwie upload będącym podkatalogiem public_html. Ponadto informacja o pliku (adres emailowy nadawcy oraz nazwa pliku) zostaną zapisane w bazie danych, w utworzonej w tym celu tabeli. Jeśli użytkownik wyrazi takie życzenie (zaznaczając pole wyboru w formularzu) informacja o przesłaniu pliku zostanie wysłana na jego adres emailowy (także podany za pośrednictwem formularza).



Sposób rozwiązania

  1. W katalogu public_html utwórz katalog o nazwie upload i nadaj mu uprawnienia 703. Katalog ten będzie służył do przechowywania plików przesyłanych przez użytkowników.

  2. W bazie danych utwórz tabelę o nazwie pliki zawierającą dwa pola tekstowe o długości 100 znaków. Obydwa pola tworzą dwupolowy klucz podstawowy tabeli. W pierwszym, o nazwie email zapisywany będzie adres emailowy nadawcy pliku, w drugim, o nazwie nazwapliku, nazwa pliku przesłanego za pośrednictwem formularza.

  3. Utwórz formularz zawierający następujące elementy:

  1. pole tekstowe, w którym użytkownik wpisze swój adres email (pole nazwij f_email),

  2. pole umożliwiające wybór z dysku lokalnego pliku, który zostanie przesłany na serwer (pole nazwij f_plik),

  3. pole wyboru, w którym użytkownik zaznaczy, czy życzy sobie otrzymać potwierdzenie przesłania pliku na adres emailowy (pole nazwij f_potwierdz),

  4. przycisk potwierdzenia Submit.

UWAGA:

Nagłówek formularza, oprócz parametrów method i action musi posiadać dodatkowy parametr, dzięki któremu możliwe będzie przesyłanie plików:

ENCTYPE=”multipart/form-data”


  1. Napisz program w PHP, który, po kliknięciu przycisku Submit w formularzu wykona następujące operacje:

  1. sprawdzi, czy przesłany plik nie jest większy niż 100kB (tylko pliki o takich rozmiarach są akceptowane),

Wykorzystaj funkcję is_uploaded_file – jej opis znajduje się poniżej.

  1. jeśli plik nie jest większy niż 100kB, połączy się z Twoją bazą danych i w tabeli pliki zapisze adres emailowy oraz nazwę pliku przesłanego za pośrednictwem formularza.

UWAGA:

Adres emailowy jest dostępny poprzez tablicę $_POST, a nazwa pliku poprzez tablicę $_FILES – patrz opis poniżej



  1. zapisze plik przesłany za pośrednictwem formularza w katalogu upload.

Wykorzystaj funkcję move_uploaded_file – jej opis znajduje się poniżej,

  1. jeśli w formularzu zaznaczono pole wyboru, wyśle pod wpisany adres emailowy emaila z następującą treścią:

W polu temat tekst: Potwierdzenie przesłania pliku

W treści wiadomości: Potwierdzamy otrzymanie pliku o nazwie nazwa_pliku.

Jako adres from oraz adres zwrotny należy podać własny email,

Wykorzystaj funkcję mail – jej opis znajduje się poniżej



  1. wyświetli w przeglądarce odpowiednią informację, jeśli przesłanie pliku nie powiodło się, a jeśli operacja zakończyła się pomyślnie:

nazwę przesłanego pliku, jego rozmiar i typ oraz, ewentualnie, informację, czy potwierdzenie zostało wysłane na adres emailowy.

Pomocne informacje:

  1. Elementy języka PHP, z których można skorzystać w pliku, który jest uruchamiany na serwerze po kliknięciu przycisku wysyłającego formularz (wskazanym w formularzu jako ACTION):

  1. tablica $_FILES, która zawiera m.in. następujące informacje (zakładamy, że f_plik to nazwa pola w formularzu umożliwiającego wybór pliku z dysku lokalnego):

$_FILES[f_plik][tmp_name] tymczasowa nazwa pliku (nadawana przez system) przesłanego za pomocą formularza,

$_FILES[f_plik][name] właściwa nazwa pliku wybranego w formularzu,



UWAGA: nazwa pliku jest dostępna tylko w ten sposób. Nie można jej uzyskać korzystając z tablicy $_POST

$_FILES[f_plik][size] rozmiar przesłanego pliku (w bajtach),

$_FILES[f_plik][type] typ przesłanego pliku,

$_FILES[f_plik][error] numer błędu:

0 – operacja przebiegła bezbłędnie,

3 – plik nie został przesłany poprawnie,

4 – nie wybrano pliku w formularzu


  1. is_uploaded_file($_FILES[f_plik][tmp_name])

Funkcja logiczna, która zwraca prawdę, jeśli plik został przesłany poprawnie lub fałsz w przeciwnym przypadku (proszę zwrócić uwagę, że jako parametr podaje się TYMCZASOWĄ nazwę pliku – tmp_name). Sprawdzana jest poprawność przesłania pliku wybranego za pomocą pola f_plik formularza.

  1. move_uploaded_file

Funkcja logiczna, która zapisuje przesłany plik na serwerze we wskazanym katalogu. Funkcja wymaga podania dwóch parametrów:

– TYMCZASOWEJ nazwy pliku: $_FILES[f_plik][tmp_name]

– katalogu i właściwej nazwy pliku: ‘katalog’.$_FILES[f_plik][name]

gdzie:


katalog to względna (od katalogu bieżącego) lub pełna (od korzenia) ścieżka wskazująca katalog docelowy, w którym plik ma zostać zapisany;

UWAGA: katalog, w którym ma być zapisany plik musi mieć uprawnienia 703

Przykład:

move_uploaded_file($_FILES[f_plik][tmp_name],’/home/login/upload/’. $_FILES[f_plik][name])



(wystarczy, jeśli uprawnienia 703 ma katalog upload)

  1. mail (to, subject, message, [headres])

Funkcja logiczna wysyłająca emaila pod wskazany adres. Parametrami są:

  • to: adres emailowy odbiorcy emaila (w zadaniu należy pobrać z pola tekstowego formularza f_email);

  • subject: treść tematu wiadomości;

  • message: treść wiadomości – musi składać się z wierszy o maksymalnej długości 70 znaków. Wiersze muszą być zakończone znakami końca linii: \n

  • opcjonalny parametr headers, który może zawierać elementy From oraz Reply-To (każdy zakończony parą znaków \r\n), np.:

‘From: aaa@bbb.pl’ . ”\r\n” . ’Reply-To: aaa@bbb.pl’ , “\r\n”



©operacji.org 2017
wyślij wiadomość

    Strona główna