Professional Documents
Culture Documents
Iwa Usmeni PDF Free
Iwa Usmeni PDF Free
PHP (Hypertext preprocessor) je programski jezik raširen i popularan pri izradi web stranica.
Izuzetno je jednostavan za učenje, a s naučenim se postiže mnogo.
U trenutku kad korisnik posjeti vaše PHP stranice, vaš web server automatski obrađuje PHP kod
na osnovu kojega određuje šta će prikazati korisniku.
Sve ostalo kao npr. matematičke operacije, operacije s datotekama, varijable idr. ne prikazuje
korisniku, te korisnik u Internet preglednik prima generiranu HTML stranicu bez PHP koda
Ako želite isprobavati PHP skripte na vašem računalu postoji i za to riješenje: download i
instalacija programa Xammp
Osnove PHP-a
Šta je to sintaksa? Laički rečeno sintaksa predstavlja skup pravila koja svaki kod mora
zadovoljavati.
Varijable
Varijabla služi za privremeno pohranjivanje određene vrijednosti (broja, teksta...), vrijednost
pohranjena u varijabli se nakon toga može koristiti više puta kroz cijeli kod.
Varijable se definiraju na slijedeći način: $naziv_varijable = vrijednost;
Znak dolar ispred naziva je obavezan. Napomena imena varijabli su osjetljiva na velika i mala
slova npr. $naziv i $Naziv su dvije različite varijable.
Pravila koja morate poštivati prilikom imenovanja varijabli su slijedeći:
PHP varijable moraju započinjati s slovom ili "_" znakom.
U imenu mogu imati samo znakove a-z, A-Z, 0-9, ili _
1
Varijable s više od jedne riječi u nazivu radi preglednosti treba razdvajati s _.
Npr $moja_varijabla
Isto tako ih je u redu razdvajati koristeći velika ili mala slova. Npr $mojaVarijabla
Matematičke operacije
"+" zbrajanje
"-" oduzimanje
"*" množenje
"/" djeljenje
"%" ostatak djeljenja.
Npr.
<?
$prva_varijable = $druga_varijabla +4;
?>
Uspoređivanje - operacije
Operacije uspoređivanja uvijek vraćaju logičku vrijednost istina (true) neistina (false)
jednako $x == $y
različito (ne jednako) $x != $y
veće od $x > $y
manje od $x < $y
veće ili jednako $x >= $y
manje ili jednako $x <= $y
Kombinirane - matematičko dodjeljivačke operacije
Skraćene neke standardne operacije
+= npr. $x += 3; isto je što i $x = $x + 3;
-= npr. $x -= 2; isto je što i $x = $x - 2;
*= npr. $x *= 4; isto je što i $x = $x * 4;
/= npr. $x /= 4; isto je što i $x = $x / 4;
%= npr. $x %= 4; isto je što i $x = $x % 4;
.= npr. $moj_str.="Bok"; isto je što i $moj_str = $moj_str . "Bok";
Za dodavanje ili oduzimanje 1 postoji još kraća verzija
$x++; $x--; što je isto kao i $x=$x+1; $x=$x-1;
Post i pre operatori omogućavaju i određivanje hoće li se operacija dogoditi prije ili poslije
izvršenja cijele linije koda
npr. $x++; će se izvršiti nakon izvršenja cijele linije koda dakle ako ispišemo $x++; ispisani
rezultat će i dalje biti $x.
2
Dok ako ispišemo ++$x; možemo vidjeti da je do zbrajanja došlo prije nego što se izvršilo
ispisivanje te će ispisani rezultat biti jednak $x+1
Razlika u korištenju znaka " umijesto znaka ' je da ako koristite ' server neće procesirati varijable
unutar njega.
Primjer
<?
$var=4;
echo '$var';
echo"<br />";
echo "$var";?>
Rezultira s:
$var
4
3
$tab = " Tab je \t";
$dolar = "Dolar je \$";
?>
Gore navedeni specijalni znakovi neće doći do izražaja prilikom ispisa na ekran (Preglednici ih
ignoriraju), ali ukoliko ispisujete u datoteku ili u višelinijski string pokazat će se kao korisni.
Ako smo željeli razdvajati redove mogli smo upotrijebiti \n znak na kraju reda.
Kao što vidimo vraćena pozicija je 15, znaći prvi pronađeni P, ukoliko želimo pronaći drugi
moramo stvar provrtiti kroz petlju ili ovdje primjera radi ručno bi to izgledalo ovako:
Primjer2:
<?
$moj_string = "ABCDEFGHIJKLMNOPRSTUVZXYPRGTG";
$pozicija = strpos($moj_string, "P");
4
echo "Pozicija znaka P u mom stringu je $pozicija<br />";
$pozicija2 = strpos($moj_string, "P",$pozicija+1);
echo "Druga Pozicija znaka P u mom stringu je $pozicija2";
?>
Rezultira s:
5
Za kvalitetnu upotrebu ove funkcije morat će se služiti i s drugim manipulacijskim funkcijama da
bismo u konačnici dobili rezultat koji želimo
6
$spojeni_string = implode(" ", $niz_stringova);
for($i = 0; $i < count($niz_stringova); $i++){
echo "Dio niza br: $i = $niz_stringova[$i] <br />";
}
echo "Spojeno = $spojeni_string";
?>
Rezultira s:
PHP petlje
Kao i u svakom programskom jeziku tako i u PHP-u postoje petlje koje nam omogućavaju da određeni dio
koda ponovimo više puta
While petlja
While ponavlja uklješteni kod dok got je zadani uvijet zadovoljen
Možemo ispisivati varijable ili/i tekst direktno
Primjer:
<?
$brojac = 1;
while ( $brojac <= 3 ) {
echo $brojac." ";
$brojac = $brojac+1;
}
?>
Rezultira s
123
For petlja
For petlja se razlikuje od while petlje samo po tome što dopušta definiranje i inicijalizaciju brojača
u jednoj liniji
Primjer:
<?
for($brojac = 1;$brojac<=3;$brojac++){
echo $brojac." ";
}
?>
Rezultira s:
123
7
<?
$dan_datum["Ponedjeljak"] = "1.1.2007";
$dan_datum["Utorak"] = "2.1.2007";
$dan_datum["Srijeda"] = "3.1.2007";
foreach($dan_datum as $dan => $datum){
echo $datum." je ".$dan."<br />";
}
?>
Rezultira s:
1.1.2007 je Ponedjeljak
2.1.2007 je Utorak
3.1.2007 je Srijeda
Do While petlja
Jedina razlika između do while petlje i while petlje je u tome da se do while uvijek izvrši bar
jedanput jer provjerava uvijet nakon izvršenja.
Sintaksa
<?
do {
kod koji se ponavlja - izvršava se jednom bez obzira na uvjet
} while (uvjet);
?>
If naredba
If naredbu koristimo kako bismo uvjetovali izvršenje određenog dijela koda nekim uvjetom
Primjer:
<?
$i=1;
if ($i==1){
echo "Uvjet je zadovoljen";
}
if ($i==2){
echo "Uvjet nije zadovoljen";
}
?>
Dio obuhvaćen s drugom if naredbom neće biti izvršen.
Rezultira s
Uvjet je zadovoljen
If/Else naredba
If/Else samo proširava if naredbu, a koristimo je kako bismo uvjetovali izvršenje određenog dijela
koda nekim uvjetom i izvršenje drugog koda u slučaju ne zadovoljavanja uvijeta.
Primjer:
<?
$i=2;
if ($i==1){
echo "Uvjet je zadovoljen";
}
8
else {
echo "Uvjet nije zadovoljen";
}
?>
Rezultira s:
Elseif naredba
Elseif dodatno proširuje if/else naredbu, a koristimo je kako bismo uvjetovali izvršenje određenog
dijela koda nekim uvjetom, u slučaju ne zadovoljavanja uvjeta elseif s novim uvijetom i else za
izvršenje koda u slučaju ne zadovoljavanja uvijeta ni elseif-om
Primjer:
<?
$i=2;
if ($i==1){
echo "Uvjet1 je zadovoljen";
} elseif ($i==2) {
echo "Uvjet2 je zadovoljen";
} else {
echo "Ni prvi ni drugi uvijet nije zadovoljen";
}
?>
Dio obuhvaćen s if naredbom neće biti izvršen, nakon toga se kontrolira elseif koji zadovoljava.
Rezultira s:
Uvjet2 je zadovoljen
Swtich naredba
Switch radi na način da provjerava jednu varijablu s više različitih slučajeva vrijednosti koje definiramo.
<?
$i=2;
switch($i){
case 1:
echo "i=1";
break;
case 2:
echo "i=2";
break;
default:
echo "i nije među definiranim";
break;
}
?>
Rezultira s
i=2
U kodu vidimo da svaki case završava s break; On služi da bi se sprečilo daljnje izvršavanje
uvijeta u slučaju ispunjenja jednog slučaja.
9
Isto tako vidimo kao zadnji default on nam omogućava izvršenje koda u slučaju da niti jedan case
ne ispunjava uvjet. Opcionalan je ali poželjan.
Funkcije
Funkcija nije ništa drugo nego naziv koji dajemo određenom bloku koda, s namjerom da ga
upotrijebimo više puta.
Sintaksa
function moj_naziv_funkcije(argumenti_ako_ih_želimo){
kod koji funkcija izvršava }
Ukoliko imamo više od jednog argumenta razdvojamo ih s , znakom.
Primjer:
<?
function moja_prva_funkcija()
{
echo "Ja sam napisao svoju prvu funkciju";
}
echo "Tu je dio koda prije upotrebe funkcije....";
moja_prva_funkcija();
echo "..........Tu je dio koda poslije upotrebe
funkcije....";
moja_prva_funkcija();
echo "..........Tu je dio koda poslije ponovnog upotrebe
funkcije....";
?>
Rezultira s
Tu je dio koda prije upotrebe funkcije....Ja sam napisao svoju prvu funkciju..........Tu je dio
koda poslije upotrebe funkcije....Ja sam napisao svoju prvu funkciju..........Tu je dio koda
poslije ponovnog upotrebe funkcije....
Tu je dio koda prije upotrebe funkcije....Ja sam napisao svoju prvu funkciju s
argumentom..........Tu je dio koda poslije upotrebe funkcije....Ja sam napisao svoju prvu
funkciju s drugim argumentom..........Tu je dio koda poslije ponovnog upotrebe funkcije....
10
Klase
Što su to klase - Klasa je kolekcija funkcija i varijabli, odnosno klase definiraju objekt kao
predložak za stvarne varijable.
Da bi smo koristili klase, potrebno je kreirati instancu objekta koristiteći operator new.
Klasa se sastoji od atributa (svojstva) i metoda (radnje)
Sintaksa klase je:
<?
class naziv_klase{
function naziv_klase() /*konstruktorska funkcija ima isto
ime kao klasa*/
{
}
var $varijabla; /*varijable*/
function moja_funkcija(){} /*jedna ili više funkcija*/
}
?>
Doista mi je teško riječima opisati klase i izači iz okvira funkcijskog razmišljanja. Pokušati ću
vam isto predočiti kroz jedan primjer:
Stvorit ćemo klasu brojac
Primjer:
<?
class brojac {
function brojac ($od,$do,$korak){ /*klasa brojac imat će
konstruktorsku funkciju koja ce inicijalizirati varijable od
do korak broj*/
$this->od=$od; /*možemo vidjeti $this varijablu. Ona služi
za dohvaćanje varijabli unutar istog objekta*/
$this->do=$do;
$this->korak=$korak;
$this->broj=$this->od;
}
var $izvrsen=0; /*definirat ćemo jednu varijablu izvršeno
koja ce nam vraćati broj izvrsenja petlje*/
function radi(){ /*definirat ćemo funkciju radi koja će
brojati*/
while($this->broj+$this->korak<=$this->do){
$this->izvrsen++;
$this->mat(); /*pozivamo drugu funkciju (metodu) klase -
nije nuzno tako komplicirati stvari ovo je radi primjera */
$this->ispisi(); /*pozivamo drugu funkciju (metodu) klase
kako bismo ispisali svaki izvršeni broj*/
}
}
function ispisi(){
echo $this->broj.",";
}
function mat(){
$this->broj=$this->broj+$this->korak;
}
}
$brojac1 = new brojac(0,10,1); /*Da bismo koristili ovu
klasu moramo kreirati instancu objekta*/
$brojac1->radi();/*Nakon toga pozvati ćemo metodu radi()*/
?>
Rezultira s:
11
1,2,3,4,5,6,7,8,9,10,
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,
3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,
90,93,96,99,
Prava vrijednost može se vidjeti u nastavku ovog primjera. Klase se za razliku od funkcija može
proširivati tako da novonastala klasa koristi sve atribute i metode klase koju proširujemo. Za to
koristimo sintaksu class naziv_klase extends klasa_koju_prosirujemo {}
Višestruko nasljeđivanje nije moguće dakle proširena klasa može nasljediti atribute i metode samo
jedne osnovne klase
Stvoriti cemo novu klasu brojac_pisi_tekst koja će biti proširenje klase brojac
<?
class brojac_pisi_tekst extends brojac {
function brojac_pisi_tekst($tekst){
$this->tekst=$tekst;
}
function ispisi_tekst(){
while($this->broj+$this->korak<=$this->do){
$this->izvrsen++;
$this->mat(); /*Koristimo mat() funkciju (metodu) iz osnovne
klase*/
echo $this->izvrsen." ".$this->tekst."<br />";
}
}
}
$brojac4= new brojac_pisi_tekst("Robert"); /*Stvorit ćemo
instancu brojac4 kojoj je cilj ispisati tekst Robert*/
$brojac4->brojac(0,3,1); /*Agrumente ćemo ubaciti pozivom na
klasu brojac*/
$brojac4->ispisi_tekst(); /*Pozvat ćemo metodu prosirene
klase*/
?>
12
GET metoda PHP
Get metoda služi kako bismo prenjeli varijable kroz našu stranicu dodavajući ih URL-u.
Kako bih vam što bolje predočio kako php funkcionira s formama ovdje ću kao primjer obraditi
jednu od najuobičajenih formi - Komentar obrazac
Prvo ćemo napraviti html datoteku (stranicu) na kojoj ćemo prikupiti podatke
<form action="saljipostu.php" method="POST">
<b>Vaše ime :</b> <input type="text" name="ime"><br />
<b>Vaš e-mail :</b> <input type="text" name="email"><br />
<b>Komentar :</b><input type="text" name="komentar" style="width:240px"><br />
13
<input type="submit" value="Pošalji"><input type="reset" value="Obriši">
</form>
Ovaj dio koda možete ubaciti na mijesto gdje želite formu na vašoj stranici
Ova forma kao akciju kad stisnemo Pošalji poziva php datoteku (skriptu) saljipostu.php i u nju ce
prebaciti varijable ime,email i komentar
Stvorite saljipostu.php sa slijedećim sadržajem:
<?
$ime = $_POST['ime'];
$email = $_POST['email'];
$komentar = $_POST['komentar'];
$sadrzaj_maila="Ime: $ime\n\nKomentar: $komentar";
$primatelj = "gruberit@gmail.com";
$naslov = "Komentar s weba";
$mailzaglavlje = "From: $email\r\n";
$mailzaglavlje .= "Reply-To: $email\r\n";
$mailzaglavlje .= "MIME-Version: 1.0\r\n";
mail($primatelj, $naslov, $sadrzaj_maila, $mailzaglavlje) or
die("Greška!");
header("Location:http://vasadomena.hr/hvalavamnakomentaru.php
");
?>
Kreirajte hvalavamnakomentaru.php stranicu zahvale, promjenite podatke primatelja i adresu
stranice zahvale i isprobajte.
Ako je koristite - stranica zahvale mora imati extenziju .php bez obzira na to ima li u sebi php kod
ili je čisti html
Na serveru mora biti naravno - php i omogućeno slanje
?>
Ukoliko je baza na vašem serveru za hostname možete koristiti localhost
Korisničko ime i lozinka su korisničko ime i lozinka za mysql bazu koje ste kreirali prilikom
kreiranja baze
Nakon što ste se spojili na bazu i izvršili sve što ste željeli (preuzeli podatke, pohranili podatke...)
potrebno je konekciju zatvoriti s mysql_close();
Sigurno se pitate na koji način su vaši podaci kao korisničko ime i lozinka zaštičeni. Odgovor je u
tome da se php izvršava na serveru, a korisniku dolazi samo razultirajuća stranica u kojoj se php
kod pa tako i vaše korisničko ime i lozinka ne vidi.
Potencijalnu opasnost predstavlja izvanredna situacija u kojoj bi vaš web server prestao
interpretirati php i na taj način ugrozio sigurnost.
14
PHP ispis podataka Mysql
15
*/
$ime="Robert";
$prezime="Gruber";
mysql_query("INSERT INTO `moji_podaci` (`ime`, `prezime`)
VALUES ('$ime', '$prezime');");
mysql_close();
?>
Dakle koristili smo INSERT INTO kojim u tablicu moji_podaci u polja ime i prezime ubacujemo
vrijednosti $ime i $prezime
U svakodnevnom radu pokazuje se potreba rada s datotekama. Naravno da i PHP kao i svi drugi
programski jezici omogućava rad s datotekama.
Ovdje ću vam opisati i primjerima pokazati PHP funkcije za rad s datotekama te kako ih koristiti
Prije svega da napomenem kako PHP prilikom korištenja datoteka koristi pokazivač (pointer)
kojim određuje poziciju u samoj datoteci.
PHP Funkcija fopen
PHP Funkcija fopen upotrebljava se i za otvaranje i za kreiranje datoteka
Sintaksa:
fopen($ime_datoteke, sta_zelimo);
$sta_zelimo='w' write (kreiranje datoteke / pisanje u datoteku uz brisanje prethodno upisanog, pokazivač
pozicije u datoteci je postavljen na početak datoteke)
$sta_zelimo='r' read (čitanje iz datoteke)
$sta_zelimo='a' append (pisanje u datoteku, pokazivač na poziciju u datoteci je postavljen na kraj datoteke)
$sta_zelimo='r+' read/write (dozvoljeno i pisanje i čitanje datoteke, pokazivač postavljen na početak
datoteke)
$sta_zelimo='w+' isto što i r+ samo se prilikom otvaranja datoteka u potpunosti briše
$sta_zelimo='a+' isto što i r+ samo pokazivač pokazuje na kraj datoteke
Ispravan način za spajanje datoteke bez obzira na to što koristimo bio bi:
<?
$ime_datoteke = "testdatoteka.txt";
$datoteka = fopen($ime_datoteke, $sta_zelimo) or die("
Neuspjelo otvaranje datoteke");
fclose($datoteka);
?>
PHP Funkcija fclose
Izuzetno je važno nakon upotrebe zatvoriti datoteku a za to koristimo funkciju fclose
Primjer možete vidjeti kod funkcije fopen
PHP Funkcija fwrite
Nakon što smo uspješno otvorili datoteku za pisanje da bismo u nju pisali moramo koristiti PHP
funkciju fwrite
Primjer:
<?
$moja_datoteka = "proba.txt";
$datoteka = fopen($moja_datoteka, 'w') or
die("Neuspjelo otvaranje datoteke");
$podatak_za_pisanje_u_datoteku = "Ovo je proba pisanja\n";
fwrite(, $podatak_za_pisanje_u_datoteku);
$podatak_za_pisanje_u_datoteku = "Proba je sa
phptutorial.odlican.net stranica \n";
fwrite($datoteka, $podatak_za_pisanje_u_datoteku);
16
fclose($datoteka);
?>
Rezultira s :
Ovo je proba pisanja
Rezultira s:
Ovo je proba pisanja Proba je sa phptutorial.odlican.net stranica
Rezultira s:
Ovo je proba pisanja
17
PHP funkcija unlink
Za brisanje datoteke koristimo funkciju unlink, prije nego što možemo obrisati datoteku ista mora
biti zatvorena
Primjer:
<?
$ime = "proba.txt";
unlink($ime);
?>
OPREZ korištenje ovih funkcija može dovesti do gubitka podataka ukoliko niste sigurni u ono što
radite
Ukoliko vam ove funkcije ne rade provjerite kako su postavljena prava na serveru
PHP session
Ukoliko ste napravili neku stranicu sigurno ste došli i do problema autorizacije korisnika, tj.
prenošenja podataka o korisniku kroz vaše internet stranice
18
Nadalje treća stranica sedest.php koju kreiramo služiti će kako bismo počistili podatke iz varijable
sesije.
<?
session_start();
unset($_SESSION['korisnicko_ime']);
echo "session varijabla pociscena";
?>
Isprobajmo ovaj primjer:
Prvo pokrenite i nakon otvaranja zatvorite seset.php
Sad ćemo pokušati preuzeti pohranjeni podatak o korisniku. Pokrenite sad seget.php
Kao što vidimo uspješno smo preuzeli podatak.
Ostaje nam još samo da očistimo varijablu - pokrenite sedest.php
Ako želimo isprobati je li pobrisana informacija o korisniku možete ponovno probati seget.php
Ako želimo uništiti cijelu sesiju možemo to učiniti s funkcijom session_destroy();
Osim kreiranja PHP sesije u PHP-u postoji i mogućnost pohranjivanja podataka o korisniku
koristeći cookies ili kolačiće.
Šta su to cookies (kolačići)
Kolačići nam omogućavaju pohranjivanje informacije o posjetitelju na njegovo računalo, kako
bismo prilikom sljedećeg posjeta mogli pristupiti istima.
Jedna od uobičajenih upotreba je za vrijeme zadnjeg posjeta stranicama.
Isto tako je moguće pohranjivati i druge podatke kao korisničko ime, lozinku, podatke o sadržaju
košarici kod online dućana....
Iako su cookies (kolačići) prisutni već odavno i u masovnoj su upotrebi - postoji dio korisnika koji
ih ima isključene
Cookie (kolačić) postavljamo koristeći PHP funkciju setcookie(ime,vrijednost, rok_trajanja)
Kolačić moramo postaviti u HEADER-u prije HTML koda kako bi radili.
Za primjer jedan cookie koji će pokazati vrijeme zadnjeg posjeta koristit ćemo dve datoteke
Prva za postavljanje kolačića postavikolacic.php
<?
$sat=date("H")+7;
$rok_trajanja=2592000 + time();
$sat=date("d.m.Y - $sat:i:s");
setcookie(Posjet,$sat,$rok_trajanja);
$trajem=2592000/60/60/24;
echo "Kolacic postavljen na $sat s trajanjem $trajem dana"
?>
Napomena $sat kompenzira vremensku razliku od 7 sati zbog druge vremenske zone gdje se
server nalazi
Kako kod sljedećeg posjeta povući ove podatke
Sljedeći kod snimite u dohvatikolacic.php
<?
if(isset($_COOKIE['Posjet']))
{
$zadnji = $_COOKIE['Posjet'];
$sat=date("H")+7;
$sat=date("d.m.Y - $sat:i:s");
echo "Dobrodošli natrag! Sad je $sat <br /> Zadnja posjeta
je bila: ". $zadnji;
19
}else{
echo "Dobrodošli!";
}
?>
Nadalje treća stranica obrisikolacic.php koju kreiramo služiti će kako bismo poništili kolačić.
Za ovo ćemo koristiti jednostavnu metodu, postaviti ćemo ponovno kolačić u kojem ćemo
postaviti rok trajanja u prošlost
<?
$sat=date("H")+7;
$rok_trajanja=time()-2592000;
$sat=date("d.m.Y - $sat:i:s");
setcookie(Posjet,$sat,$rok_trajanja);
echo "Kolacic pobrisan";
?>
Isprobajmo ovaj primjer:
Prvo pokrenite i nakon otvaranja zatvorite postavikolacic.php
Sad ćemo pokušati preuzeti pohranjeni podatak o korisniku. Pokrenite sad dohvatikolacic.php
Kao što vidimo uspješno smo preuzeli podatak.
Ostaje nam još samo da očistimo kolačić - pokrenite obrisikolacic.php
Ako želimo isprobati je li pobrisan kolačić možete ponovno probati dohvatikolacic.php
20