Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

Šta je to PHP?

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

Večina sintakse je preuzeta iz C, Jave i Perla s nekonicinom jedinstvenih specifičnosti.


Sami smisao jezika je brzo i jednostavno pisanje dinamički generiranih stranica.
Da biste koristili vašu PHP skriptu ili stranicu s PHP kodom, vaš web server mora podržavati
PHP.
Osim nekih besplatnih, večina komercijalnih servera podržava PHP.

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.

PHP kod mora biti unutar ključnih riječi (tagova)


<?php
/*.....Ovdje dolazi kod....*/
?>
Ili skraćeno
<?
/*.....Ovdje dolazi kod....*/
?>
Svaka kodna naredba, definicija varijable mora se zaključiti s ;

Kako snimiti vaše PHP stranice


Ako želite umetati PHP kod u vaše HTML stranice i želite da server tj. internet preglednik
ispravno interpretira vašu stranicu, morate umijesto standardne .html extenzije koristiti .php
extenziju za vaše stranice
npr. umijesto index.html treba biti index.php

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

Php tutorial Operatori u PHP-u


U svakom programskom jeziku postoje razni operatori kojima se vrši manipulacija, matematičke
operacije ili usporedba vrijednosti
Dodjeljivanje vrijednosti

Za dodjeljivanje vrijednosti koristi se "="


Primjer.
<?
$moja_var = 2;
$druga_var = $moja_var;
?>
Ovim primjerom varijabli moja_var smo dodjelili vrijednost 2, a u drugoj liniji smo varijabli
druga_var dodjelili vrijednost moja_var.
Tj nakon ove dvije linije koda obije varijable imati će vrijednost 2

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

STRING (Tekst) manipulacija u PHP-u


Ovaj dio započeti ćemo s Echo funkcijom (detaljno o ovoj funkciji u dijelu tutorijala Ispis iz PHP-
a)
Ukratko Echo funkcija uz print funkciju u PHPu služi kako bi se dobio ispis (na ekran) vrijednosti.

Dodjeljivanje string vrijednosti

Za dodjeljivanje vrijednosti koristi se znak " ili znak '


Primjer.
<?
$moja_var = "Ovdje je moj tekst";
$moja_var = 'Ovdje je moj tekst';
?>
Isto tako moguće je koristiti string bez da ga se dodjeli nekoj varijabli direktno u funkciji npr.
<?
echo "Ovdje je moj tekst";
?>
Ukoliko unutar teksta koji ispisujemo unutar ' želimo koristiti ' znak moramo ga u kodu napisati s
znakom \ prije, isto vrijedi ukoliko unutar " želimo ispisati "
Znak \ služi za takozvano izbjegavanje, tj. znak koji iza tog znaka neće biti obrađen nego samo
ispisan"
<?
echo 'Ovo je moj tekst i ima u sebi \' znak ';
echo "Ovo je moj tekst i ima u sebi \" znak";
?>
Kao rezultat vratiti će korisniku:

Ovo je moj tekst i ima u sebi ' znak

Ovo je moj tekst i ima u sebi " znak

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

Specijalni znakovi koje možemo koristiti


<?
$novired = "Novi red je \n";
$navodnik = "Navodnik je \"";
$enter = "Enter (return) je \r";

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.

Kreiranje višelinijskog stringa bez navodnika


U PHP-u postoji način zvan heredoc koji je stvoren za kreiranje višelinijskih stringova bez
upotrebe navodnika. No s tim načinom treba postupati oprezno jer su vrlo velike mogućnosti da se
u konačnici ne dobije željeni rezultat
Primjer:
$moj_string = <<<HPROBA
Proba višelinijskog stringa
Stranice phptutorial.odlican.net
Još jedan red
HPROBA;
U ovom primjeru identifikator heredoc-a je HPROBA vidljivo je da blok heredoc-a uvijek
započinje s <<<identifikator i završava s identifikator;
Pritom moramo voditi računa da završni identifikator nesmije biti uvućen.
Pažnja: Ako ispišete $moj_string vidjeti ćete da linije koje smo mu dodijelili nisu odvojene već će
se ispisati:

Proba višelinijskog stringa Stranice phptutorial.odlican.net Još jedan red

Ako smo željeli razdvajati redove mogli smo upotrijebiti \n znak na kraju reda.

Manipulacija stringom - strpos funkcija


strpos funkcija služi za određivanje pozicije prvog trazenog znaka trazenog string unutar stringa
Argumenti strpos funkcije su:
strpos($moj_string, "traženi_string");
ili
strpos($moj_string, "traženi_znak", početna_pozicija);
Pošto strpos uvijek vrati ili prvi pronađeni string ili false (ako ne pronađe traženi) treći argument
je opcia koja služi da bismo pronašli slijedeći trazeni_string unutar moj_string

