You are on page 1of 17

Szybki kurs PHP

Dostpny dziki firmie Netteria.NET tworzenie stron www, projektowanie stron internetowych, tworzenie
oprogramowania na zamwienie.

Zezwala si na dowolne rozpowszechnianie w sieci internet pod warunkiem umieszczenia odnonika do serwisu https://netteria.net

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


Wstp
Pierwszy program
Zmienne
Operatory w PHP
Typy danych
Tablice
Stae
Wyraenia decyzyjne
Ptle w PHP
Wasne funkcje
Cookie

Wstp

PHP (PHP Hypertext Preprocesor) jest jzykiem programowania przeznaczonym do


tworzenia dynamicznych i interaktywnych serwisw WWW. Jego ogromn zalet jest fakt,
e w zasadzie jest on niezaleny od platformy systemowej. Program dziaajcy pod
kontrol systemu linux czy te unix powinien rwnie bez problemu zadziaa pod
windows. Jest to niewtpliwie wielka zaleta poniewa piszc program nie musisz
specjalnie zawraca sobie gowy na jakim systemie zostanie on uruchomiony.

Program PHP mona pozna po tym, e ich rozszerzenie jest najczciej *.php lub *.php3.
Istnieje wprawdzie moliwo takiego skonfigurowania serwera na ktrym dziaaj
programy PHP, e rozszerzenie moe by dowolnie okrelone, np. *.html, jednak chyba
doskonaa wikszo ma wanie te dwa rozszerzenia. Dodam e *.php3 jest
rozszerzeniem dla starszej wersji jzyka.

Czym waciwie jest program napisany w PHP? Program PHP jest programem
dziaajcym po stronie serwera. Tam te si wykonuje a wyniki w postaci gotowego kodu
HTML s przesyane do klienta, czyli do przegldarki ktra daa dostpu do strony. To
kolejna zaleta PHP. Po pierwsze, e wynik Twojej pracy w postaci kody rdowego nie
jest oglnie dostpny (przecie nie zawsze chcesz pokaza innym swj kod) a po drugie
nie obciasz klienta a co za tym idzie nie musisz bra pod uwag parametrw
technicznych sprztu na ktrym pracuje.

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


Aby moc zacz pisa swoje pierwsze programy potrzebujesz jakiegokolwiek edytora
tekstu oraz miejsca na serwerze obsugujcym PHP. Istnieje take moliwo
zainstalowania serwera na lokalnym komputerze i pisania oraz testowania programw
nawet bez dostpu do sieci. Jeli jeste zmuszony skorzysta z takiego rozwizania to
polecam Fox Server - Pakiet dla Windowsa instalujcy PHP, serwer Apache, baze danych
MySQL i phpMyAdmin, lub PHPTriad.

Pierwszy program

Jeeli uporae si ju z zorganizowaniem sobie stanowiska do pracy z PHP (zdobye


miejsce na serwerze obsugujcym PHP lub zainstalowae go na lokalnym komputerze)
to napiszmy pierwszy program niemiertelne "Witaj wiecie"

<?php
print("Witaj wiecie\n");
?>

Zapisz ten program w pliku z rozszerzeniem *.php i wpisz adres do niego w przegldarce

W wyniku dziaania naszego programu w przegldarce powinien pojawi si napis: " Witaj
wiecie ". Wszystko to dziki funkcji PHP print, ktra umoliwia wywietlenie danych.

Co wida jeszcze ciekawego w tym krciutkim programie ? Widzimy tu dwa znaczniki: " <?
php " i " ?> ". Znaczniki te informuj interpreter jzyka PHP na serwerze gdzie zaczyna si
nasz program i gdzie koczy. I wanie to co znajduje si pomidzy tymi znacznikami
wykonuje i przesya do przegldarki jako wynik w postaci kodu HTML. Kod PHP zazwyczaj
czy si z kodem HTML. Wyglda to tak:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


<HTML>
<HEAD>
<TITLE> Mj pierwszy program</TITLE>
<META NAME="Author" CONTENT="Jan Kowalski ">
<META NAME="Keywords" CONTENT="php, skrypt, prpgram ">
<META NAME="Description" CONTENT="Strona z moim pierwszym
programem w PHP">
</HEAD>
<BODY>

<?php
print("Witaj wiecie\n");
?>

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


</BODY>
</HTML>

W ten sposb nasz program stanowi integraln cz strony. Na serwerze


