« Prethodna stranica Page — Sledeća stranica »
Laka izmena veličine slike
17.05.2007
Po potrebi uz pomoć PHP-a možemo online promeniti veličinu slika i na taj način smanjiti potrebne rasurse za web sajt
R ecimo da imate (vi ili neko drugi) web sajt čija je svrha prodaja robe široke potrošnje. Svakako da bi ste tada morali da formirate online katalog proizvoda, a isti taj katalog bi bio upotpunjen ukoliko bi svakom artiklu pridružili sliku samog proizvoda. Shodno prethodnom, kada korisnik/posetilac lista katalog, uz svaki artikal trebalo bi mu ponuditi mali sličicu (thumbnail) koja bi mu bolje ukazivala o čemu se radi, sa mogućnošću uvećanja iste slike.
Problem nastaje kada imate veliki katalog, od recimo 5.000 artikala. To znači da morate imati 5.000 slika u originalnoj veličini i još 5.000 istih takvih ali umenjenih (tzv. thumnail-ova). Ova solucija ne samo da je donekle komplikovanija , već bi zahtevala i angažovanje mnogo većih resursa, a samim tim i veće troškove (hostinga).
Rešenje je u korišćenju samo 5000 slika u originalnoj veličini koje bi samo za potrebe listanja kataloga (thumbnails) smanjili na odgovarajuću veličinu. Recimo da su nam sve slike u katalogu veličine 500 x 300 piksela, za potrebe funkcije listanja kataloga iste te slike smanjićemo na 50 x 30 piksela.
<?php
function promena_velicine($sirina, $visina, $target) {
//uzima se širina i visina slike, pa se za utvrđivanje procenta uzima veća vrednost
if ($sirina > $visina) {
$percentage = ($target / $sirina);
} else {
$percentage = ($target / $visina);
}
//utvrđuje se nova vrednost množenjem sa procentom, i zatim se zaokružuje
$sirina = round($sirina * $percentage);
$visina = round($visina * $percentage);
//u HTML-u, unutar image taga, ispisujemo novi umanjeni format slike
return “width=\”$sirina\” height=\”$visina\”";
}
?>
Naravno, ovu funkciju možemo iskoristiti i ukoliko imamo bazu slika različitih veličina, pošto koristimo procentualno umanjenje, s tim što će nam tada i thumbnail-ovi biti različite umanjene veličine. Sve što je potrebno je da ugrađenom funkcijom getimagesize() očitamo dimenzije slike:
$slika = getimagesize(“slike/artikal001.jpg”);
Ovim smo dobili promenljivu $slika, koja je u stvari niz tačnih informacija o određenoj slici koju želimo da prikažemo. Indeks 0 (nula) – ($slika[0]) predstavlja širinu slike, a iza indeksa 1 ($slika[1]) stoji visina slike. Na kraju cela funkcija za promenu veličine izgledala bi ovako:
<?php
//preuzivanje veličine slike i “punjenje” niza
$slika = getimagesize(“slike/artikal001.jpg”);
?>
<!- standardni html image tag –>
<img src=”slike/artikal001.jpg” <?php promena_velicine($slika[0],
$slika[1], 100); ?> >
Parametar 100 određuje maksimalnu moguću veličinu visine ili širine slike koja se umanjuje. ![]()
Klase i objekti
17.05.2007