Povratna pozicija je uvijek za jedan manja jer strpos broji od 0


Primjer:
<?
$moj_string = "ABCDEFGHIJKLMNOPRSTUVZXYPRGTG";
$pozicija = strpos($moj_string, "P");
echo "Pozicija znaka P u mom stringu je $pozicija";
?>
Rezultira s:

Pozicija znaka P u mom stringu je 15

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:

Pozicija znaka P u mom stringu je 15


Druga pozicija znaka P u mom stringu je 24

Manipulacija stringom - str_replace funkcija


str_replace funkcija služi za zamjenu određenog stringa unutar stringa. Najsličniji primjer toj
funkciji je Replace all funkcija u wordu na primjer.
Argumenti str_replace funkcije str_replace(trazeni_string, zamjeni_stringom, originalni_string).
Primjer:
<?
$moj_string = "Bio jednom jedan pas zvao se je Miki";
$string_rezultat = str_replace("pas","mačak",$moj_string);
echo $string_rezultat;
?>
Rezultira s:

Bio jednom jedan mačak zvao se je Miki

Moguće je koristiti istu funkciju i s nizom podataka koje joj se serviraju


Primjer:
<?
$moj_string = "Bio jednom jedan pas zvao se je Miki";
$trazi = array('Bio','jedan','pas','zvao','Miki');
$mjenjaj=array('Bila','jedna','mačka','zvala','Mica');
$string_rezultat = str_replace($trazi,$mjenjaj,$moj_string);
echo $string_rezultat;
?>
Rezultira s:

Bila jednom jedna mačka zvala se je Mica

Manipulacija stringom - substr_replace funkcija


substr_replace funkcija za razliku od str_replace bazira se na poziciji u stringu.
Argumenti substr_replace funkcije substr_replace(orginalni_string, zamjeni_stringom, od
pozicije); ili substr_replace(orginalni_string, zamjeni_stringom, od pozicije,
koliko_znakova_zelimo_zamijeniti);
Ukoliko kao argument koliko_znakova_zelimo_zamijeniti stavimo 0 funkcija će umijesto zamjene
izvršiti ubacivanje strinka na danoj poziciji.
Primjer:
<?
$moj_string = "Bio jednom jedan pas zvao se je Miki";
$string_rezultat= substr_replace($moj_string,"vuk",17);
echo $string_rezultat;
?>
Rezultira s:

Bio jednom jedan vuk zvao se je Miki

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

Manipulacija stringom - strlen funkcija


strlen funkcija kao rezultat vraća dužinu stringa
Argumenti strlen funkcije strlen(string_ciju_duzinu_trazimo);
Primjer:
<?
$moj_string = "Bio jednom";
$duzina_stringa = strlen($moj_string);
echo "String je dugačak $duzina_stringa znakova";
?>
Rezultira s:

String je dugačak 10 znakova

Manipulacija stringom - strtoupper funkcija


strtoupper funkcija kao rezultat vraća string pretvoren u velika slova jedini argument je string koji
konvertiramo

Manipulacija stringom - strtolower funkcija


strtolower funkcija kao rezultat vraća string pretvoren u mala slova jedini argument je string koji
konvertiramo

Manipulacija stringom - ucwords funkcija


ucwords funkcija kao rezultat vraća string u kojem pretvara iz malih u velika početna slova riječi
jedini argument je string koji konvertiramo

Manipulacija stringom - explode funkcija


explode funkcija kao rezultat vraća string razbijen na komade uz mogućnost limitiranja broja
komada
Primjer:
<?
$ime_i_prezime = "Primjerko Primjerić";
$razbij_ime_prezime = explode(" ", $ime_i_prezime);
echo "Ime i prezime: $ime_i_prezime <br />";
echo "Ime: $razbij_ime_prezime[0] <br />";
echo "Prezime: $razbij_ime_prezime[1] <br />";
?>
Rezultira s:

Ime i prezime: Primjerko Primjerić


Ime: Primjerko
Prezime: Primjerić

Manipulacija stringom - implode funkcija


implode funkcija kao rezultat vraća string "zaljepljen" od komada niza
Primjer:
<?
$niz_stringova = array("Moje", "Ime", "je", "Primjerko");

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:

Dio niza br: 0 = Moje


Dio niza br: 1 = Ime
Dio niza br: 2 = je
Dio niza br: 3 = Primjerko
Spojeno = Moje Ime je Primjerko

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

For each petlja


For each petlja za svaki element niza izvršava kod
Primjer:

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);
?>

PHP mogućnosti uvijetnog izvršavanja koda

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:

Uvjet nije zadovoljen

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.

PHP funkcije i klase

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....