zinterpretowane zostanie jako kod PHP to co jest midzy znacznikami " <?php " i " ?> ".
Oczywicie do klienta zostanie przesane wszystko co znajduje si w dokumencie czyli te
kod HTML ktrych uylimy, po prostu interpreter wyle je razem z wygenerowanym przez
siebie z kodu PHP kodem HTML. Pamitaj jednak, e plik taki rwnie musi by zapisany
z rozszerzeniem *.php.

Zmienne

W PHP zmienne rozpoczynaj si od znaku $. Przypisanie wartoci zmiennej odbywa si


za pomoc operatora przypisania ktrym jest znak =. Wyglda to w nastpujcy sposb:

$miasto = "Londyn";
$liczba = 5;

Zmiennej $miasto nadalimy warto Londyn a zmienna $liczba ma teraz warto


numeryczn 5. Pamitaj o tym e zmienne numeryczne nie s objte cudzysowami.

W PHP nie istnieje ograniczenie co do dugoci nazwy zmiennych, wiadomo jednak e nie
nikt nie bdzie tworzy nazw o jakiej niesamowicie due iloci znakw.

Istniej jednak inne ograniczenia co do nadawania nazw zmiennym. Nazwa zmiennej


powinna si zaczyna od litery lub znaku podkrelenia, po ktrych nastpuje litera, liczba
lub znak podkrelenia.

Naley rwnie pamita, e PHP rozrnia wielko liter, zmienna $numer i $Numer
bd potraktowane jako dwie rne zmienne.

W PHP prcz zmiennych definiowanych przez uytkownika dostpne s rwnie zmienne


tworzone przez system. Jednak nie zawsze wszystkie s dostpne. Zaley to od serwera
na ktrym pracujesz.

Zasig zmiennych

W PHP zmienne globalne maj taki sam zasig. Zasig ten rozciga si rwnie na pliki
doczone. Zmienne globalne aby mogy by uyte wewntrz funkcji musz by
zadeklarowane jako globalne:

Plik lib.inc.php

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


<?php
$zmienna = 123;
?>

Nasz plik z kodem. Powiedzmy index.php

<?php
include( "lib.inc.php ") //doczamy plik w ktrym znajduje si
nasza zmienna

function wypisz_zmienna(){
global $zmienna; //deklaracja wewntrz funkcji zmiennej jako
globalnej

echo $zmienna;
}
wypisz_zmienna();
?>

W wyniki wykonania tego programu powinno wywietli si nam 123.


W PHP istniej rwnie zmienne statyczne, ktre zadeklarowane wewntrz funkcji
umoliwiaj utrzymanie swojej wartoci pomidzy kolejnymi wywoaniami tej funkcji.

<?php
function static(){
static $zmienna = 0; //deklaracja zmiennej jako statyznej
echo $zmienna;
$zmienna++;
}
static();
?>

Kade wywoanie naszej funkcji static zwikszy warto zmiennej o jeden.

Operatory w PHP
W PHP dostpne s nastpujce operatory:
1.Operatory arytmetyczne
2.Operatory bitowe
3.Operatory porwnania
4.Operatory zwikszania i zmniejszania
5.Operatory logiczne
6.Operatory przypisania
7.Operator trjskadnikowy
8.Operator wykonania
9.Operator kontroli bdw
Opis operatorw od punktu 1 do 6 znajduje si w poniszych tabelach:

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


Operatory arytmetyczne

Operato Nazwa Przykad Wynik


r
+ Dodawanie $a + $b Suma $a i $b
- Odejmowanie $a - $b Rnica $a i $b
* Mnoenie $a * $b Iloczyn $a i $b
/ Dzielenie $a / $b Iloraz $a i $b
% Reszta z $a % $b Reszta z dzielenie $a przez
dzielenia $b
Operatory bitowe

Operato Nazwa Przykad Wynik


r
& Iloczyn bitowy $a & $b Bity ustawione w $a i $b s ustawione
| Suma bitowa $a | $b Bity ustawione w $a lub $b s ustawione
^ Rnica $a ^ $b Bity ustawione w $a lub $b, ale nie w obu na raz
symetryczna s ustawione
~ Negacja ~$a Bity ustawione nie s teraz ustawione i
odwrotnie
<< Przesunicie w $a << Przesunicie bitw w $a w lewo o $b krokw
lewo $b
>> Przesunicie w $a >> Przesunicie bitw w $a w prawo o $b krokw
prawo $b
Operatory porwnania

