14. Pozostałe ciekawe funkcje
Transkrypt
14. Pozostałe ciekawe funkcje
KURS PHP 14. POZOSTAŁE CIEKAWE FUNKCJE Funkcji jest cała masa, których nie poruszono w tym kursie. Bardziej ciekawe postaram się właśnie w tej lekcji omówić. Na pewno wielu z Was, czeka z niecierpliwością na funkcję wysyłającą maile z poziomu strony, bez potrzeby uŜywania klientów pocztowych, czy logowania się na pocztę. Co ciekawe, funkcja pozwala na wysyłanie maili z dowolnego konta pocztowego bez logowania się. Pamiętajmy takŜe, Ŝe zwykle nie moŜemy wysyłać maili z domowego serwera – wiele serwerów pocztowych wymaga uwierzytelniania... Ale umieszczając skrypt na zdalnym serwerze mamy 99% szans, Ŝe mail dotrze na miejsce bez problemu. Jest odpowiedzialna za to funkcja mail() składająca się z czterech argumentów – adres e-mail odbiorcy, temat e-maila, treść e-maila i adres e-mail nadawcy. Wysyłanie maili za pomocą funkcji mail() Oto najprostszy przykład funkcji mail(): <?php mail("[email protected]","Temat", "Treść maila", "From: Redaktor redaktor @witryna.pl"); ?> Uwaga: nie uŜywajmy z temacie wiadomości polskich ogonków – zamiast nich ujrzymy wielką literę X. Uwaga: równoznacznie w czwartym argumencie mógłby być sam adres e-mail, ale w praktyce polecam uŜywać tego przykładu, umieszczając adres nadawcy w tagach. Oto przykład bramki internetowej e-mail, którą stworzymy w oparciu o PHP, ale bez oparcia o inne serwery: www.INFORMATYKA.cba.pl KURS PHP <?php if ($_POST[adresat] == TRUE && $_POST[nadawca] == TRUE && $_POST[temat] == TRUE && $_POST[tresc] == TRUE) { mail("$_POST[adresat]","$_POST[temat]", "$_POST[tresc] \n\n Autor maila: $_SERVER[REMOTE_ADDR]", "From: Bramka <$_POST[nadawca]>"); } else { echo "<FORM ACTION=\"index.php\" METHOD=\"post\"> Adresat: <INPUT TYPE=\"text\" NAME=\"adresat\"><br /> Nadawca: <INPUT TYPE=\"text\" NAME=\"nadawca\"><br /> Temat: <INPUT TYPE=\"text\" NAME=\"temat\"><br /> Treść:<br /> <TEXTAREA NAME=\"tresc\"></TEXTAREA><br /> <INPUT TYPE=\"submit\" VALUE=\"Zapamiętaj mnie\"> </FORM>" ;} ?> Uwaga: w treści wiadomości znajdują się znaki specjalne - \n, odpowiadające za przejście do nowej linijki. Pamiętajmy, Ŝe list to nie strona www – nie ma sensu wysyłać html-owych BR itp. gdyŜ w zwykłym formacie wiadomości nic się nie zmieni. Przy okazji jest tam jedna zmienna z tablicy superglobalnej, jakiej jeszcze nie poznaliśmy pokazująca IP autora. IP, Refferer, przeglądarka odwiedzającego Za pomocą PHP moŜemy wyświetlić np. IP gościa, takŜe nazwę jego przeglądarki itp. SłuŜą do tego zmienne z superglobalnej tablicy $_SERVER: • $_SERVER[REMOTE_ADDR] - IP osoby odwiedzającej stronę • $_SERVER[HTTP_REFERER] - adres poprzedniej strony • $_SERVER[HTTP_USER_AGENT] - pełna nazwa przeglądarki www.INFORMATYKA.cba.pl KURS PHP Dogłębne manipulowanie czasem - funkcja date() Funkcja date() (ang. data) za pomocą specjalnych znaków pozwala na wyświetlenie daty i innych ciekawych datowych ciekawostek. Aby wyświetlić datę w formacie DD.MM.RRRR uŜywamy kodu: <?php $data = date("d.m.Y"); echo $data; ?> Uwaga: gdyby nie cudzysłowy wewnątrz funkcji date() nie moglibyśmy wyświetlić separatorów, w tym przypadku kropek – zostałby pominięte. Uwaga: data jest wyświetlana zgodnie z ustawieniami serwera, a nie lokalnego komputera. JeŜeli nie podoba nam się, Ŝe przez dniem, jest czasami zero (do dziesiątego dnia miesiąca), moŜemy łatwo to zero usunąć np. tak: <?php $data1 = date("d"); $data2 = date(".m.Y"); $data1 = str_replace("0","",$data1); echo "$data1$data2"; ?> Innymi ciekawymi znakami dla funkcji date() są (w kolejności alfabetycznej): • a - wyświetla am, lub pm • A - wyświetla AM, lub PM • D - trzy pierwsze litery angielskiej nazwy dnia tygodnia • F - pełna nazwa angielskiej nazwy miesiąca • g - godzina w 12-godzinnym formacie bez zera na początku (od 1 do 12) • G - godzina w 24-godzinnym formacie z zerem na początku (od 00 do 24) • h - godzina w 12 godzinnym formacie z zerem na początku (od 01 do 12) • i - minuta (od 00 do 59) • I - wyświetla 1 w przypadku czasu letniego, 0 w przypadku czasu zimowego www.INFORMATYKA.cba.pl KURS PHP • j - dzień bez zera na początku • l - pełna nazwa angielskiej nazwy dnia tygodnia • L - wyświetla 1 w przypadku roku przestępnego, 0 w przypadku standardowego roku • M - trzy pierwsze litery angielskiej nazwy miesiąca • n - miesiąc bez zera na początku • s - sekundy (od 00 do 59) • t - liczba dni danego miesiąca (od 28 do 31) • w - dzień tygodnia - 0 - niedziela, 1 - poniedziałek, 6 - sobota • y - rok w formacie RR (od 00 do 99) • z - dzień roku (od 00 do 365) Zabezpieczanie aplikacji: maskowanie błedów i okrajanie kodu W celu zabezpieczenia skryptu warto zabezpieczyć go przed wprowadzaniem tagów, albo po prostu ciekawości cwaniaczków. Za pomocą funkcji strip_tags(), którą juŜ poznaliśmy usuniemy wszystkie tagi i znaki znajdujące się pomiędzy nimi. Nie znamy jednak funkcji htmlspecialchars() (ang. znaki specjalne HTML), która wszystkie znaki specjalne zamieni na &znak;, czyli np. zamiast tagu ujrzymy jego html-owy odpowiednik. Uwaga: nie moŜemy dopuścić do pojawienia się błędów na stronie www. Początkowy internauta moŜe się przerazić, jak zobaczy jakieś warningi itp. Czasami coś moŜe się zdarzyć, nie z naszej winy, aby skrypt działał niepoprawnie. MoŜemy jednak nie martwić się o to, poprzedzając nazwę danej funkcji znakiem @. Dla przykładu, uŜyjmy takiego kodu, oczywiście nie tworząc najpierw pliku o całkiem bujnej nazwie...: <?php include "dadarr3w32221da.php"; ?> Teraz uŜyjmy tego kodu: www.INFORMATYKA.cba.pl KURS PHP <?php @include "dadarr3w32221da.php"; ?> Uwaga: oczywiście jeŜeli znalazłby się w danej lokalizacji plik dadarr3w32221da.php oczywiście funkcja zostałaby wykonana. Znak @ zapobiega tylko wyświetleniu błędów z wykluczeniem błędów prasowania kodu (błędy z nawiasami, cudzysłowami itp.). www.INFORMATYKA.cba.pl