Primjer funkcije s argumentom:


<?
function moja_prva_funkcija($argument){
echo "Ja sam napisao svoju prvu funkciju s ".$argument;
}
echo "Tu je dio koda prije upotrebe funkcije....";
moja_prva_funkcija("argumentom");
echo "..........Tu je dio koda poslije upotrebe funkcije....";
moja_prva_funkcija("drugim argumentom");
echo "..........Tu je dio koda poslije ponovnog upotrebe
funkcije....";
?>
Rezultira s:

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,

Možemo stvoriti još dvije instance brojac2 i brojac3 s različitim od do i korakom


<?
$brojac2 = new brojac(0,50,2);
$brojac3= new brojac (0,100,3);
echo "<br />";
$brojac2->radi();
?>
Rezultira s:

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,

echo "<br />";


$brojac3->radi();
Rezultira s:

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,

echo "<br />";


echo "Brojac1 je izvršen:".$brojac1->izvrsen." Brojac2 je izvršen:".$brojac2->izvrsen." Brojac3 je
izvrsen:".$brojac3."<br />";
Rezultira s:

Brojac1 je izvršen:10 Brojac2 je izvršen:25 Brojac3 je izvrsen:33

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.

Varijable se dodaju u urlu na kraj npr: http://mojveb.hr/mojaphpstranica.php?jez=1