Operato Nazwa Przykad Wynik


r
== Rwny $a == $b True, jeeli $a jest rwne $b
=== Identyczny $a === True, jeeli $a jest rwne $b i s one tych
$b samych typw
!= Rny $a != $b True, jeeli $a jest rne od $b
< Mniejszy $a < $b True, jeeli $a jest mniejsze od $b
> Wikszy $a > $b True, jeeli $a jest wiksze od $b

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


<= Mniejszy lub $a <= $b True, jeeli $a jest mniejsze lub rwne $b
rwny
>= Wikszy lub $a >= $b True, jeeli $a jest wiksze lub rwne $b
rwny
Operatory zwikszania i zmniejszania

Operator, Nazwa Wynik


przykad
$a++ Postinkrementacj Zwraca $a, a nastpnie zwiksza $a o
a jeden
++$a Preinkrementacja Zwiksza $a o jeden i zwraca $a
$a-- Postdekrementac Zwraca $a, a nastpnie zmniejsza $a o
ja jeden
--$a Predekrementacj Zmniejsza $a o jeden i zwraca $a
a
Operatory logiczne

Operato Nazwa Przykad Wynik


r
and Iloczyn logiczny $a and True, jeeli $a i $b maj warto True
$b
or Suma logiczna $a or $b True, jeeli $a lub $b maj warto True
xor Rnica $a xor $b True, jeeli $a lub $b maj warto True, ale
symetryczna nie razem
! Negacja !$a True, jeeli $a nie jest True
&& Iloczyn logiczny $a && $b True, jeeli $a i $b maj warto True
|| Suma logiczna $a || $b True, jeeli $a lub $b maj warto True
Operatory przypisania

Operato Przykad Wynik


r
= $a = $b Przypisuje warto $b do $a.
+= $a += $b Przypisuje warto ($a+$b) do $a. Jest to identyczne z
$a=$a+$b.
-= $a -= $b Przypisuje warto ($a-$b) do $a. Jest to identyczne z $a=$a-

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


