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("admin@witrna.pl","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:
<?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
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
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:
<?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.).
Offline