You are on page 1of 10

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE

PHP. 101 praktycznych


skryptw
Autor: Marcin Lis
ISBN: 83-7361-127-4
Format: B5, stron: okoo 242

ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

PHP to najpopularniejszy jzyk programowania serwisw internetowych. czy on


w sobie przyjazn skadni z bogat bibliotek funkcji, ktre umoliwiaj szybkie
tworzenie zarwno prostych skryptw, jak i zaawansowanych, opartych na bazach
danych, profesjonalnych aplikacji. Nie bez znaczenia jest te fakt, e jest to jeden
z najatwiejszych do nauczenia si jzykw programowania, co sprawia, e chtnie
sigaj po niego pocztkujcy programici.
Tytu tej ksiki mwi sam za siebie. Znajdziesz w niej 101 skryptw PHP gotowych
do uycia w Twoim serwisie internetowym. Pocztkujcy programici mog po prostu
wkleja prezentowane tu fragmenty kodu na swoje strony, zaawansowani pokusz si
zapewne o ich modyfikacj i dostosowanie do wasnych potrzeb. Wszystkie skrypty
zostay dokadnie objanione, mona wic zapozna si z niuansami programowania
w PHP.
Przykady dotycz:
Korzystania z funkcji internetowych PHP
Uywania systemu plikw do przechowywania danych
Tworzenia licznikw i ksig goci
czenia si z bazami danych
Tworzenia grafiki w PHP
Funkcji zwizanych z dat i czasem
Zabezpieczania stron za pomoc hase i logowania uytkownikw
Cennym uzupenieniem jest zwizy opis operatorw, typw danych, instrukcji
i wybranych funkcji jzyka PHP, z ktrego moesz zawsze skorzysta, gdy czego
zapomnisz. Ksika PHP. 101 praktycznych skryptw powinna znale si na pce
kadej osoby uywajcej tego doskonaego narzdzia.

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Spis treci
Wstp ............................................................................................... 5
Rozdzia 1. Globalna sie..................................................................................... 7
Rozdzia 2. System plikw ................................................................................. 29
Rozdzia 3. Liczniki, ksigi goci itp................................................................... 37
Rozdzia 4. Hasa i logowanie ............................................................................ 63
Rozdzia 5. Grafika i obrazy................................................................................ 77
Rozdzia 6. Data i czas .................................................................................... 103
Rozdzia 7. Bazy danych .................................................................................. 113
Rozdzia 8. Rozmaitoci................................................................................... 149
Dodatek A Krtki przewodnik po PHP .............................................................. 167
Krtka historia PHP ........................................................................................................167
Instalacja..........................................................................................................................167
PHP i HTML ...................................................................................................................168
Znaczniki PHP ..........................................................................................................168
Pierwszy skrypt.........................................................................................................169
Skrypty zewntrzne...................................................................................................170
Komentarze ...............................................................................................................171
Zmienne w PHP ..............................................................................................................172
Typy danych..............................................................................................................172
Konwersje typw ......................................................................................................178
Operatory.........................................................................................................................183
Operatory arytmetyczne............................................................................................183
Operatory logiczne....................................................................................................183
Operatory bitowe ......................................................................................................184
Operatory porwnania ..............................................................................................184
Operatory przypisania...............................................................................................185
Operatory acuchowe ..............................................................................................185
Operatory tablicowe..................................................................................................186
Operatory inkrementacji/dekrementacji....................................................................187
Operatory kontroli bdw........................................................................................187
Operator wykonania polecenia zewntrznego ..........................................................188
Priorytet operatorw .................................................................................................188

PHP. 101 praktycznych skryptw


Instrukcje.........................................................................................................................189
Instrukcje warunkowe...............................................................................................189
Ptle...........................................................................................................................190
Skadnia alternatywna...............................................................................................192
Funkcje ............................................................................................................................193
Argumenty funkcji ....................................................................................................193
Klasy i obiekty ................................................................................................................195
Dziedziczenie............................................................................................................196
Konstruktory .............................................................................................................196
Operator zakresu .......................................................................................................198
Wsppraca z formularzami HTML................................................................................199
Metoda GET..............................................................................................................200
Metoda POST............................................................................................................203
Wsppraca z systemem ..................................................................................................205
Odczyt i zapis plikw................................................................................................205
Data i czas .................................................................................................................208
Bazy danych ....................................................................................................................215
Obsuga baz danych ..................................................................................................215
czenie z baz danych ............................................................................................216
Zapytania...................................................................................................................217
Pobieranie danych.....................................................................................................218