U ovom linku vidljivo je da je nakon same stranice dodan ? koji govori pregledniku da se iza
njega nalaze varijable te nakon njega ime_varijable=vrijednost
Primjer:
Ako radimo dinamičku stranicu koja koristi više jezika npr. i za određivanje jezika koristimo
varijablu $jez kojom kroz numeričku vrijednost određujemo sadržaj stranice zgodno je varijablu
na početku postaviti na inicijalnu vrijednost.
Ja za to koristim slijedeći uvijet
<?
if (isset($_GET["jez"])){$jez=$_GET["jez"];}else{$jez=1;}
?>
nakon ovoga varijabla $jez će kad otvorimo stranicu direktno poprimiti vrijednost 1, a ujedno će
se i dinamički promijeniti ako odaberemo drugi jezik na linku na stranici
U kodu gdje je link za odabir jezika to može izgledati npr. ovako:
<?
if ($jez==2) {echo "<a href=\"mojaphpstranica.php?jez=1\">
Hrvatski</a>";}
if ($jez==1) {echo "<a href=\"mojaphpstranica.php?jez=2\">
English</a>";}
?>
testirajte ovaj primjer tako da sva tri if uvjeta snimite u mojaphpstranica.php datoteku ili
pogledajte primjer ovdje mojaphpstranica.php
Ukoliko prenosimo više od jedne varijable slijedeću spajamo s & znakom
Primjer:
http://mojweb.hr/mojaphpstranica.php?jez=1&izbor=3

Online forme i PHP


Služe nam kako bismo prikupili povratne informacije od korisnika i slično.

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

PHP spajanje na Mysql

Spajanje na mysql bazu je jednostavno


Preduvijet za spajanje je naravno taj da prije toga morate imati kreiranu bazu u Mysql-u
Primjer spajanja:
<?
mysql_connect("vas_server", "korisnicko_ime", "lozinka") or
die("Neuspjela konekcija") ;
mysql_select_db("naziv_vase_baze") or die("Neuspjelo
otvaranje baze");
/*.....ovdje dolazi upit na bazu.....*/
mysql_close();

?>
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

Dohvat podataka iz Mysql baze


Da bismo podatke iz baze ispisali moramo ih na neki način dohvatiti.
Dohvat informacija kao i pohranjivanje informacija i sve ostalo vrši se upitima (query) na bazu.
Ovdje ću vam prikazati najjednostavniji primjer.
Primjer:
Za ovaj primjer koristiti ćemo imaginarne podatke
web server:"moj_posluzitelj", mysqlbaza="moja_baza"
korisnik="korisnik" i lozinka="lozinka"
Pretpostavimo isto tako da imamo kreiranu
tablicu na mysqlu "moji_podaci" koja u sebi ima podatke
ime i prezime
Pohranjeni podaci u tablici su:
Prvi zapis: ime Primjerko prezime Primjerić
Drugi zapis: ime Robert prezime Gruber
Kod:
<?
mysql_connect("moj_posluzitelj", "korisnik", "lozinka") or
die("Neuspjela konekcija");
mysql_select_db("moja_baza") or die("Neuspjelo otvaranje
baze");
/*Da bismo dohvatili podatke koristimo slijedeći sql upit*/
$rezultat = mysql_query("SELECT * FROM `moji_podaci`") or
die("Neuspjelo");
/*Da bismo rezultat upita pohranili u varijablu koristimo
slijedeće*/
$podaci = mysql_fetch_array( $rezultat )) /*na ovaj način
pohranili smo iz $rezultat samo prvi zapis*/
/*Kako bismo pohranili i ispisali sve podatke iz tablice
moji_podaci upotrijebit ćemo petlju*/
while($podaci = mysql_fetch_array( $rezultat )) {
echo "Ime: ".$podaci['ime'] . " Prezime:
".$podaci[prezime]. "<br /> ";
}
mysql_close();
?>
Rezultira s:
PHP pohrana podataka Mysql

Pohrana podataka Mysql


Primjer pohrane podataka u Mysql
Za ovaj primjer koristiti ćemo imaginarne podatke
web server:"moj_posluzitelj" mysqlbaza="moja_baza"
korisnik="korisnik" lozinka="lozinka"
Pretpostavimo isto tako da imamo kreiranu tablicu na mysqlu "moji_podaci"
koja u sebi ima podatke ime i prezime.
Prvo se spojimo na bazu:
<?
mysql_connect("moj_posluzitelj", "korisnik", "lozinka") or
die("Neuspjela konekcija");
mysql_select_db("moja_baza") or die("Neuspjelo otvaranje
baze");
/*Ubacit ćemo slijedeći podatak ime:Robert, prezime: Gruber

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

PHP rad s datotekama

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);
?>

U datoteku smo zapisali:


Ovo je proba pisanja
Proba je sa phptutorial.odlican.net stranica

PHP funkcija fread


Kako bismo čitali iz datoteke koristimo funkciju fread.
Kod PHP Funkcija fread potreban nam je i integer argument koji govori funkciji koliko podataka u
byte-ovima želimo pročitati. Jedan znak = jedan byte.
Ako želimo pročitati prvi red datoteke koju smo u prošlom primjeru napravili to bi izgledalo
ovako:
Primjer:
<?
$ime = "proba.txt";
$datoteka = fopen($ime, 'r');
$podatak = fread($datoteka, 20);
fclose($datoteka);
echo $podatak;
?>

Rezultira s :
Ovo je proba pisanja

PHP funkcija filesize


Kako bismo mogli pročitati cijelokupni sadržaj datoteke iz ovog primjera možemo koristiti filesize
PHP funkciju
Primjer
<?
$ime = "proba.txt";
$datoteka = fopen($ime, 'r');
$podaci = fread($datoteka, filesize($ime));
fclose($datoteka);
echo $podaci;
?>

Rezultira s:
Ovo je proba pisanja Proba je sa phptutorial.odlican.net stranica

PHP funkcija fgets


PHP funkcija fgets Omogućava nam da čitamo cijeli red teksta iz datoteke, koji prethodno mora
biti završen specijalnim znakom /n
Primjer
<?
$ime = "proba.txt";
$datoteka = fopen(
, 'r');
$podatak = fgets($datoteka);
fclose($datoteka);
echo $podatak;
?>

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

Šta je to PHP session (nadalje sesija)


Sesija nije baš najelegantniji prijevod, no pokušajmo ga objasniti.
Pod sesijom smatramo vrijeme koje određeni korisnik provede na vašim stranicama.
Koristeći PHP session funkcionalnost svakom korisniku dodjeljujete jedinstveni ID koji
omogućava praćenje korisnika kroz vaše stranice.
Najbolje ću vam to dočarati primjerom. Koristit ćemo tri php datoteke za ovaj primjer.
Prvo ćemo napraviti datoteku seset.php. U njoj ćemo koristeći funkciju session_start(); inicirati tj.
započeti sesiju.
Za ovaj primjer odrediti ćemo fix. $korisnicko_ime="Primjerko".
Korištenjem session_start() funkcije automatski se inicira SUPERGLOBALNI niz $_SESSION
koji nam služi za pohranjivanje tj. preuzimanje informacija o korisniku.
Sadržaj seset.php datoteke
<?
session_start();
if (isset($_SESSION['korisnicko_ime'])){
echo "Vase korisnicko ime vec je postavljeno na:
".$_SESSION['korisnicko_ime']."<br />";
}
else{
$_SESSION['korisnicko_ime']="Primjerko";
echo "Vase korisnicko ime je sad postavljeno na:
".$_SESSION['korisnicko_ime']."<br />";
}
?>
Nadalje kreirati ćemo seget.php koji će nam služiti da demonstriramo preuzimanje informacija o
sesiji
<?
session_start();
if (isset($_SESSION['korisnicko_ime'])){
echo "Vase korisnicko ime je
".$_SESSION['korisnicko_ime']."<br />";
}
else{
echo "Korisnicko ime nije postavljeno<br />";
}
?>

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();

PHP cookies (kolačići)

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

You might also like