$b.
*= $a *= $b Przypisuje warto ($a*$b) do $a. Jest to identyczne z
$a=$a*$b.
/= $a /= $b Przypisuje warto ($a/$b) do $a. Jest to identyczne z $a=$a/
$b.
.= $a .= $b Przypisuje warto ($a.$b) do $a. Jest to identyczne z $a=$a.
$b.
%= $a %= $b Przypisuje warto ($a%$b) do $a. Jest to identyczne z $a=$a
%$b.
|= $a |= $b Przypisuje warto ($a|$b) do $a. Jest to identyczne z $a=$a|
$b.
&= $a &= $b Przypisuje warto ($a&$b) do $a. Jest to identyczne z
$a=$a&$b.
^= $a ^= $b Przypisuje warto ($a^$b) do $a. Jest to identyczne z
$a=$a^$b.
<<= $a <<= Przypisuje warto ($a<<$b) do $a. Jest to identyczne z
$b $a=$a<<$b.
>>= $a >>= Przypisuje warto ($a>>$b) do $a. Jest to identyczne z
$b $a=$a>>$b.
Operator trjskadnikowy jest identyczny jak w C czy C++. Jego skadnia jest nastpujca:
$zmienna = (wyrazenie_1) ? (wyrazenie_2) : (wyrazenie_3);
Zmienna bdzie miaa wartowyraenie_2jeeli wyraeniewarto_1bdzieTRUE(czyli prawdziwe) w
przeciwnym wypadku zmienna bdzie miaa wartowyraenie_3.
Operator wykonania oznaczamy znakiem ` (jest to znak umieszczony na tym samym klawiszu co znak
tyldy) Wyraenie otoczone tymi znakami jest wykonywane na serwerze a zwracana warto
przypisywana zmiennej. Przykadowo aby przypisa do zmiennej$listbiec zawarto katalogu
moemy wykona:$list = `ls -l`. W ten sposb nasza zmienna listing zawiera zawartoci biecego
katalogu na serwerze.
Operator kontroli bdw oznaczamy znakiem @. Umieszczenie tego operatora przed wyraeniem
powoduje e bdy nie bd wywietlane w oknie przegldarki a zostan zapamitane w zmiennej
globalnej$php_errormsg. Naley jednak pamita, e zmienna ta jest nadpisywana przez kolejne bdy.
Do prawidowego uycia tego operatora konieczna jest uaktywniona na serwerze opcjatrack_errors.

Typy danych
PHP sam podczas interpretowania strony ustawia typ zmiennej. To nie programista jawnie ustala jej typ
a jest on ustalany przez PHP w zalenoci od kontekstu w jakim owa zmienna zostaa uyta.
W PHP rozrnia si nastpujce typy danych:
string (text)

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


integer (liczby cakowite)
double (liczby zmiennoprzecinkowe)
array (tablice)
object (obiekty)
typ nieokrelony
String jest typem przechowujcym dane tekstowe. Zarwno pojedyncze sowa jak i cae zdania.
Wszystko to co jest zapisane w cudzysowach, jest traktowane jako tekst (cig). Dotyczy to rwnie
danych numerycznych.
$imie = "Adam";
$wiek = "25";
Zarwno zmienna$imiejak i zmienna$wieks typu string i przechowuj cig. Jeeli wykonasz operacji
arytmetycznych na zmiennych przechowujcych liczby w postaci cigu (czyli zapisanych midzy
cudzysowem), to PHP dokona niejawnej konwersji na typ numeryczny.
$zmienna1 = "10";
$zmienna2 = "5";
$zmienna3 = $zmienna1 + $zmienna2;
Wartozmienna3wyniesie 15. PHP dokona konwersji do typu numerycznego i mimo, e nasze
zmienne byy cigami operacja zostanie wykonana jak na liczbach. Z tego powodu aby mc czy
cigi musimy posuy si innym operatorem.
Operatorem wykorzystywanym do czenia ze sob cigw jest operator . (kropka).
$imie = "Adam";
$wiek ="25";
$osoba = $imie . $wiek;
W ten sposb w zmiennej $osoba zostanie zapisany cig Adam25.
Cig moe by rwnie ujty w apostrofy (). Rnica polega na tym e w cigu objtym cudzysowem
zmienne zapisane w cigu zostaj zamienione na ich wartoci a w cigu objtym apostrofami nie s
zastpowane.
Aby zapisa znaki specjalne w cigu zawartym w cudzysowie musimy uy znaku lewego ukonika (\)
Ponisza tabela przedstawia znaki specjalne w cigu objtym cudzysowami.

Sekwencja Znaczenie
\n nowa linia
\r powrt karetki
\t tabulacja
\\ lewy ukonik
\" cudzysw
\$ znak dolara
W cigu objtym apostrofami jedyne dopuszczalne sekwencje to ukonik (\\) oraz apostrof (\).
Numeryczne typy danych to integer i double. Typ integer reprezentuje liczby cakowite natomiast typ
double liczby zmiennoprzecinkowe (do zapisu liczby zmiennoprzecinkowej uywamy kropki po czci
cakowitej a nie przecinka).

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


$a = 5;
$b = 2.5;
$c = $a + $b;
Dodalimy do siebie zmienn typu cakowitego (integer) oraz zmiennoprzecinkowego (double). Wynik
tej operacji zosta zapisany do zmiennej$ci wynosi 7.5.
Na danych typu numerycznego mona wykonywa wszelkie operacje arytmetyczne. Ich kolejno
wykonywania jest dokadnie taka sama jak w matematyce.
Kolejne typy danych wymagaj nieco szerszego omwienia dlatego powic im osobne rozdziay
kursu.

Tablice
Jednym z typw danych w PHP s tablice. Tablicami nazywamy zbir zmiennych o tej samej nazwie,
jednak zmienne te maj inny indeks. Zmienne znajdujce si w tablicy nazywamy elementami tablicy.
$imiona[0] ="Adam";
$imiona[1] ="Ewa";
W ten sposb utworzylimy dwuelementow tablice imiona. Pod indeksem 1 znajduje si element o
wartoci Adam a pod indeksem 2 Ewa. Dokadnie tak samo inicjujemy tablice wartociami
numerycznymi.
$numer[1] = 123;
W PHP nie jest wymagane podawanie typu danych w tablicy (tak jak nie jest wymagane podawanie
typu zmiennych). Nie trzeba te podawa rozmiaru tworzonej tablicy. W tym miejscy PHP rni si od
wielu innych jzykw gdzie tego typu informacje programista jest obowizany jawnie poda.
Indeksy w tablicy wcale nie musza by po kolei. Mona opuci dowolny indeks.
$imiona[2] ="Adam";
$imiona[15]="Ewa";
Aby wywietli konkretny element musisz poda jego indeks.
echo $imiona[15];
W ten sposb zostanie wywietlony cig Ewa.
Elementem tablicy moe by rwnie warto innej zmiennej.
$imie = "Adam";
$imiona[1] = $imie;
Indeksy w tablicy nie koniecznie musza by numeryczne. Dopuszczalne te jest uywanie cigw
znakw. Tablice tego typy nazywa si tablicami asocjacyjnymi.
$kraje["pl"] = "Polska";
$kraje["de"] = "Niemcy";
Aby odwoa si do elementw tablicy asocjacyjnej mona podawa indeksy tablicy zarwno z
cudzysowach jak i bez nich
echo $kraje["pl"];
oraz
echo $kraje[pl];
w efekcie przynios ten sam skutek. W tym wypadku wywietlenie cigu Polska.

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


Do tej pory dokonywalimy inicjalizacji przy uyciu jawnie podanych indeksw. Mona rwnie
inicjalizowa tablice bez ich podawania
$imiona[] = "Adam";
$imiona[] = "Ewa";
Przy takiej inicjalizacji PHP samo zadba o indeksy. Bd to kolejne wartoci numeryczne (liczone od 0).
Naley bezwzgldnie pamita o nawiasach kwadratowych, poniewa ich opuszczenie nie pozwoli
PHP odrni zmiennej tablicowej od zwykej zmiennej. Skutkiem tego bdzie nadpisanie wartoci
przez kolejn przez nas podan.
Tablice wypeni moemy rwnie przy pomocy funkcjiarray().
$imiona = array("Adam","Ewa","Ula","Magda");
W ten sposb mamy cztero elementow tablice imiona, ktrej indeksy s liczone od 0 do 3. Jeeli
przeszkadza Ci to e indeksy s liczone od 0 moesz uy operatora =>, ktry pozwala na okrelenie
pocztkowego indeksu tablicy.
$imiona = array(1=> "Adam","Ewa","Ula","Magda");
W ten sposb indeksy w tablicy bd liczone od 1 do 4.
W przypadku tablic asocjacyjnych inicjalizowanych za pomoc funkcjiarray()uycie operatora => jest
wrcz niezbdne.
$kraje array("pl" => "Polska", "de"=> "Niemcy", "sk" => "Sowacja");
Ten sposb inicjalizowania tablic asocjacyjnych jest szczeglnie przydatny podczas tworzenia tablic o
duych rozmiarach.

Stae
Czasem w programie potrzebujemy reprezentacji ktra nie ma podlega modyfikacji. Przykadowo
wiadomo e tuzin to 12. W takim przypadku potrzebujemy staego obiektu (nie obiektu w rozumieniu
programowania obiektowego) przechowujcego t informacje. W PHP moemy to osign poprzez
stae. Do definicji staej niezbdne jest specjalne sowo kluczowedefine.
Oto jak powoa do ycia sta:
define("TUZIN",12);
I tak oto mamy staTUZINo wartoci 12. Odwoanie si do tej staej moe wyglda w ten sposb:
echo "Tuzin jest to " . TUZIN;
Wynikiem bdzie wywietlenie "Tuzin jest to 12". Przyjto aby nazwy staych pisa wielkimi literami.
Istnieje jednak jedna zasadnicza rnica w uyciu zmiennych i staych. Wynika to z faktu, e stae nie
s poprzedzone znakiem dolara. Konsekwencj tego faktu jest to e PHP nie moe ich odrni od
zwykego tekstu w procesie zmiany nazwy staej na warto. Dlatego uycie staej w cudzysowie
spowoduje wywietlenie nazwy staej a nie jej wartoci. Dlatego nazwa staej musi zawsze wystpowa
poza cudzysowami. W przykadzie wyej w tym celu uyem operatora zczenia.

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


Wyraenia decyzyjne
Czsto podczas programowania zachodzi potrzeba podjcia decyzji jaka cz kodu ma si wykona w
zalenoci od wystpienia jakiego zdarzenia. PHP umoliwia podjcie przez program takiej decyzji
dziki wyraeniom sterujcym przepywem programu.
Instrukcja if
Oglna posta wyraenia if jest nastpujca:
if(warunek) instrukcja.
Wyraenie if pozwoli na wykonanie kodu tylko gdy warunek jest prawdziwy w przeciwnym przypadku
instrukcja zostanie zignorowana. W instrukcji if mona oczywicie umieci wicej ni jedn instrukcje,
naley jednak wtedy je zamkn w blok kodu objty nawiasami klamrowymi.
<?php
$a=1;
$b=10
if($a > 0){
echo "a jest wiksze od zera i wynosi $a";
echo "b wynosi $b";
}
?>
W naszym przykadzie warunek jest prawdziwy wic wykonaj si zawarte w bloku dwie instrukcje.
Gdybymy jako warunek wpisali na przykad$a < 0, to oczywicie nie wykonaoby si nic.
Podczas budowania warunkw uywa bdziesz operatorw porwnania oraz logicznych, ktre
omwione zostay w poprzednich rozdziaach. Bardziej skomplikowany warunek moe wyglda na
przykad tak:
if($a < 0 && $b !=5) echo "warunek jest prawdziwy";
Mamy tu dwa operatory porwnania ( < jest mniejsze i != -nie rwna si) oraz jeden operator iloczynu
logicznego (&& and). Warunek bdzie prawdziwy jeeli zmienna a bdzie mniejsza od zera i b nie
bdzie rwne 5.
Istniej sytuacje gdy chcemy wykona cz kodu gdy warunek jest prawdziwy ale te chcemy
wykona jak cz gdy jest faszywy. W takim przypadku posuy si fraz else. Aby to zobrazowa
w prosty sposb zmodyfikujemy nasz ostatni przykad.
if($a < 0 && $b !=5){
echo "warunek jest prawdziwy";
{
else{
echo "warunek jest faszywy";
}
Teraz gdy warunek nie bdzie prawdziwy zostanie wywietlony napis: "warunek jest faszywy".
Ale to nie wszystko. Moemy te skonstruowa takie wyraenie, ktre umoliwi nam podejmowanie
decyzji dla wicej ni jednego warunku.Wystarczy posuy si fraz elseif. Po raz kolejny
zmodyfikujemy nasz przykad aby to wyjani.
if($a < 0 && $b !=5){
echo "warunek pierwszy jest prawdziwy";
{
elseif($a > 0 && $b==5){
echo "warunek drugi jest prawdziwy";
}
else{

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


echo "obydwa warunki s faszywe";
}

Instrukcje if mona rwnie zagnieda.


if($a == 1){
echo "a jest rwne jeden";
if($b == 1){
echo "b jest rwnie rwne jeden";
}
else{
echo "b nie jest rwne jeden;
}
}
Instrukcja switch
Instrukcja switch umoliwia wykonywanie czci kodu w zalenoci od wartoci zmiennej podanej jako
argument. Najlepiej przeanalizujmy sobie to na prostym przykadzie.
switch($wiek){
case $wiek > 65:
echo "Witaj emerycie";
break;
case $wiek > 50:
echo "Niedugo zasuony odpoczynek";
break;
case $wiek > 40:
echo "Wspaniay wiek produkcyjny";
break;
default:
echo "Oszczdzaj si. Jeszcze sporo napracujesz";
}
W zalenoci od wartoci zmiennej $wiek wykona si odpowiednia cz kodu. Jeeli adna warto
zmiennej nie bdzie prawdziwa wykona si default (domylna). Naley zwrci uwag na instrukcje
break, ktra powoduje bezwarunkowe opuszczenie instrukcji. Gdybymy jej nie uyli wykonay by si
rwnie kolejne instrukcje wystpujce po tej dla ktrej by prawdziwy warunek.

Ptle w PHP
Niejednokrotnie w naszych programach chcemy aby jaka cze kodu wykonywaa si dopki
okrelony przez nas warunek jest prawdziwy. W tym celu PHP posiada instrukcje ptli.
Ptla while
Oglna posta ptli while jest nastpujca:
while(warunek){
blok instrukcji
}
Podczas dziaania ptli sprawdzany jest warunek. Jeeli warunek ten jest TRUE (prawdziwy), to
wykonywany jest blok instrukcji. Ptla dziaa tak dugo jak dugo warunek jest prawdziwy. Jeeli na
wstpie warunek jest faszywy, to blok instrukcji nie wykona si ani razu.

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


while($a < 10){
echo "Waro jest mniejsza od 10";
$a++;
}
W powyszym przykadzie bdzie wywietlany napis: "Warto jest mniejsza od 10" do momentu kiedy
zmienna a osignie 10. W kadym przebiegu ptli zmienna jest zwikszana o jeden dziki instrukcji$a+
+.

Ptla do while
Ptla do while jest bardzo podobna w dziaaniu do ptli while. Rni si ona jednak tym e warunek
wykonywania sprawdzany jest na kocu.
do{
blok instrykcji
}while(wyraenie);
Nawet jeeli na wstpie warunek nie bdzie prawdziwy, to i tak raz wykona si blok instrukcji.
Zakoczenie wykonywania ptli oczywicie wystpi w momencie kiedy warunek przestanie by
prawdziwy.
Ptla for
Jest to niezwykle przydatna ptla w sytuacji kiedy musimy wykona jak cz kodu okrelon ilo
razy. Oglna posta jest nastuja:
for(warto pocztkowa licznika; sprawdzanie wartoci licznika; zwikszenie
albo zmniejszenie wartoci licznika){
instrukcje
}
W praktyce wyglda to tak:
for($i=0;$i<10;$i++){
echo $i;
}
W ten sposb wywietlimy kolejne wartoci zmiennej $i (od 0 do 9). Ptla for dziaa wedug
nastpujcego algorytmu:
obliczana jest warto pocztkowa licznika
sprawdzana jest warto licznika (warto warunku)
wykonywane s instrukcje zawarte w bloku
obliczana jest kolejna warto licznika (zwikszana lub zmniejszana).
Ptle for moemy na przykad wykorzysta do sekwencyjnego przegldania tablicy.
<?php

$imiona = array(1=> "Adam","Ewa","Ula","Magda");

for($index=1; $index<= 4; $index++){


echo "<br>$imiona[$index]";
}

?>
Powyszy kod spowoduje wypisanie wszystkich imion z utworzonej przez nas tablicy imiona.

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


Ptla foreach
Ptle t stosujemy, gdy mamy tablice o nieznanej iloci elementw ptla przebiega po wszystkich
elementach tablicy. Ptla foreach posiada dwa formaty.
foreach($NazwaTablicy As $ElementTablicy){
instrukcjie
}

foreach($NazwaTablicy As $IndexTablicy => $ElementTabllicy){


instrukcje
}
Pierwsza posta ptli przebiega po podanej tablicy i w kadym przebiegu warto biecego elementu
jest przypisywana zmiennej$ElementTablicya wskanik biecego elementu tablicy jest przesuwany.
Druga posta rni si tylko tym, e do zmiennej$IndexTablicyjest przypisywany biecy indeks
elementu.
Spjrz na przykad zastosowania drugiego rodzaju ptli foreach.
<?php

$kraje =array("pl" => "Polska", "de"=> "Niemcy" , "uk"=> "Wielka Brytania");

foreach($kraje As $domena => $wartosc){


echo "$wartosc: domena \"$domena\" <br>";
}
?>
W wyniku tego programu zostanie wywietlona lista krajw i odpowiadajcych im domen. Lista ta
oczywicie bdzie niezwykle skromna tak jak nasza tablica.

Wasne funkcje
Funkcje definiowane przez uytkownika s niezwykle wanym elementem optymalizacji kodu. Piszc
swoje skrypty w pewnym momencie na pewno zauwaysz, e pewne jego czci s powtarzane.
Moesz to wanie wyeliminowa poprzez zdefiniowanie funkcji ktra bdzie realizowaa to zadanie.
W PHP funkcje musz by zadeklarowane przed ich uyciem. Funkcje mog przyjmowa argumenty
(domylnie argumenty s przekazywane przez warto) lub mog nie przyjmowa adnych
argumentw. Funkcja rwnie moe zwraca jak warto lub nie.
<?php
function suma($a, $b){
$c = $a + $b;
return $c;
}
echo suma(5,5);
?>
Nasza funkcja suma jak wida przyjmuje dwa argumenty. W ciele funkcji sumuje wartoci tych
argumentw i wynik zwraca dziki instrukcji return. Nastpnie wywoujemy to funkcje i podajemy jako
argument funkcji echo. Powinnimy zobaczy w oknie przegldarki wynik.

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


W ciele funkcji moemy rwnie wywoywa inne funkcje.
<?php
function napis(){
echo "Dzi mamy ".gmdate("d m Y");
}

napis();
?>
Mamy tu przykad wywoania funkcji w ciele funkcji przez nas definiowanej. Jednoczenie jest to funkcja
ktra nie przyjmuje adnych argumentw i adnych wartoci nie zwraca. Jej zadaniem jest wywietlenie
napisu informujcego jaki mamy dzie.
Jeszcze maa uwaga na temat organizacji kodu. Definicje swoich funkcji najlepiej umieszcza w innym
pliku, np. lib.inc.php a nastpnie docza go do plikw w jakich zamierzamy uywa zdefiniowanych
przez nas funkcji poprzez wyraenie include.
plik lib.inc.php:
<?php
function napis(){
echo "Dzi mamy ".gmdate("d m Y");
}
?>
plik index.php:
<?
include("lib.inc.php"); //Wyraenie docza plik. Jeli nie znajduje si on
w tym samym katalogu pamitaj aby poda jako argument ca ciek do pliku.

napis();
?>

Cookie
Na pewno niejednokrotnie syszae o cookie. Wiele si o nich mwi ale czsto s to opinie bzdurne i
wyssane z palce przez userw internetu ktrzy nic o nich nie wiedz. Tak naprawd cookie to niewinne
mae pliki tekstowe, ktre pozwalaj na przechowanie niewielkiej iloci danych na komputerze klienta.
Niestety nie jest to zbyt pewna metoda przechowywania danych. Powodem tego jest nietrwao plikw
cookie (na przykad zmiana przegldarki powoduje ich utrat) oraz nie wszyscy uytkownicy bd mieli
wczon ich obsug. Z tego powodu jeeli dane ktre chciaby przechowa s krytyczne dla aplikacji
nie powiniene uywa cookie (alternatywne metody omwione zostan w dalszej czci kursu).
Do czego mog by potrzebne pliki cookie ? Mona je wykorzysta np. do zapamitania preferowanego
przez uytkownika wygldu witryny. Wykorzystywane s rwnie w koszykach sklepowych i
mechanizmach logowania w witrynie. Mona rwnie zapisa w nich ostatni wizyt uytkownika na
stronie.
PHP posiada tylko jedn funkcj przeznaczon do tworzenia cookie,setcookie(). Naley bezwzgldnie
przestrzega zasady, e funkcje setcookie() naley wywoa przed wysaniem kodu HTML. Cookie s
ustawiana przez nagwki HTTP, ktre s wysyane przed kodem HTML. Mona rwnie dokona
buforowania wyjcia w celu opnienia wysyania danych do przegldarki a do chwili zdefiniowania
wszystkich cookie.
Definicja funkcji wyglda nastpujco:
int setcookie(string nazwa, string warto, int czas, string cieka, string domena, int bezpieczny)

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!


Argument nazwa musi wystpi bezwzgldnie, wszystkie inne s opcjonalne. Wartoci bdce cigiem
mona opuci podajc pusty cig (" ") natomiast wartoci numeryczne podajc zero. Tak naprawde
najwaniejsze s trzy pierwsze argumenty. Cig bdcy nazw zmiennej druga warto bdca
wartoci zmiennej natomiast trzecia warto wskazuje warto czasu po ktrym wyganie wano
cookie. Trzeci argument jest znacznikiem czasu Uniksa, ktry mona uzyska jako wynik
funkcjimktime()lubtime(). Kolejne trzy argumenty okrelaj: ciek do plikw dla jakich jest ustawione
cookie, domene dla ktrej jest ustawione cookie oraz liczba cakowita ktra jeli ma warto jeden
powoduje e cookie bdzie tylko przesyane w przypadku transmisji za pomoc protokou SSL.
Odczyt cookie jest niezmiernie prosty. PHP automatycznie umieszcza dane pochodzce z cookie w
domenie globalnej i wartoi s dostpne jak zmienne globalne.
setcookie("zmienna","10", time() + 360);
W ten sposb zapisalimy do pliku cookie zmienn o wartoci 10. Jeeli zechcemy usun cookie
moemy zrobi to na dwa sposoby:
wywoujc funkcje setcookie() z nazw cookie jakie chcemy usun
setcookie("zmienna");
lub podajc czas wyganicia cookie z przeszoci
setcookie("zmienna", "10", time() - 999);
Poprzednie wersje PHP wymagay w przypadku ustawiania wielu cookie za pomoc jednego skryptu
wywoania setcookie() w odwrotnej kolejnoci do tej w jakiej miay by obsugiwane ciasteczka. W
PHP4 nie ma ju tej niedogodnoci. Naley wywoywa funkcje setcookie w tej samej kolejnoci w jakiej
bd przetwarzane przez skrypt cookie.

Netteria.NET 2002 2016 Wszelkie prawa autorskie zastrzeone!


Zezwala si na rozpowszechnianie wycznie pod warunkiem zamieszczenia w odnonika do strony https://netteria.net

plik zabezpieczony copyscape!

You might also like