Dodatek B Wybrane funkcje dostpne w PHP .................................................. 221


Funkcje systemu plikw..................................................................................................221
Funkcje sieciowe .............................................................................................................238

Skorowidz...................................................................................... 243

Rozdzia 2.

System plikw
Skrypt 18. Wywietlenie zawartoci katalogu
Zawarto danego katalogu moemy wywietli, wywoujc polecenie danego systemu
operacyjnego. Polecenie takie moemy wprowadzi, ujmujc je w znaki , np. .
Zwrmy jednak uwag, e to nie jest zwyky apostrof, tylko tzw. lewy apostrof, znajdujcy si na klawiaturze pod znakiem tyldy. Wynik wykonania polecenia zewntrznego mona przypisa do zmiennej, a jej zawarto wywietli z kolei na ekranie. Tak
wanie postpimy w niniejszym skrypcie.

 

  

 
 

  !"# # $% &'()(  #* !  &
+ , * -./ ,()(   0/ * ' /
1+* * 23" 4/-5
6
3 78" 3" 4/-89
3 7 :- -2&&;&<9&;3 59
3 7 :- -2&&;&<=9&;3 59
 * 2&>? @A B+3" 4/-* --#->&59
 * 2&CC&59
 * 2&3 &59
 * 2&C&59
D
 2& ,EE&59

 


Za uzyskanie zawartoci wskazanego katalogu odpowiada funkcja  


, nazw tego
katalogu przekazujemy jej jako parametr. Zauwamy, e w skrypcie dokonujemy zamiany
znakw oraz na odpowiednie znaki specjalne interpretowane przez przegldark.
Chodzi nam tu o uwzgldnianie sytuacji, kiedy skrypt jest wykonywany w systemie
Windows i w rezultacie dziaania polecenia 
znajduj si cigi znakw  .

30

PHP. 101 praktycznych skryptw

Przegldarka interpretuje je wtedy jako znaczniki HTML, co prowadzi do zaburzenia


ukadu strony. Mona byoby w tym przypadku zastosowa rwnie konstrukcj:
3 7 :- -2&
C&;&<9
C<=9&;3 59

Przykadowy wynik dziaania w przypadku, gdy serwer dziaa w systemie Windows,


widoczny jest na rysunku 2.1.
Rysunek 2.1.
Efekt wykonania
polecania dir
w skrypcie 18.

Skrypt 19. Wywietlenie zawartoci katalogu II


Poprzedni skrypt (18.) wywietla zawarto wybranego katalogu, mia jednak pewn
wad. Ot korzysta z polecenia zewntrznego, a polecenie takie zalene jest od systemu
operacyjnego, na ktrym uruchomiony jest serwer. Przeniesienie skryptu na inn platform moe zatem spowodowa konieczno jego modyfikacji, cho np. Linux obsuguje
dosowe polecenie 
. Co wicej, kady system moe w inny sposb wywietla list.
Jeli zatem chcemy uzyska za kadym razem taki sam efekt, naley uy innego
sposobu dostpu do zawartoci katalogu. Uyjemy wbudowanych w PHP funkcji operujcych na katalogach dyskowych  
 i
 
. Pierwsza z nich dokonuje
otwarcia katalogu okrelonego przez podany w wywoaniu parametr i zwraca identyfikator pozwalajcy na dalsze operacje. Druga funkcja
 
 pozwala na
odczytanie nazw kolejnych plikw.

  
 

  !"# # $% &'()(  #* !  &
+ , * -./ ,()(   0/ * ' /
1+* *B- 23" 5

Rozdzia 2. System plikw

31

6
31"7-*" 23" 59
 12F31"5- +*1 -9
3 * -* 7&C&9
! -2231 -7-"" 231"55F771 -56
3 * -* '7&31 -&9
3 * -* '7&E*&9
D
3 * -* '7&C&9
  -" 231"59
- +*23 * -* 59
D
 * 2B- 2& ,&559

 


Skrypt 20. Nawigacja po katalogach


Czasami nie wystarczy zwyke wylistowanie zawartoci katalogu na ekranie przegldarki, zaprezentowane w skryptach 18. i 19. Moe na przykad zaistnie potrzeba nawigacji po katalogach. Nic nie stoi na przeszkodzie, aby napisa skrypt udostpniajcy
tak moliwo.
Nazw katalogu do wywietlenia bdziemy przekazywali do skryptu w postaci parametru o nazwie 
, przekazywanego metod . Otrzymamy go, odwoujc si do
indeksu 
w globalnej tablicy . W przypadku, gdy parametr nie zostanie podany,
zostanie wywietlona zawarto katalogu biecego. Do pobrania zawartoci katalogu
wykorzystamy znan z poprzednich skryptw kombinacj funkcji  
oraz
 

. Tym razem jednak w ptli  sprawdzamy, czy aktualnie pobranym elementem
jest plik czy katalog. Jeli jest to plik, wywietlamy po prostu jego nazw, jeli jednak
natrafimy na katalog, tworzymy odnonik HTML.
Odnonik tworzymy za pomoc znacznika  . Jego parametr  okrela pen ciek
do aktualnie uzyskanego (przez wywoanie funkcji
 
) katalogu. Czyli jeli na przykad jestemy w katalogu o nazwie d:\a i natrafilimy na podkatalog obrazy, odnonik
bdzie mia posta:
CG7&",EEH#&H#

Po utworzeniu odnonika na wszelki wypadek wykonujemy operacj usunicia zduplikowanych znakw (\),za co odpowiada linia ! " 

#$%%%%$& $%%$&
!'. Duplikaty te mog pojawia si przy przekazywaniu parametrw do skryptu,
naley si wic przed tak ewentualnoci zabezpieczy.

  
 

  !"# # $% &'()(  #* !  &
+ , * -./ ,()(   0/ * ' /
1+* * 23" 5
6

32

PHP. 101 praktycznych skryptw


 !" 23" 59
3" 7B- "259
31"7-*" 23" 59
 12F31"5- +*1 -9
! -2231 -7-"" 231"55F771 -56
 1231 -77&'&5 * *+-9
 12 :" 23" '&EE&'31 -556
3 *7&CG7E&! ,(IJ')')'(,K) *"-L'!&9
3 *'7&" 7&'3" '&EE&'31 -'&E&&'31 -'&&9
3 *7 :- -2&EEEE&;&EE&;3 *59
- !2&3 *&59
D
- -6
- !2&31 -&59
D
- !2&C&59
D
  -" 231"59
D
03" 73:=MN" NO9
123" 77NN53" 7&'&9
 23" 59

 


Skrypt 21. Usunicie zawartoci katalogu


Katalog moemy skasowa dziki funkcji
( 
. Niestety, aby operacja taka zakoczya si sukcesem, musi on by pusty. Aby wic skasowa katalog wraz z zawartoci, musimy napisa wasn procedur. Nazwiemy j
() 
. Nietrudno si
domyli, e bdzie ona dziaaa rekurencyjnie. Co zatem naley zrobi? Przede wszystkim, otworzy katalog, korzystajc z funkcji  
, a nastpnie odczyta jego
zawarto w ptli . Jeli natrafimy na plik, po prostu go usuwamy (funkcja *
!), jeli trafimy na katalog, rekurencyjnie wywoujemy procedur
() 

z jego nazw (naley poda pen ciek dostpu) jako parametrem. Po zakoczeniu
ptli zamykamy katalog za pomoc funkcji # 
 oraz usuwamy go, wywoujc
funkcj
( 
.
Uwaga: funkcje *! i
( 
 nie zadziaaj poprawnie, jeli katalogi i pliki przekazywane im jako parametry nie bd miay odpowiednio ustawionych praw dostpu!

  !"# # $% &'()(  #* !  &
+ , * -./ ,()(   0/ * ' /
1+* *-/P- 23" 5
6
031"7-*" 23" 59
 12F31"5- +*1 -9
! -2231 -7-"" 231"55F771 -56
 1231 -77&'&QQ31 -77&''&5 * *+-9
 12 :" 23" '&EE&'31 -556
0-/P- 23" '&EE&'31 -59
D
- -6
0+* *2&3" EE31 -&59
D

Rozdzia 2. System plikw

33

D
  -" 231"59
/" 23" 59
D
-/P- 2&*#: B+&59


Skrypt 22. Rozmiar katalogu


Bardzo czsto zachodzi potrzeba ustalenia, ile miejsca na dysku zajmuje zawarto
wybranego katalogu. Aby si tego dowiedzie, naley po prostu zsumowa wielko
wszystkich zawartych w nim plikw, pamitajc jednak, e katalog moe mie podkatalogi. Naley wic napisa procedur rekurencyjn.
W rzeczywistoci, funkcja sumujca wielkoci plikw bdzie bardzo podobna do
funkcji usuwajcej pliki i katalogi w skrypcie 21. Naley po prostu zamieni wywoania *! na +,. Za przechowywanie aktualnie zliczonej wielkoci odpowiada
bdzie zmienna ,.

  !"# # $% &'()(  #* !  &
+ , * -./ ,()(   0/ * ' /
1+* *"  #-23" 5
6
3 #-7)9
031"7-*" 23" 59
 12F31"5- +*1 -9
! -2231 -7-"" 231"55F771 -56
 1231 -77&'&QQ31 -77&''&5 * *+-9
 12 :" 23" '&EE&'31 -556
3 #-R70"  #-23" '&EE&'31 -59
D
- -6
3 #-R701 - #-2&3" EE31 -&59
D
D
  -" 231"59
- +*3 #-9
D
- !2"  #-2&*#: B+&559


Skrypt 23. Kopiowanie katalogu


Kopiowanie zawartoci jednego katalogu do drugiego to kolejny przykad wykorzystujcy funkcje operujce na plikach i katalogach oraz rekurencj. Struktura skryptu
jest bardzo podobna do dwch poprzednich (21. i 22.). Wykorzystujemy jednak kilka
dodatkowych funkcji: +-, (! 
 oraz #.. Pierwsza z nich zwraca
warto 
*, jeli plik (lub katalog) podany jako parametr istnieje, a warto +
w przeciwnym przypadku Druga ((! 
) tworzy katalog o podanej nazwie, natomiast
trzecia (#.) wykonuje kopiowanie pliku. Naley zwrci uwag, e funkcja (! 

potrafi jedynie utworzy podkatalog w ju istniejcym katalogu. Na przykad instrukcja
(! 
$/*0/!/1
+!$' oznacza utworzenie podkatalogu o nazwie grafika w katalogu /pub/pliki, ktry musi istnie na dysku.

34

PHP. 101 praktycznych skryptw



  !"# # $% &'()(  #* !  &
+ , * -./ ,()(   0/ * ' /
1+* *  23 + -;3"- * *5
6
 12F1 -:-L 23"- * *55- +*1 -9
31"7-*" 23 + -59
 12F31"5- +*1 -9
! -2231 -7-"" 231"55F771 -56
 1231 -77&'&QQ31 -77&''&5 * *+-9
 12 :" 23 + -'&EE&'31 -556
/" 23"- * *'&EE&'31 -59
  23 + -'&EE&'31 -;3"- * *'&EE&'31 -59
D
- -6
 2&3 + -EE31 -&;&3"- * *EE31 -&59
D
D
  -" 231"59
- +* +-9
D
 2& BS"T&;& B" -&59


Skrypt 24. Wywietlenie plikw okrelonego typu jako odnonikw


Skrypt 18. pozwala na wywietlenie zawartoci wybranego katalogu, natomiast skrypt
20. realizacj nawigacji po katalogach. Bardzo przydatn funkcj bdzie rwnie
wywietlenie plikw o zadanych rozszerzeniach w postaci odnonikw (rysunek 2.2).
Rysunek 2.2.
Pliki typu jpg
wywietlone
w postaci odnonikw

Zadanie to realizuje funkcja 1 


. Jej parametry to nazwa katalogu  
oraz
lista rozszerze oddzielonych od siebie znakiem rednika -2. Za pomoc
funkcji -  wyodrbniamy poszczeglne rozszerzenia z listy -2 i zapisujemy je w tablicy 

. Zawarto wybranego katalogu odczytujemy w ptli ,


korzystajc z funkcji
 
. Z nazwy kadego pliku wyodrbniamy jego rozszerzenie i sprawdzamy, czy odpowiada ono jednej z wartoci zapisanych w tablicy 

.
Jeli tak, uwzgldniamy dany plik na budowanej licie. Jeli nie, przechodzimy do
kolejnej iteracji ptli. Odnoniki konstruujemy za pomoc typowej konstrukcji ze znacznikiem  .

Rozdzia 2. System plikw



  !"# # $% &'()(  #* !  &
+ , * -./ ,()(   0/ * ' /
1+* *B- 23" ;3-L  5
6
 12F231"7-*" 23" 5556
- +*1 -9
D
37-L"-2&9&;3-L  59
1- !23 3-731 -56
3M3-O7  /231 -59
D
3 * -* 7&C&9
! -2231 -7-"" 231"55F771 -56
 12231 -77&''&5QQ231 -77&'&556
 * *+-9
D
3-L 7 +H 231 -; -*231 -5.>;>59
3-L 7  -23-L 59
 12 *:23-L ;3556
3 * -* '7&CG7E&3" 31 -E&31 -&9
3 * -* '7&E*&9
D
D
3 * -* '7&C&9
  -" 231"59
- +*23 * -* 59
D


  
 
 * 2B- 2&' /B- &;&UB9*B&559
 


35

You might also like