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