" ; else ( II wyświetlenie każdego wiersza for($i ~ O; $i<$elementy; $i++)
~
\ "center\ "> Brak elementów do
648
Część
V • Tworzenie praktycznych projektów PHP i MySQL if($i%2l { II zamienne kolory tła $kolor_tla ~ "#ffffff": } else { $kolor tla ~ "#ccccff": echo " ": echo $lista[$i][l]: if($lista[$i][2]l { echo" - ".$lista[$i][2]: }
echo
" | ";
II stworzenie przycisków dla maksymalnie trzech akcji w wierszu for($j ~ l; $ j<~3; $j++l { $zmienna ~ "akcja".$j:
if($$zmienna l { echo ""; II przyciski przeglądania są wyjątkowe bo stanowią łącza do plików if(($$zmienna ~~ 'podglad -html ' l I I ($$zmienna ~~ 'podglad-html 'l I I ($$zmienna ~~ 'podglad-tekst ' l I I ($$zmienna ~~ 'podglad-tekstu'll wyswietl_przycisk_podglad($lista[$i][3]. $lista[$i][O]. $$zmiennal: ) else { wyswi etl_przycisk( $$zmienna. ' &id~' $lista[$i][O] l: echo
" | ":
}
}
echo " \n":
echo "":
Powyższa
funkcja wyświetla tabelę elementów, w której każdy element może mieć do trzech ze sobą przycisków akcji. Funkcja ta spodziewa się pięciu kolejnych parametrów:
powiązanych
• $tytu1 to
tytuł, który pojawia się na szczycie każdej tabeli - w przypadku pokazanym na rysunku 30.7 wyświetlony jest tytuł Niesubskrybowane listy, który został przekazany w opisanym wcześniej fragmencie kodu akcji Pokaż inne listy .
• $1 i sta to tablica elementów
wyświetlanych w każdym wierszu tabeli. W tym przypadku jest to tablica list, na które użytkownik nie jest obecnie zapisany. Tablica jest tworzona za pomocą funkcji pobi erz _ni esubskrybowane_1 i sty() , omówionej poniżej . Jest to tablica wielowymiarowa, której każdy wiersz zawiera do czterech elementów danych na temat każdego rzędu tabeli. Oto one wyliczone w kolejności:
• $1 i sta [n] [O] powinien zawierać identyfikator elementu, który zazwyczaj stanowi numer wiersza. Podaje on przyciskom akcji identyfikator wiersza, na którym mają wykonywać działania. W przykładzie zostały zastosowane identyfikatory z bazy danych - więcej informacji na ten temat znajduje się poniżej .
• $1 ista[n][l] powinien zawierać
nazwę elementu. Będzie to tekst wyświetlony obok danego elementu. Na przykład w przypadku przedstawionym na rysunku 30.7 nazwą elementu w pierwszym wierszu tabeli jest "Informacje PHP".
Rozdział
30 . • Tworzenie
menedżera
list pocztowych
649
• $1 i sta[nJ [2J i $1 i sta [nJ [3J
są opcjonalne. Są one wykorzystywane do pokazania, na dany temat istnieje większa ilość informacji. Odnoszą się odpowiednio do tekstu tych informacji i ich identyfikatora. Przykład wykorzystania tych dwóch parametrów zostanie opisany podczas prezentacji akcji zobacz- poczte w podrozdziale "Implementacja funkcji administratora" .
że
• Opcjonalne parametry trzeci, czwarty i piąty funkcji są wykorzystywane do przekazywania trzech akcji , które zostaną wyświetlone na przyciskach odpowiadających każdemu elementowi. Na rysunku 30.7 są to trzy przyciski akcji, przedstawione jako Informacja, Pokaż archiwum i Subskrybuj. Te trzy przyciski znalazły się na stronie Pokaż inne listy z powodu przekazania funkcji nazw akcji - i nformacja, pokaz-archiwum i subSkrybUj. Za pomocą funkcji wyswi etl _przyci sk () akcje te zamieniono na przyciski z umieszczonymi na nich nazwami akcji, a także zostały im przypisane odpowiednie akcje. z akcji Pokaż wywoluje funkcję wyswi etl_elementy() w inny sposób, jak można wywnioz ich definicji. Oprócz tego, że posiadają różne tytuły i przyciski akcji, każda z nich stosuje inną funkcję w celu utworzenia tablicy elementów do wyświetlenia. Pokaż wszystkie listy korzysta z funkcji pobi erz _wszystk i e_l i sty() , Pokaż inne listy z pobi erz_ni es ubskrybowa ne_l i sty(), a Pokaż moje listy z pobierz_subskrybowane_l i sty(). Wszystkie te funkcje działają w podobny sposób; wszystkie też pochodzą z biblioteki funkcjifunkcje _listaphp. Każda
skować
Opisana zostanie funkcja pobi erz _ni esubskrybowaneJ i sty(), ponieważ występuje w przykładzie dotychczas omawianym. Kod funkcji pobi erz _ni esubsk rybowane_ l i sty () jest zaprezentowany na listingu 30.8 . .. Listing 30.8. Funkcja pobierz_niesubskrybowane_listy() umieszczona w pliku funkcje_lista .php -
wykorzystywana do utworzenia tablicy list dystrybucyjnych, na które
użytkownik
nie jest zapisany
pobranie list. na które uzytkownik NIE jest zapisany function pobierz_nies ubskrybowane_l i sty($email) ( $lista = array():
II
$zapytanie = "select li sty. id_listy. nazwa_listy. email from li sty left join sub_listy on listy. id_listy = sub_l isty.id_li sty and email='$email' where email is NULL order by nazwaJisty": if($lacz=lacz_bd()) ( $wynik = $lacz->query($zapytanie): if( I$wynik ) { echo 'Pobranie listy z bazy danych n i emożliwe. ': return false: }
$il osc = $wynik->num rows: for($i = o: $i<$ilosc: $i++) ( $wiersz = $wynik->fetch_array(): array_push($lista. array($wiersz[O]. $wiersz[l])): }
return $lista:
Jak można dostrzec, powyższa funkcja pobiera jako parametr adres poczty elektronicznej - powinien być to adres aktualnego użytkownika. Funkcja pobi erz_subskrybowane_l i sty() również wymaga adresu jako parametru, a funkcja pobi erz _wszystki e_l i sty() z oczywistych względów go nie potrzebuje.
650
Część
V • Tworzenie praktycznych projektów PHP i MySQL
Posiadając adres pocztowy subskrybenta, funkcja łączy się z bazą danych i pobiera wszystkie listy, na które użytkownik nie jest zapisany. Jak zwykle w tego typu zapytaniach MySQL korzysta się z wyrażenia LEFT JOI N w celu odnalezienia nieodpowiadających elementów. Następnie na wyniku wykonywana jest pętla w celu zbudowania wiersz po wierszu tablicy za pomocą wbudowanej funkcji array_push().
Kiedy znany już jest sposób tworzenia listy, z tymi elementami.
Przeglądanie
można przyjrzeć się
przyciskom akcji
związanym
informacji na temat listy
Przycisk Informacja przedstawiony na rysunku 30.7
wywołuje akcję
"informacja ", która jest
następująca:
case ' informacja' wyswietl _informacje($_GET[ ' id ' ]); break; Aby zobaczyć, jakie wyniki daje funkcja wyswi et l_ i nformacje() , należy
spojrzeć
na rysunek 30,8.
Rysunek 30,8. Funkcja wyswietl_ informacje() przedstawia opis listy dystrybucyjnej
Funkcja ta wyświetla pewne ogólne informacje na temat konkretnej listy dystrybucyjnej, a także liczbę subskrybentów i liczbę rozesłanych na tę listę wiadomości dostępnych w archiwum (kwestia ta zostanie opisana szerzej w dalszej części tego rozdziału) . Kod tej funkcji przedstawiono na listingu 30,9. Usting 30.9. Funkcja wyswietUnformacje() umieszczona w pliku funkcje_wyswietl.php na temat listy II wyświetlenie przechowywa nych i nformacji o funct i on wyswietl _informacje( $id_l isty) ( i f( l$id_listy) { ret urn fal se;
każd ej liśc i e
wyświetla
informacje
Rozdział
30 . • Tworzenie
menedżera
list pocztowych
651
if($info) ( echo "oo . ladny($info[nazwa_listy]). oO oo.l adny( $i nfo[opi s]). I l ość subsk rybentów: $i nfo[ subskrybenciJ I loś ć wiadomości w archiwum: $info[archiwum] oO oo; 00
00.
00.
Aby osiągnąć cel, funkcja wyswiet l _informacje() korzysta z dwóch innych funkcji - pobierz_ '+i nfo_l i sty() i l adny(). Funkcja pobierz_ i nfo_l i sty() dokonuje aktualnego odczytania danych z bazy danych. Funkcja l adny() przeprowadza proste formatowanie danych z bazy poprzez usunię cie ukośników , zamianę znaków nowego wiersza na znaczniki złamania HTML itd. Opisano pobieżnie funkcję pobi erz_ i nfo_1 i sty() znajduje się w bibliotece funkcjifimkcje_listaphp. Jej kod jest przedstawiony na listingu 30.10. Listing 30.10. Funkcja pobierz_info_listy()
pochodząca
z pliku funkcje_lista.php -
tworzy
informacje na temat listy
function pobierz_info_listy($id_listy) i f(! $idJ isty) ( return false; if( I($ l acz=lacz_bd(») return false; $zapytanie = oOselect nazwa_l istyo opis from listy whe re id_li sty = $wynik = $lacz->query($zapytanie); if(!$wynik) ( echo ooOdczytanie tej listy return fal se;
niemożliwe. ";
$info = $wynik ->fetch_assoc(); $zapytanie = oOse l ect count(*) from subJ isty where idJisty = $wynik = $lacz·>query ($zapytanie);
$idJi sty
if($wynik) ( $wiersz = $wynik->fetch_array(); $info[Osubskrybenci Ol = $wiersz[Ol; $zapytanie = ooselect count(*) from poczta where id_listy = and sta n = °WYSLANYo"; $wynik = $lacz ->query($zapytanie); if($wynik) ( $wiersz = $wynik->fetch_array(); $info[oarchiwumol = $wiersz[Ol; return $info;
.$idJi sty
tablicę zawierającą
652
Część
V • Tworzenie praktycznych projektów PHP i MySQL
funkcja wykonuje trzy zapytania bazy danych, które mają za cel pobranie, odpowiednio: nazwy i opisu listy z tabeli li sty, liczby subskrybentów z tabeli sub_l isty oraz liczby wiadomości wysłanych z tabeli poczta .
Powyższa
Przeglądanie
archiwum listy
Oprócz przeglądania opisu listy użytkownik może poprzez naciśnięcie przycisku Pokaż archiwum obejrzeć wszystkie wiadomości, które zostały wysłane na listę dystrybucyjną. Uruchamia to akcję pokaz-a rch i wum, wywołującą następujący kod:
case 'pokaz-archiwum ' wyswi etl_e l ementy( 'Archiwum l i sty '. pobi erz_nazweJ i sty( $_GEn ' i d' ]) . pobierz_archiwum($_GEn'i d' ] ). 'podglad- ht ml'. 'podglad-tekstu ' . " ): break: ta funkcja korzysta z funkcji wyswiet l_elementy() w celu wyświetlenia różnych elemenktóre zostały rozesłane na listę dystrybucyjną. Elementy te są odczytywane za pomocą funkcji pobi erz_archiwum () pochodzącej z plikujimkcje_lista.php. Funkcja ta jest przedstawiona na listingu 30.11 .
Również
tów
wiadomości,
Listing 30.11. FunkCja pobierz_archiwum() umieszczona w pliku funkcje_lista.php - tworzy tablice z danej listy wiadomości
zachowanych
w archiwum
function pobierz_a rchi wum( $id_l isty) { II zwraca tabl i cę zarchiwizowanych wiadomości dla danej listy II tablica posiada wiersze (id_poczty. temat) $lista = array(): $nazwa_listy = pobierz_nazwe_listy($id_listy); $zapytani e = "se l ect i d_poczty. temat. id J i sty from poczta where idJ isty = "'.$idJisty . '" and stan = 'WYSLANY ' order by wyslany ": if($ lacz=lacz_bd()) { $wynik = $lacz->que ry($zapytanie): if( !$wynik) { echo "Pobranie l isty z bazy da nych $zapytanie return fal se:
ni emoż l iwe. ":
}
$ilosc = $wynik->num_rows: for( $i = O: $i<$i losc: $i++) { $wiersz = $wynik->fetch_array(): $tabl ica_wiersz = array( $wiersz[O] . $wiersz[ l ] . $nazwa_l isty. $id_l isty): array_push($lista. $tab l ica_wierszJ: }
return $l ista:
Również powyższa ści,
które
funkcja pobiera potrzebne informacje - w tym przypadku dane wiadomo- z bazy danych i tworzy tablicę, którą można przekazać funkcji
zostały rozesłane
wyswi etl_elementy().
Rozdział
30 .• Tworzenie
menedżera
list pocztowych
653
Zapisywanie i wypisywanie Na
list dystrybucyjnych, przedstawionej na rysunku 30.7, każda posiada przycisk umoż zapisanie się na nią. Podobnie jeżeli użytkownicy skorzystają z opcji Pokaż moje listy w celu udostępnienia list, na które sąjuż zapisani, obok każdej z nich zostanie wyświetlony przycisk Nie subskrybuj. liście
liwiający użytkownikom
Przyciski te uruchamiają akcje subskrybuj i nie-subskrybuj, które fragmenty kodu:
wywołują
odpowiednio
następu
jące
case 'subskrybuj ' subskrybuj(pobierz_email(), $_GET[ ' id ' J); wyswietl_elementy( 'Subskrybowane listy ', pobierz_subskrybowane_listyCpobierz_emailC», ' i nformacja " 'pokaz-archiwum', 'ni e-subskrybuj' ) ; break; case 'nie-subskrybuj' niesubskrybujCpobierz_email(), $_GET['id'J); wyswietl_elementy( 'Subskrybowane listy'. pobierz_subskrybowane_l i sty(pobierz_emai l C». 'i nformacja " 'pokaz-archiwum'. 'ni e-subskrybuj' ) ; break;
W obu przypadkach wywoływana jest funkcja (subskrybuj() lub niesubskrybuj()), po czym lista list, na które użytkownik jest zapisany, zostaje wyświetlona na nowo za pomocą funkcji wyswietl_ lementy() .
Funkcje subskrybuj () i ni esubskrybuj ()
są przedstawione
na listingu 30.12 .
.l.isting 30.12. Funkcje subskrybuj() i niesubskrybuj() umieszczone w pliku funkcje_'ista.php i usuwają subskrypcje użytkownika II dopisanie adresu e-mail do listy
function subskrybuj ($emai l , $id_listy) { H(( I$email) II CI$ id_li sty) II Cli stnieje_l ista($id_listy)) II (Iistnieje_subskrybent($email») { return false; jeżeli już zapisany wyjście if(zapisany($email. $id_listy)) return fa l se;
II
if(!$lacz~lacz_bdC»
return fa l se;
$zapytanie
~
"lnsert lnto sub ll sty values ('" .$email
$wynik ~ $lacz->query($zapytanie); return $wynik; II usunięcie tego adresu e-mail z listy function niesubskrybuj($email. $id_listy) H(C I$email) II ( l$idJi sty)) { return false;
$ld ll sty)",
dodają
654
Część
V • Tworzenie praktycznych projektów PHP i MySQL
return fa l se; $zapytanie
~
"delete from sub_listy where emai l
"'.$email.'" and idJisty
~
"'.$idJisty.""'.
$wynik ~ $lacz->query($zapytanie); return $wynik;
Funkcja subsk rybuj () dodaje do tabeli sub_1 i sty wiersz ni esubskrybuj () usuwa ten wiersz.
odpowiadający
subskrypcji ; funkcja
Zmiana konfiguracji konta Naciśnięcie przycisku Konfiguracja konta uruchamia jest następujący:
akcję
konfiguracja-konta. Kod tej akcji
case 'konfiguracja-konta' wyswietl_form_konta(pobierz_email() . pobierz_nazwisko(pobierz_email(». pobierz_typ_mime(pobierz_email(»). break; Jak można dostrzec, zostaje ponownie zastosowana funkcja wyswi et l_farm_konta ( ), za pomocą której konto było tworzone. Tym razem jednak przekazywane sąjej szczegóły aktualnego użytkow nika, wyświetlone następnie w formularzu w celu ułatwienia edycji. Kiedy użytkownik naciśnie przycisk wysyłający formularz, zostaje uruchomiona akcja zachowaj -konto, jak opisano poprzednio.
Zmiana
hasła
Naciśnięcie
jący
kod:
przycisku Zmiana
hasła
uruchamia
akcję
zmiana-ha s1a, która
wywołuje następu
case 'zmiana-hasla' wyswiet l_form_has la(); break; Funkcja wyswi et l_form_has ł a () (pochodząca z biblioteki funkcje _ wyswietl.php) po prostu wyświetla formularz pozwalający użytkownikowi na zmianę jego hasła, Formularz ten przedstawiamy na rysunku 30,9, Kiedy użytkownik naciśnie przycisk Zmiana hasła, na dole tego formularza zostanie uruchomiona akcja zachowaj -zmi ane- has l a, Jej kod wygląda następująco:
case 'zachowaj -zmiane-hasla' if(zmien ha slo(pobierz email() , $ POST[' stare haslo'] , $ POST[ ' nowe haslo'], $ POST['nowe haslo2']» { echo "OK: Hasł o zmienione. ": } else ( echo "Przepraszamy, ale ha s ło nie '+zmienione. " , wyswietl_form_hasla():
mogło zostać
}
break: Jak można dostrzec, powyższy kod dokonuje próby zmiany hasła za pomocą funkcji zmien_has1o() oraz informuje użytkownika o wyniku tych działań, Funkcja zmien_has1o() znajduje się w bibliotece funkcjifunkcje_uwierz,php, Kod tej funkcji jest przedstawiony na listingu 30,13,
Rozdział
30 . • Tworzenie
menedżera
list pocztowych
655
Rysunek 30.9. Funkcja wyswietl_form_hasla() pozwala użytkownikom na zmianę ich haseł
Zmiana
Listing 30.13. Funkcja zmien_haslo() i uaktualnia hasło użytkownika
pochodząca
z pliku funkcje_uwierz.php -
function zmien haslo($email. $stare haslo. $nowe_haslo, $nowe_haslo_konf) { II zmiana hasła dla adresu. stare_ha slo na nowe haslo II zwraca true lub false
II jeżeli stare hasło jest prawidłowe II zmiana hasła na nowe_haslo i zwraca true II w przeciwnym wypadku zwraca false if (loguj($email. $stare_haslo» ( if($nowe_haslo~~$nowe_haslo_konf)
if ( I($lacz ~ lacz_bd(») { return false; }
$zapytanie ~ "update subskrybenci set haslo ~ shal("'.$nowe_haslo."') where email ~ '''.$email. "''' ; $wynik ~ $lacz->query($zapytanie) ; return $wynik; else { echo "Hasła nie pasują do siebie. "; else { echo "Stare
hasło nieprawidłowe. ";
return false; II stare
hasła
hasło było nieprawidłowe
sprawdza prawidłowość
656
Część
V • Tworzenie praktycznych projektów PHP i MySQL
Funkcja ta jest podobna do innych, opisanych poprzednio, funkcji ustawiających i zmieniających Porównuje ona dwa nowe hasła wprowadzone przez użytkownika w celu upewnienia się, że są one identyczne. W razie pozytywnej odpowiedzi dokonuje próby uaktualnienia hasła użyt kownika w bazie danych. hasła.
Wylogowanie Kiedy
użytkownik naciśnie
tę akcję
znajduje
się
w
przycisk
wyl ogowa ni e. Kod wykonywany przez przetwarzania głównego pliku i jest następujący:
Wyjdź, wywoła akcję
części wstępnego
if($akcja ~~ ·wylogowa nie ·) unset($akcja): unset($_SESS ION): session_destroy(): Powyższy fragment kodu pozbywa się zmiennych sesji oraz niszczy sesję . usuwa on również zmienną $akcj a. Oznacza to, że następuje wejście do case bez akcji i zostaje wykonany następujący kod:
Należy zauważyć, że głównego wyrażenia
default if( Isprawdz_logowanie()) ( wyswietl_form_log($akcja): }
break:
Pozwoli to na zalogowanie
się
innego
użytkownika bądź
tego samego, ale jako innej osoby.
Implementacja funkcji administratora dana osoba zaloguje się jako administrator, otrzyma dodatkowe opcje menu. Jest ono przedstawione na rysunku 30.10.
Jeżeli
Rysunek 30.10. Menu administratora pozwala na tworzenie i obsługę list dystrybucyjnych
Rozdział
30 . • Tworzenie
menedżera
list pocztowych
657
Dodatkowe opcje administratora to Utwórz listę (tworzenie nowej listy dystrybucyjnej), Utwórz wiadomość (tworzenie nowej wiadomości) oraz Pokaż wiadomość (przeglądanie i wysyłanie wiadomości , które nie zostały jeszcze rozesłane). Każda z tych opcji zostanie opisana osobno.
Tworzenie nowej listy Jeżeli administrator wybierze konfigurację nowej listy poprzez naciśnięcie przycisku Utwórz uruchomi akcję stworz - l i ste, która jest skojarzona z następującym kodem:
listę,
case 'stworz-liste" wyswietl_form_listy(pobierz_email(»; break;
Funkcja wyswi et 1_ form _l i sty () wyświetla formularz pozwalający administratorowi na wprowadzenie danych nowej listy. Została ona umieszczona w plikufunkcje_wyswietl.php. Funkcja wyświetla zwykły HTML, tak więc nie zostanie tu opisana. Wynik uruchomienia tej funkcji jest przedstawiony na rysunku 30.11 . Rysunek 30.11 . Opcja Stwórz listę wymaga od administratora wprowadzenia nazwy i opisu nowej listy
abVa
Us~
Ma3r~J.i',i!!r!W
01'10 Hs~'
r~rupa
j
tirm:!wa.
Z4Wi.". into:".oj. dla pc.nowo""".,
"zal.nt.ere!Jowan!"Ch .5J:ran...
. ...
10"""0".6"
.....
... ...
i
innych
....
Kiedy administrator kliknie przycisk Zapisz listę, zostaje uruchomiona akcja zachowaj - l i ste, która wywołuje następujący kod w pliku indeks.php: case 'zachowaj -l i ste ' : if(zachowaj_l i ste( $_SESSION[ ' uzyt_admi n' J. $_POST) ( echo "Nowa l ist a dodana "; wyswi etl_el ementy( 'Wszystkie l i sty ' . pobi erz_wszystki e_l i sty() . ' i nformacja ' . ' pokaz-archi wum ' . ' ' l; } else { echo " Li sta ni e mcg ł a zost a ć zachowa na . p roszę . 'ponownie. "; break;
spróbowa ć
'
658
Część
Jak
V • Tworzenie praktycznych projektów PHP i MySQL
dostrzec, kod próbuje przechować dane nowej listy, po czym usiłuje wyświetli ć nową list. Dane listy s ą przechowywane za pomoc ą funkcji zachowaL l i ste(). Kod tej funkcji jest przedstawiony na listingu 30.14. można
li s tę
Listing 30.14. Funkcja zachowaLliste() dystrybucyjną
w bazie danych
pochodząca
z pliku funkcje_lista.php -
umieszcza no wą listę
II dodanie nowej l isty do bazy danych function zachowaj liste($uzyt admin. $szczego ly) if(lwypelniony($szczegoly))-{ echo "Wszystkie pola muszą być wypełnione. Proszę spróbować ponownie. ": return fa l se: else ( if(lsprawdz_uzyt_admin($uzyt_admin)) ( return false: II jak funkcja ta została wywołana przez kogoś. kto nie jest administratorem7 if(I($lacz~lacz_bd()))
return fa l se;
$zapytanie ~ "select count(*) from listy where nazwa_listy $wynik ~ $lacz->query($zapytanie); $wiersz ~ $wynik->fetch_array(); if($wiersz[O] > O) { echo "Przepraszamy. istni eje return fal se; $zapytanie
~
już
~
' ($szczegoly['nazwa ' ]}''':
l ista o takiej nazwie. ";
"i nsert i nto listy values (NULL. $szczegoly['nazwa'] ·.. . $szczegoly[ 'opis ' ] . . ' )";
$wynik ~ $lacz->query($zapytanie); return $wynik;
funkcja przeprowadza kilka testów prawidłowości przed zapisaniem danych do bazy. Sprawdza, czy podano wszystkie dane, czy aktualny użytkownik posiada uprawnienia administratora oraz czy nazwa listy jest unikatowa. Jeżeli wszystkie testy zostaną wykonane bezbłędnie, lista dodawana jest do tabeli l i sty bazy danych.
Powyższa
Wysyłanie
nowych wiadomości
Teraz opiszemy główne zadanie aplikacji: wysyłanie i rozsyłanie wiadomości na listy dystrybucyjne. Kiedy administrator naciśnie przycisk Utwórz "'poczte w następujący sposób:
wiadomość,
zostanie uruchomiona funkcja stworz-
case 'stworz-poczte ' ; wyswietl_form_poczty(pobierz_email()); break; Administrator ujrzy formularz taki jak przedstawiony na rysunku 30.12.
Rozdział
Rysunek 30.12. Opcja Stwórz pocztę dostarcza administratorowi interfejsu służącego do wysyłania plików
• el
tr
30 . • Tworzenie
menedżera
list pocztowych
659
loCłłłlosł
wiadomości
Wersja tekstowa WersjaHTML ObrazKI (op<)onalnle)
Ob~kl
Obrazek 2
1 Paegłqdai... r-------~~------------~~'rl~ p~ae~91~qd~.i~-~
[jlZeglqdai_.
Obf1lZel< 3
PlZe I d• .. ,
Obral-ek 4
.1 Przeglądaj... ( Pl'leglgdah" PrzEt I da·...
J
Pf28gl4.da·... Prze9Iądaj..._
dla potrzeb tej aplikacji przyjęto założenie, że administrator utworzył wiaoffline zarówno w formacie HTML, jak i tekstowym oraz że wyśle obie wersje przed rozesłaniem. Taka implementacja została wybrana w celu umożliwienia administratorom korzystania z ich ulubionych edytorów tekstu do tworzenia wiadomości. Czyni to aplikację o wiele bardziej przyjazną dla użytkownika.
Należy pamiętać, że domość
Można dostrzec, że formularz ten posiada wiele pól, które musi wypełnić administrator. Na górze znajduje się okienko wyboru pozwalające na wybór listy dystrybucyjnej. Administrator musi także wprowadzić temat wiadomości - jest to linia tematu ewentualnego listu elektronicznego.
Wszystkie pozostałe pola formularza to pola wysyłania plików, które można rozpoznać po umieszczonych obok nich przyciskach Przeglądaj (Browse). Aby rozesłać wiadomość, administrator musi dostarczyć zarówno wersję tekstową, jak i HTML tej wiadomości (choć może to oczywiście zostać zmienione). W formularzu znajduje się również kilka opcjonalnych pól obrazków, za pomocą których administrator może wysłać dowolne obrazki osadzone wcześniej w HTML. Każdy z tych plików musi zostać określony i wysłany oddzielnie. Przedstawiony formularz jest podobny do zwykłego wysyłania plików z tą różnicą, że w tym przypadku jest on zastosowany do wysyłania wielu plików. Wywołuje to konieczność wprowadzenia drobnych zmian w składni formularza oraz w sposobie obsługi wysłanych plików w miejscu ich przeznaczenia. Kod funkcji wyswi etl_ form _poczty() jest przedstawiony na listingu 30.15.
660
Czę ś ć
V • Tworzenie praktycznych projektów PHP i MySQL
Ustlng 30.15. Funkcja wyswietUorm_poczty() pochodząca z pliku funkcje_wyswietl.php umożliwiający wysyłanie
wyświetla formularz
plików
function wyswietl_form_poczty($email. $id_listy=O) ( II wyświetla formularz HTML pozwalający na wysyłanie nowych wiadomoś ci global $szerokosc_tabel i; $lista = pobierz_wszystkie_listy(); $listy = sizeof($lista) ; ?> |