Klase su opisni elementi koji predstavljaju grupu posebnih elemenata – objekata, koji se nalaze unutar iste grupe
K lase predstavljaju opštu kategoriju u objektno-orijentisanom programiranju, koja opisuje grupu posebnih elemenata koji se nazivaju objekti i nalaze se unutar grupe. Klasa je opisni element, i u programiranju služi za definisanje skupa atributa ili skupa akcija (funkcija) koje su dostupne drugim delovima programa, a karakteristicne su za sve clanove jedne klase. Definisanje klasa u objektno-orijentisanom programiranju je vrlo slicno definisanju tipova podataka u strukturnom programiranju.
U PHP-u jedna klasa je, najjednostavnije receno, kolekcija varijabli i funkcija koje manipulišu ovim varijablama. U sledecim redovima videcemo nacin definisanja jedne klase:
<?php
class Racun {
var $stavke;
// Stavke koje se kupuju
// Dodavanje odredj. br $kom artikala na racun br. $ser_br
function dodaj_stavku ($ser_br, $kom) {
$this->stavke[$ser_br] += $kom;
}
// Skidanje odredj. br $kom artikala sa racuna br. $ser_br
function ukloni_stavku ($ser_br, $kom) {
if ($this->stavke[$ser_br] > $kom) {
$this->stavke[$ser_br] -= $kom;
return true;
} else {
return false;
}
}
}
?>
Kao što možete videti, definisali smo klasu “Racun” (kupovni racun) koja sadrži odredeni broj artikala – stavki (niz $stavke) i dve funkcije:
- dodaj_stavku() – funkcija za dodavanje odredeneog broja (kom) artikala (ser_br) na racun
- ukloni_stavku()- funkcija za skidanje, takode, odredenog broja (korisnik ne mora poništiti kupovinu svih) stavki sa racuna.
Pošto smo rekli da su klase kao tipovi podataka, da bi ih upotrebili u programiranju, potrebno je da deklarišemo varijable na osnovu klase:
$racun = new Racun;
$racun->dodaj_stavku("10", 1);
Ovaj kod ce kreirati objekat $racun koji pripada klasi Racun. Zatim smo funkcijom “dodaj_stavku()”, na racun dodali 1 komad artikla sa serijskim brojem 10.
Klase inace mogu biti proširenja drugih klasa. Pri tome, proširena klasa ima sve varijable i funkcije osnovne klase (kroz tzv. nasledivanje) i može da ima dodatne sopstvene varijable i funkcije. Da naglasimo i to da višestruko nasledivanje nije podržano. Evo primera proširivanja prethodno definisane klase Racun:
class Kupovni_Racun extends Racun {
var $kupac;
function unos_kupca ($ime) {
$this->kupac = $ime;
}
}
Ovim smo definisali novu klasu – Kupovni_Racun, koja ima sve varijable i funkcije kao i klasa Racun, kao i dodatnu varijablu $kupaci funkciju unos_kupca(). ![]()
Unos podataka u MySQL bazu
17.05.2007
U ovom prilogu predstavljamo vam kako iskoristiti baze podataka, ali ovaj put za upis postojeće tabele i čuvanje podataka bitnih za web aplikacije
N akon upoznavanja sa načinima pristupa bazama podataka koje se nalaze na MySQL serveru, i iščitavanja i prikazivanja tih podataka u browser-u, predstavićemo vam kako iskoristiti iste baze podataka, ali ovaj put za upis postojeće tabele.
Za potrebe primera, pretpostavićemo da imamo bazu podataka “mojaBaza” i tabelu “Proizvod” u njoj, sa poljima [id], [naziv], [tip] i [količina].
Za početak, da bi uopšte nešto upisali u bazu podataka mora prethodno te podatke preuzeti od korisnika i zatim ih proslediti odgovarajućoj PHP skripti. Zato je potrebno da prvo kreiramo HTML formular koji će služiti za unos traženih podataka. Formular može da izgleda npr. ovako:
<HTML>
<HEAD>
<TITLE> Formular unosa u magacin</TITLE>
</HEAD>
<BODY BGCOLOR=”#FFFFFF”>
<center>
<FORM METHOD=POST ACTION=”dodaj.php“>
<input type=”hidden” name=”id” value=”NULL“>
<TABLE border=”0″ cellpadding=”0″ cellspacing=”0″>
<TR height=”20″>
<TD colspan=”3″>Unos u magacin</TD>
</TR>
<TR>
<TD>Naziv proizvoda</td>
<TD> <input name=”naziv” type=”text“> </TD>
</TR>
<TR>
<TD >Tip proizvoda</td>
<td> <input name=”tip” type=”text” > </TD>
</TR>
<TR >
<TD >Količina</td>
<td> <INPUT NAME=”kolicina” TYPE=”text“> </TD>
</TR>
<tr>
<td><center>
<input name=”submit” type=”submit” value=”Unesi“>
</td>
</tr>
</TABLE>
</FORM></BODY></HTML>
Kao što možete videti na slici, imamo tri ulazna INPUT polja koja služe za unos jednog novog sloga u tabelu [Proizvod]. Pritiskom na dugme [Unesi], metodom POST podaci se šalju skripti “dodaj.php” na obradu. Stranica “dodaj.php” će imati sledeći kod:
<?
$DBhost = “naziv_servera”;
$DBuser = “kor_ime”;
$DBpass = “lozinka”;
$DBName = “mojaBaza”;
$table = “Proizvodi”;
$connection = mysql_connect (“naziv_servera”, “kor_ime”, “lozinka”)
or die(“Povezivanje nije moguce.”);
$sqlquery = “INSERT INTO $table
VALUES(‘$id’, ‘$tip’, ‘$naziv’,'$kolicina’)”;
$results = mysql_query($sqlquery);
mysql_close();
print ” <HTML> <TITLE> Unos u bazu podataka </TITLE> <BODYBGCOLOR=\”#FFFFFF\”> <center>
<table border=\”0\”width=\”500\”><tr><td>”;
print “<p> <center>Upravo ste u bazu uneli sledeće podatke <p><blockquote>”;
print ” Naziv proizvoda: $naziv
<p>Tip proizvoda: $tip
<p>Količina: $kolicina
</blockquote></td></tr>
</table>
</center></BODY></HTML>”;
?>
Na početki koda inicijalizujemo varijable koje se koriste u skripti, a zatim se konecionom varijablom $connection spajamo na bazu i odgovarajuću tabelu. Jednostavno, umesto ovih gore navedenih (naziv_servera, kor_ime, lozinka…), unesite sostvene vrednosti varijabli. Zatim dolazi ona ljučna linija PHP koda, a to je SQL naredba kojom u tabelu [Proizvodi] unosimo novi slog sa vrednostima prenetim iz formulara.
Prvo kreiramo sam SQL upit koji smeštamo u $sqlquery varijablu i zatim tu varijablu prosleđujemo ugrađenoj funkciji mysql_query. Zapazite još i polje [id], odnosno varijablu. Ovo polje u tabeli je AUTO_INCREMENT polje, tako da tu ne moramo imati nikakav ulaz, tj. za njega se brine sam MySQL sistem (uvećava vrednost u svakom novom slogu za korak 1). I to je to, ostaje na vama da isprobate ovaj primera, i da ga kasnije primenite u sopstvene aplikacije. ![]()
Kontrolna struktura “switch”
17.05.2007
Instrukciju “Switch” ćemo upotrebiti u situacijama kada imamo kaskadnu serijeu “If” naredbi
Instrukcija “switch” je slična seriji “IF” naredbi koje se nalaze u istom izrazu. U mnogo situacija, trebaćete da npr. upoređujete istu varijablu (ili ceo izraz) sa više različitih vrednosti, i pri tome da u zavisnosti od jednakosti ove dve vrednosti izvršite određeni (različit) programski kod. Ova naredba je ekvivalentna naredbi “Select … Case”, Visual Basic-a. U naredna dva primera videćete dva načina za rešavanje istog problema, prvi način koristi seriju “If” instrukcija, a drugi način naredbu “Switch”:
<?php
if ($a == 0) {
print "a je jednako 0";
}
if ($a == 1) {
print "a je jednako 1";
}
if ($a == 2) {
print "a je jednako 2";
}
switch ($a) {
case 0:
print "a je jednako 0";
break;
case 1:
print "a je jednako 1";
break;
case 2:
print "a je jednako 2";
break;
}
?>
Jako je bitno da razumete način na koji se ova naredba izvršava, jer ćete inače načiniti greške. Naredba “switch” se izvršava liniju po liniju (zapravo, naredbu po naredbu). U prvom trenutku ne izvršava se nijedna naredba. Tek kada PHP parser utvrdi koja PHP vrednost u CASE izrazu odgovara vrednosti SWITCH izraza, tada počinje da se izvršava programski kod. PHP izvršava instrukcije do kraja “switch” bloka, ili do “brake” naredbe. Pazite, ukoliko ne napišete naredbu “Brake” na kraju svakog “Case” bloka, PHP će nastavljati da izvršava sve naredne “Case” blokove. Pogledajte sledeći primer:
<?php
switch ($a) {
case 0:
case 1:
case 2:
print "a je manje od 3, ali nije negativno";
break;
case 3:
print "a je 3";
}
?>
Ukoliko je varijabla $a jednaka nuli (0), PHP će izvršiti sve naredbe za ispis (print)! Ako je vrednost varijable jedan (1), PHP će izvršiti obe, donje naredbe za ispis. Tek ako je vrednost varijable dva (2), imaćemo “očekivano” ponašanje ove strukture i ispisaće se samo “a je manje od 3, ali nije negativno“, jer iza ove naredbe sledi naredba prekida – “brake”. Ovo znači da obavezno morate koristiti naredbu prekida.
Kod naredbe “switch” uslov se proverava samo jedanput, a rezultat se upoređuje sa svakom “Case” instancom. Naredba “switch” je bolje rešenje od višestrukih “If … else if” naredbi, jer se brže izvršava (zato što se uslov višestruko proverava). Specijalan slučaj Case izraza predstavlja “podrazumevana” Case naredba, čiji se programski kod izvršava ukoliko nije zadovoljena nijedna prethodna Case instanca. Evo i primera:
<?php
switch ($a) {
case 0:
print "a je 0";
break;
case 1:
print "a je 1";
break;
case 2:
print "a je 2";
break;
default:
print "a nije ni 0, ni 1, ni 2";
}
?>
![]()
Validacija e-mail adresa i verifikacija domena
17.05.2007
Pre nego što prihvatite neku e-mail adresu i prosledite je nekoj web aplikaciji ili bazi podataka, bilo bi dobro da proverite da li je uneta adresa uopšte smislena
Predstavljamo vam laku, brzu i nadasve efikasnu funkciju za validaciju (proveru) e-mail adresa koje se inače prihvataju sa raznih formulara. Preporučljivo je da, ako je moguće, izvršite validaciju svih polja formulara, jer će te na taj način smanjiti zagušenje na serveru i ubrzati komunikaciju sa korisnicima.
Evo i kako bi mogla da izgleda osnovna funkcija koja će proveriti validnost e-mail adrese, odnosno da li je sintaksno pravilno uneta:
<?
function provera_emaila($adresa) {
$uslov1 = (ereg(‘^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+’.
‘@’.
‘[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.’.
‘[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$’,
$adresa));
$uslov2 = (preg_match(‘/.+\.\w\w+$/’,$adresa));
return ($uslov1 && $uslov2);
}
?>
Kao što možete videti, prvo korišćenjem sistemske funkcije ereg() proveravamo da li specijalni karakteri nalaze unutar unete string-varijable. Ova funkcija vraća True ili False u zavisnosti rezultata pretrage. Nakon toga proveravamo ispravnost unetog domena e-mail adrese, na taj način što se proverava sadržavanje najmanje 1 tačke “.” unutar naziva domena. Upotrebljene sistemske funkcije su sastavni deo PHP 3 i 4. Takođe, važno je napomenuti da unutar naziva domena može biti i više tačaka, npr. ‘ftn.ns.ac.yu‘, [to proveravamo drugom funkcijom preg_match().
I na kraju, ukoliko su zadovoljena oba uslova ($r1 && $r2), funkcija provera_emaila vraća istinosnu vrednost – True, i e-mail adresa može dalje da se procesira. ![]()
Upload fajlova
17.05.2007
Starije verzije PHP-a nemaju funkcije koje direktno rukuju upload-om fajlova, ali je uz pomoć drugih ugrađenih funkcija, ipak moguća ova operacija
U novijim verzijama PHP-a (počeviši od verzije4) postoje načini i funkcije za upravljanjem upload-om fajlova, korišćenjem specijalnog ugrađenog (sistemskog) niza $HTTP_POST_FILES, ali u ovom tekstu ćemo se pozabaviti kako to isto uraditi u starijim verzijama PHP-a.
Pretpostavimo da smo za upload fajlova pripremili HTML formular sličan ovome:
<form method=”post” enctype=”multipart/form-data” action=”script.php”>
<INPUT TYPE=”hidden” name=”MAX_FILE_SIZE” value=”1000″>
<input type=”file” name=”userfile”>
<input type=”submit”>
</form>
Skriveno polje MAX_FILE_SIZE (obavezno se ubacuje pre taga <input type=file>) se koristi za određivanje maksimalne veličine fajla koji se uload-uje. Određivanje ovog parametra, browser neće odaslati fajl serveru ukoliko je veličina veća nego što je određena ovim parametrom. Kada je forma odaslata PHP kreira i popunjava specijalne varijable koje su u vezi sa transfer podacima. Nema potrebe za ručnim parsiranjem jednog takvog HTTP zahteva, PHP će sveo svemu pobrinuti, te će obezbediti upload varijable. Zapazite da se nazivi varijabli sastoje od dela, prvi deo je isti kao naziv ulaznog polja sa HTML formulara
PHP varijable
Pretposatvimo da imamo kôd sličan ovome:
<input type=”file” name=”userfile”>
, u vašem PHP skriptu će automatski biti kreirane sledeće varijable:
- $userfile – ovo je naziv privremenog fajla na serveru (kreira se nakon upload-a). Ovu varijablu možete koristiti za kopiranje fajla na bilo koju drugu loakciju.
- $userfile_name – naziv fajla koju je korisnik locirao na klijentskoj mašini i odredio za upload.
- $userfile_size – veličina upload-ovanog fajla u bajtovima.
- $userfile_type – MIME tip upload-ovanog fajla. Na primer: “image/gif”.
Takođe, tu je i ugrađena funkcija koja proverava varijablu privremenog naziva fajla. Funkcija is_uploaded_file($userfile), vraća True ukoliko $userfile sadrži naziv privremeno upload-ovanog fajla, a u suprotnom False.
Sintaksa funkcije koja služi za prebacivanje privremenog fajla, na serverskoj mašini (naravno, u skladu sa pripadajućim dozvolama) je sledeća:
move_uploaded_file($userfile, “/lokacija/fajl.nesto”)
Na kraju, evo i PHP kôda koji ćemo upotrebiti za smeštanje upload-ovanog fajla na određenu lokaciju:
<?
if (is_uploaded_file($userfile)) {
move_uploaded_file($userfile, “/lokacija/fajl.new”);
}
?>
Isto možemo da odradimo i sa funkcijom Open:
<?
if (is_uploaded_file($userfile)) {
copy($userfile, “/place/file.new”);
}
?>
![]()
Višestruka selekcija stavki combo-box-a
17.05.2007
Omogućite korisnicima vaših web aplikacija mogućnost simultanog izbora više opcija uz pomoć specijalnog combo-box-a
Da korisnicima vaših Web aplikacija omogućili da simultani izbor više opcija koje nudi jedan HTML combo-box, <select> tag mora da bude određen i sa mutiple parametrom. Pored ovog, bitan je i parametar size kojim određujemo broj vidljivih opcija unutar jednog combo-box-a. U HTML specifikaciji 3.2 ovaj parametar funkcioniše samo ukoliko je određen i parametar multiple.
U novijim specifikacijam (HTML 4.0) možete upisati size u pojedinačni combo-box da bi videli više od jedne opcije, u isto vreme.
Kada imamo combo-box sa mogućnošću višestruke selekcije, svaki CGI zahtev (zahtev od strane klijenta) će sadržati par parametara u obliku:
naziv=vrednost,
i to za svaku izabranu stavku combo-box-a, gde naziv – predstavlja naziv parametra određen unutar taga <select>, a vrednost1, vrednost2… – predstavljaju vrednosti parametara <option> taga koji su izabrani od strane korisnika.
PHP combo-box
PHP automatski konvertuje jedan ovakav CGI zahtev u niz varijabli, sa izabranim vrednostima. Da bi iskoristi poslate vrednosti potrebno je samo da odredite naziv parametra select taga, isti kao i naziv niza:
naziv=”stavke[]“
Ovim ćete pomoći PHP-u da kreira niz $stavke iz jednog CGI zahteva:
stavke[]=vred1?stavke[]=vred2…
koji će biti popunjen izabranim vrednostima iz combo-box-a
HTML kod sa combo-box-om koji podržava višestruku selekciju mora da bude nešto slično ovom:
<select name=’meni[]‘ multiple>
<option value=’1′>Jabuke</option>
<option value=’2′>Banane</option>
</select>
Sada možete da napišete PHP skript kojeg će pokrenuti submit kôd, a koji će “rukovati” sa nizom izabranih vrednosti (meni[]).
PHP primer
Ovo i PHP primera koji će izabrane stavke combo-box-a odštampati na ekranu:
<%
$i=0;
while($i<count($meni)){
print $meni[i];
print “, “;
$i=$i+1;
}
%>
Oblast delovanja varijabli
17.05.2007
Sledi vrlo važna priča koja se tiče varijabli, a to je oblast delovanja varijabli i njihov “vek trajanja”
Do sada smo naučili kako se varijable definišu i upoznali smo se sa vrstama varijabli. Sledi vrlo važna priča koja se tiče varijabli, a to je oblast delovanja varijabli i njihov “vek trajanja”. Oblast delovanja varijable predstavlja deo programskog koda unutar koga data varijabla egzistira. Većina PHP varijabli ima lokalni karakter, što znači da je data varijabla “vidljiva” samo unutar jedne procedure (ili funkcije), a nije “vidljive” za druge procedure u PHP skriptu.
U sledećem PHP primeru videćemo dve oblasti delovanja varijabli:
<?php $a = 1; /* globalna oblast delovanja */ Function Stampaj () { echo $a; /* referenca ka varijabli lokalnog tipa*/ }
Stampaj ();
?>
Prethodni skript neće prouzrokovati nikakv izlaz (znači, neće biti štampana jedinica) jer naredba “echo” referencira lokalnu varijablu “$a”, a lokalnoj “verziji” ove varijabli nije dodeljena nikakva vrednost. Zbog ovoga, kada želimo da unutar funkcije upotrebljavamo globalne varijable moramo ih tako i definisati (globalne unutar funkcije):
<?php
$a = 1;
$b = 2;
Function Sabiranje () {
global $a, $b;
$b = $a + $b;
}
Sabiranje ();
echo $b;
?>
Rezultat gornjeg skripta biće “3″. Deklarisanjem varijabli “$a” i “$b” kao globalne unutar funkcije, mi smo izvršili referenciranje na promenljive koje se nalaze van funkcije. Pri tome, nema nikakvih ograničenja u broju globalnih varijabli kojima ćete manipulisati unutar jedne funkcije. U slučaju da u gornjem primeru, u funkciji “Sabiranje()”, niste definisali varijable kao globalne – rezultat bi bio “2″.
Prethodni primer možemo napisati i na drugi način.
<?php
$a = 1;
$b = 2;
Function Sabiranje () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sabiranje ();
echo $b;
?>
Ovde se pristup spoljnim varijablama vrši preko ugrađenog PHP definisanog niza “$GLOBALS”. Niz $GLOBALS je asocijativni niz naziva globalnih varijabli, gde indekse predstavljaju nazivi varijabli, te se preko njih dolazi do vrednosti samih globalnih varijabli.
Još jedna bitna mogućnost kakda govorimo o oblasti delovanja varijabli, je i mogućnost njihovog definisanja kao statičkih varijabli (“Static“). Statičke varijable egzistiraju samo u loklanoj funkciji, s tim što ne gube svoju vrednost kada programom napustimo datu funkciju. Pogledajte sledeći primer:
<?php
Function Brojac () {
$a = 0;
echo $a;
$a++;
}
Brojac () ;
echo '<br>' ;
Brojac () ;
?>
Ova funkcija je uglavnom beskorisna pošto svaki put kada se pozove (u našem slučaju dva puta), vrednost varijable “$a” postavlja na nulu i štampa nulu. Instrukcijom “$a++” vršimo povećanje vrednosti varijable za jedan, ali to ovde nema nikakfu funkciju, zbog toga što nakon ove instrukcije funkcija završava, a pri njenom ponovnom pozivu vrednost se vraća na nulu. Da bi funkcija “Brojac()” stvarno bila korisna, varijablu “$a” moramo definisati kao statičku:
<?php
Function Brojac () {
static $a = 0;
echo $a;
$a++;
}
Brojac () ;
echo '<br>' ;
Brojac () ;
?>
Sada će nakon svakog poziva funkcije, vrednost varijable “$a” uvećati za jedan (kao na slici). Ovakvim definisanjem vrednost lokalne varijable čuvamo u memoriji i nakon završetka date funkcije.
Kreiranje PHP brojača
17.05.2007
Iako većina provajdera kao i nezavisnih servisa nudi besplatno registrovanje posetilaca nije na odmet da i sami, radi veće pouzdanosti, kreirate sopstvene brojače
Logika same metode za kreiranje brojača je vrlo jednostavna. U suštini, radi se o tome da svaki put kada neko poseti vaš sajt i zatraži neki fajl, funkcija će otvoriti predefinisani *.txt fajl i dodaće novi podatak na kraj fajla. Na ovaj način dobijamo jednostavni brojač poseta. Sve što treba da uradite je da pozovete predefinisani fajl sa stranice koju pratite funkcijom require, sledećim kodom:
<?php
require(“brojac.php”);
?>
Nakon ovoga, kreiraćemo fajl brojac.txt. U dva posebna fajla čuvaćemo sve hit-ove i sve site refere-re, da bi saznali odakle dolaze posetioci na datu stranicu.
Kreiranje koda
Za početak kreiraćemo brojac.php, koji će otvarati prethodna dva fajla i smestiti u njih sve potrebne informacije. Kôd za dodavanje-brojanje hit-ova mogao bi da izgleda ovako:
<?php
$ref = $HTTP_REFERER;
$datum = date("d/m @ g:i A", time());
$fajl = "brojac.txt";
$fd = fopen ($fajl, "r+");
$sadrzaj = fread ($fd, filesize ($fajl));
$novi = $sadrzaj+1;
fclose($fd);
$fd = fopen ($fajl, "w");
fwrite($fd,$novi);
fclose ($fd);
Kôd za praćenje refere-ra mogao bi da izgleda ovako:
$reffajl = "ref.txt";
$fd = fopen ($reffajl, "a");
fwrite($fd, "Referer: ".$ref." - Datum: ".$date." - Broj hit-a: ".$novi."\r\n");
fclose($fd);
?>
Kada isprobate kod u nekoliko puta učitate u browser, stranicu koja sadrži prvi deo koda (require(“brojac.php”)), fajl ref.txt će izgledati kao na slici (radi se o lokalnom serveru).
Instalacija PHP komponenti
17.05.2007
Šta vam je sve potrebno da bi na svom kompjuteru, “u lokalu”, radili sa PHP-om. I naravno gde pronaći potrebne komponente. Kako izvršiti instaliranje jednog od mnogobrojnih PHP paketa
Zbog svih onih koji tek počinju da ulaze u svet PHP-a, objasnićemo postupak instalacije PHP razvojnog okruženja, odnosno svih potrebnih elemenata za razvoj PHP skriptova u svima nama poznatom Windows-u. Pošto se PHP izvršava na serveru, razvoj bi trebao da se odigrava na vašem ličnom računaru koji je povezan stalnom vezom sa host provajderom. Na njemu bi pisali HTML-PHP programski kod i to odmah testirali na serveru. Ali pošto taj “luksuz” većina ne može da priušti, rešenje se nalazi u instalaciji sopstvenog lokalnog Web servera sa podrškom za PHP. Ovo će vam pružiti veliku udobnost u radu, a kada završite neki projekat lako ga je prebaciti na server vašeg host provajdera.
Pošto većina Host provajdera radi na platformi Linux/Apache/PHP/MySQL, i vi bi trebali da na svom računaru instalirate ovu opciju radi potpune kompatibilnosti (a ovo je malo komplikovanije rešenje). Ali, ne mora sve da bude tako, sve ovo može da se odradi i na većinskoj Windows platformi. Rešenje se nalazi u instalaciji besplatnih gotovih paketa (namenjenih Windows-ima) koji sadrže sve potrebne elemente. Preporučujemo vam jedan paket, koji u sebi sadži sve potrebno:
- Apache web server, verzije 1.3.14
- PHP 4.0.2
- Perl 5
- MySQL 3.23
Paket je proizvod firme “NuSphere” koja je vlasništvo velike softverske kuće Progress Software, a instalacioni paket možete skinuti sa adrese:
Paket je veličine oko 23 Mb (zapakovan), a pored gore navedenih komponenti u paketu ćete naći i dosta literature u elektronskom obliku. Kada skinete instalacioni paket i raspakujete ga, biće dovoljno da startujete instalaciju preko fajla setup.exe. Po startovanju, otvoriće vam se prozor browser-a u kome treba samo da kliknete dugme Install i krenuće instalacija koja će potrajati nekoliko minuta (prozor je kao na gornjoj slici). I to bi bilo sve, sada ste spremni za svoje prve korake u PHP-u.


