Informacione tehnologije > Web developer

PHP tutorijal

(1/3) > >>

VLADIX:
osnove PHP jezika
Definisanje konstanti
PHP u sebi, kao i svi drugi jezici, nosi nekoliko predefinisanih konstanti, a naravno obezbeduje i mehanizam za definisanje novih konstanti tokom run-time-a

K ao što znate, iz drugih programskih jezika, konstante predstavljaju identifikatore dodeljenih vrednosti koji se ne menjaju tokom izvršavanja programa. I sam naziv konstanti je logican, jer "promenljive" (varijable) programer može menjati, dok se vrednost konstanti ne može menjati. PHP u sebi nosi nekoliko predefinisanih konstanti, a naravno obezbeduje i mehanizam za definisanje novih konstanti tokom run-time-a. Inace vrlo su slicne varijablama, s tim što se za razliku od njih definišu uz pomoc funkcije "define()" i kasnije im ne može biti dodeljena druga vrednost.

U sledecim redovima predstavicemo vam neke od predefinisanih konstanti, koje možete koristiti u svakom trenutku:

    * PHP_VERSION - konstanta koja sadrži vrednost verzije PHP parsera koja se koristi.
    * PHP_OS - konstanta koja sadrži string - naziv operativnog sistema na kome se radi PHP parser. Na primer: Linux
    * TRUE - vrednost true - 1.
    * FALSE - vredniost false - 0.

Da bi isprobali ove konstante, kreiracemo mali PHP skript koji ce "odštampati" vrednost ovih konstanti:

<?php
echo PHP_VERSION;
echo TRUE;
echo PHP_OS;
?>

Rezultat ce zavisiti od vaše konfiguracije.

Kao što smo rekli, pored predefinisanih možemo definisati i naše korisnicke konstante. Za definisanje konstanti se koristi ugradena funkcija "define()", cije je sintaksa sledeca:

int define (naziv_konstante, dodeljena_vrednost [, int mala_slova])

Ovom sintaksom definišemo konstante, koje su vrlo slicne varijablama, osim u sledecem:

    * Ispred identifikatora konstanti ne ide znak "$".
    * Konstantama možete pristupiti sa bilo kog mesta u skriptu, bez obira na oblast prostiranja.
    * Kada se jednom definišu, ne mogu biti redefinisane ili nedefinisane.

Argumenti "naziv_konstante" i "dodeljena_vrednost" predstavljaju, sam naziv konstante i njenu vrednost, a argument "mala_slova" odreduje osetljivost na upotrebu malih-velikih slova. Po default-u konstanta je osetljiva na upotrebu malih-velikih slova (nije isto "KONSTANTA" i "Konstanta"), a ako argumentu dodelite vrednost "1" - onda nece biti. Za primer definisacemo dve konstante i izvršiti ispis njihovih vrednosti:

<?php
define ("RECENICA", "Recenica koja ce se ispisati.");
echo RECENICA;
?>

Skript ce rezultovati ispisom vrednost dodeljenu konstanti "RECENICA".



prilagodavanje velicine slika uz pomoc PHP-a
Laka izmena velicine slike
Po potrebi uz pomoc PHP-a možemo online promeniti velicinu slika i na taj nacin smanjiti potrebne rasurse za web sajt

R ecimo da imate (vi ili neko drugi) web sajt cija 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 slicicu (thumbnail) koja bi mu bolje ukazivala o cemu se radi, sa mogucnošcu uvecanja iste slike.

Problem nastaje kada imate veliki katalog, od recimo 5.000 artikala. To znaci da morate imati 5.000 slika u originalnoj velicini i još 5.000 istih takvih ali umenjenih (tzv. thumnail-ova). Ova solucija ne samo da je donekle komplikovanija , vec bi zahtevala i angažovanje mnogo vecih resursa, a samim tim i vece troškove (hostinga).

Rešenje je u korišcenju samo 5000 slika u originalnoj velicini koje bi samo za potrebe listanja kataloga (thumbnails) smanjili na odgovarajucu velicinu. Recimo da su nam sve slike u katalogu velicine 500 x 300 piksela, za potrebe funkcije listanja kataloga iste te slike smanjicemo na 50 x 30 piksela.

<?php
function promena_velicine($sirina, $visina, $target) {

//uzima se širina i visina slike, pa se za utvrdivanje procenta uzima veca vrednost

if ($sirina > $visina) {
$percentage = ($target / $sirina);
} else {
$percentage = ($target / $visina);
}

//utvrduje 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 razlicitih velicina, pošto koristimo procentualno umanjenje, s tim što ce nam tada i thumbnail-ovi biti razlicite umanjene velicine. Sve što je potrebno je da ugradenom funkcijom getimagesize() ocitamo dimenzije slike:

$slika = getimagesize("slike/artikal001.jpg");

Ovim smo dobili promenljivu $slika, koja je u stvari niz tacnih informacija o odredenoj 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 velicine izgledala bi ovako:

<?php

//preuzivanje velicine 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 odreduje maksimalnu mogucu velicinu visine ili širine slike koja se umanjuje.

VLADIX:
Rad sa bazama podataka
Unos podataka u MySQL bazu
U ovom prilogu predstavljamo vam kako iskoristiti baze podataka, ali ovaj put za upis postojece tabele i cuvanje podataka bitnih za web aplikacije

N akon upoznavanja sa nacinima pristupa bazama podataka koje se nalaze na MySQL serveru, i išcitavanja i prikazivanja tih podataka u browser-u, predstavicemo vam kako iskoristiti iste baze podataka, ali ovaj put za upis postojece tabele.

Za potrebe primera, pretpostavicemo da imamo bazu podataka "mojaBaza" i tabelu "Proizvod" u njoj, sa poljima [id], [naziv], [tip] i [kolicina].

Za pocetak, da bi uopšte nešto upisali u bazu podataka mora prethodno te podatke preuzeti od korisnika i zatim ih proslediti odgovarajucoj PHP skripti. Zato je potrebno da prvo kreiramo HTML formular koji ce 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 >Kolicina</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" ce imati sledeci 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 sledece podatke <p>

    ";
    print " Naziv proizvoda: $naziv
    <p>Tip proizvoda: $tip
    <p>Kolicina: $kolicina

</td></tr>
</table>
</center></BODY></HTML>";
?>

Na pocetki koda inicijalizujemo varijable koje se koriste u skripti, a zatim se konecionom varijablom $connection spajamo na bazu i odgovarajucu tabelu. Jednostavno, umesto ovih gore navedenih (naziv_servera, kor_ime, lozinka...), unesite sostvene vrednosti varijabli. Zatim dolazi ona ljucna 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 prosledujemo ugradenoj 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 (uvecava 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.

VLADIX:
lokalizacija u PHP-u (I deo)
Prilagodavanje aplikacija individualnim potrebama korisnika
U ovom clanku cemo Vam predstaviti rješenja za programiranje "više-jezicnih" stranica na veoma jednostavan nacin


K ao što smo spomenuli, PHP ima ugradenu podršku za lokaliranje odredenih opcija. Glavna komanda za prilagodavanje lokalizacije je set_locale():

<?php
setlocale (LC ALL, 'nl NL');
?>

 

Ovim ste rekli PHP-u da koristi holandska (odnosno nizozemska) imena gdje god ima priliku. Ta podrška zavisi od sistema i podrške sistema za druge jezike. Druge korisne komande za lokalizaciju su strftime(), localeconv() i strcoll() [1].

Napomena:
Tekst je objavljen u najnovijem broju racunarskog casopisa ASDFdeveloper.com koji je namenjen programerima i projektantima.

 

 

Medutim, u slucaju da želite da koristite neke opcije ili jednostavno neki jezik za koji u PHP-u nema podrške, morate sami napraviti alternativno rješenje. Na to se odnosi drugi dio ovog clanka.

Lokalizacija teksta
Posjetioci ASDFdeveloper.com stranice dolaze najvecim dijelom iz balkanskih država, i to uglavnom Bosne i Hercegovine, Hrvatske, Srbije i Crne Gore. Za razliku od ostalih država, u Hrvatskoj se imena mjeseci zovu drugacije (Januar = Sijecanj, Febraur = Veljaca ...)- Ako sa hrvatskom IP adresom otvorite ASDFdeveloper.com stranica, mjeseci ce biti prikazani na hrvatskom jeziku. To je jedan mali primjer korištenja lokalizacije.
Ako na drugu stranu morate da izvršite lokalizaciju dosta razlicitih stvari, onda se morate poslužiti drugim rješenjima. Zamislite da imate stranicu koja nudi razne informacije na engleskom i našem jeziku i posjetioci mogu odabrati izmedu ova dva jezika. To znaci da morate sve informacije imati na raspolaganju na dva razlicita jezika.
Prije nego što su dinamicke stranice našle svoje stalno mjesto na Internetu, vvebmasteri i dizajneri (i naravno programeri) imali su samo mogucnost da sve HTML stranice kreiraju više puta na više razlicitih jezika. To je znacilo puno više razlicitih file-ova i puno više posla. Ako koristite PHP, to uopšte nije problem.
Ako na svojoj stranici imate formular za registraciju ,kao npr. na :
http://www.asdfdeveloper.com/?action=reqistracija

na kojoj imate nekoliko razlicitih polja koje posjetioci moraju ispuniti, samim tim imate i neko-liko razlicitih rijeci koje morate prevesti na tri razlicita jezika:
- Ime i prezime (First name and surname, Vorname und Nachname)
- Korisnicko ime (Username, Benutzername)
- Korisnicka sifra (Passvvord, Passvvort)
- Pomoc (Help, Hilfe)
Kao što vidite ovdje imamo 4 razlicita stringa na tri razlicita jezika. Najlakše je ako ih snimite u jedan multidimenzionalni array:

<?php
$reg form = array
(
"nas"=>
(
"ime i prezime"=> "Ime i prezime",
"korisnicko ime"=> "Korisnicko ime",
"korisnicka sifra"=> "Korisnicka sifra"
"pomoc"=> "Pomoc"
),
"en" =>
(
"ime i prezime"=> "First name and surneme"
"korisnicko ime"=> "Username",
"korisnicka sifra'=> "Password",
"pomoc"=> "Help"
),
"de" =>
(
"ime i prezime"=> "Vorname und Nachname",
"korisnicko ime"=> "Benutzername",
"korisnicka sifra'=> "Passwort",
"pomoc"=> "Hilfe"
)
);
?>

Kao što vidite kreirali smo jedan multidimenzionalni array reg_form (skracenica za registracijaska forma) sa 3 podarraya za svaki jezik. "en" oznacava engleski, a "de" njemacki jezik (Deutsch).

Posjetiocu morate naravno uvijek ponuditi mogucnost da izabere drugi jezik, i da svaku stranicu može prikazati na drugom jeziku pomocu jednog klika. Ako na Vašoj stranici nema registracije korisnika, onda možete podatke snimiti u cookie odnosno session (vidi ASDF.developer, brojeve 6-9). Kada posjetioc izabere odedeni jezik, informacija se snima u cookie i onda je raspoloživa uvijek na svakoj podstranici.

U cookie snimate string "nas" ili "en" ili "de", zavisno od toga, šta je posjetioc izabrao, i cookie-ju možete dati ime "jezik". U Vašem programu bi to ovako izgledalo:

<?php
// informacija o izabranom jeziku je
// snimljena u $ COOKIE['jezik']
// i zbog kraceg pisanja snimamo vrijednost
// cookie-ja u varijablu $lang
$lang = $ COOKIE['jezik'];
// prikazujemo ime i prezime
echo $reg form[$lang]["ime i prezime"];
// prikazuje korisnicko ime
echo $reg form[$lang]["korisnicko ime"];
// prikazuje pomoc
echo $reg form[$lang]["pomoc"];
// itd. za druga polja i vrijednosti
?>

Ako je korisnik odabrao engleski jezik, onda ce vrijednost "en" biti upisana u cookie. Pošto se podarray-i u našem $reg_form arrayu zovu isto tako, onda je dovoljno da vrijednost direktno iz cookie-ja ubacite u varijablu kao u gornjem primjeru.

Naravno poželjno je ako bi provjerili da li vrijednosti iz cookie-ja postoji u array-u, i ako ne postoji da odaberete neku standardnu vrijednost, kao npr. "nas". To možete uraditi na sljedeci nacin:

<?php
if
    (in array($ COOKIE [ ' jezik' ] , $reg form))
   {
          $lang = $ COOKIE [ ' jezik' ] ;
else
{
          $lang = ' nas ' ;
}
?>

Tako izbjegavamo mogucnost da posjetioc rucno upiše vrijednost u cookie i pozove nešto neželjno.

U sljedecem dijelu cemo govoriti o malo naprednijim nacinima korištenja lokalizacije. Ali zapamtite da skoro sve funkcioniše na nacin slican ovom primjeru, ali da se koriste druge finese koje Vam mogu biti veoma korisne na stranici

VLADIX:
Manipulacija slika
Editovanje i prikazivanje slika pomocu PHP-a

PHP se sastoji od nekoliko desetina ekstenzija, medju kojima se nalazi i GD, graficka biblioteka, koja je zaduzena za kreiranje izmedju ostalog JPEG i PNG (izgovara se ping) slika, koje u svijetu webdizajna i webprogramiranja veliku ulogu igraju. Nazalost, GD ne podrzava vise GIF format, koji za kompresovanje koristi LZW algoritam, a na koji firma Unisys ima patent. Ako ipak zelite da GD podrzava GIF format, preko vecine search masina mozete naci starije verzije GD-a, u kojima je ta podrska bila ukljucena. PNG (Portable Network Graphics) format polako dostize GIF, ali iako vecina browsera podrzava PNG, ova trka ce potrajati jos dugo.

PHP raspolaze sa veoma dosta komandi (preko 50) koje odlicno rade sa GD ekstenzijom (ili bibliotekom). Mogucnosti su teoretski neogranicene, iako se naravno mora napomenuti da GD nije Adobe Photoshop ili Corel Draw. GD je kao i vecina drugih ekstenzija automatski ukljucena u sve novije verzije PHP-a, i jedino je morate aktivirati. Vise informacija o ekstenzijama mozete naci ovdje.

Ja sam sebi kao zadatak postavio, da napisem PHP kôd koji ce automatski ispuniti jednu kartu za voz (koja je malo umanjena u odnosu na prave karte, i naravno sa malo pojednostavljenim podacima). Na pocetku imamo kartu kao sto je vidite ovdje:

Kao sto vidite na karti, osim nekoliko informativnih podataka, nalaze se tri polja, koja mi moramo ispuniti: Name (ime), Country (Drzava) i Passport (broj pasosa). To znaci da moramo imati tri varijable koje preko odgovarajuceg formulara moramo poslati na ka funkciji koja ce ispisati podatke na kartu, tako da je osoba moze istampati. Nas formular, koji necemo ovdje praviti, mora imati minimum tri polja za nase tri varijable, i submit dugme, koje ce nakon klika na njega, pozvati skriptu u kojoj se nalazi funkcija koja ce upisati ova tri podatka na nasu kartu.

Za pocetak moramo definisati, u kojem formatu ce nasa slika biti. Ja sam izabrao JPG format. Takodje je vazno da znamo koje dimenzije ima nasa karta odnosno slika, a to je u nasem slucaju: 482x170 (duzina x visina) piksela. Slika se zove gd_karta_prazna.jpg. To mozete vidjeti takodje ako pogledate source kôd ove stranice.

Nakon sto smo definisali tri vazna podatka:

    * format: jpg
    * dimenzije: 482x170 px
    * ime: gd_karta_prazna.jpg

Vrijeme je da pocnemo sa prakticnim radom. Nasa slika gd_karta_prazna.jpg nece u stvarnosti biti modifikovana, nego cemo mi ustvari kreirati jednu temporarnu kopiju ovog file-a, na nju cemo upisati nas tekst, prikazati je u browseru i obrisati.

Nas kôd na pocetku izgleda ovako:

<?php
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";
$name = "Mirza Muharemagic";
$country = "Bosnia and Hercegovina";
$passport = "BH4764390";
?>

Kao sto vidite tu su nase tri varijable koje treba da upisemo na sliku, i link do slike, odnosno karte. Pripazite da upisete pravi i ako je moguce apsolutni link do slike.

Kao sto malo prije rekosmo, moramo napraviti kopiju nase karte. To radimo s jednom prakticnom komandom imagecreatefromjpeg(). Ova komanda kreira od jedne postojece slike jednu novu sliku, odnosno kopiju. Primjenu komande mozete vidjeti ispod, pri cemu cemo novokreiranu sliku ucitati u varijablu $karta:

<?php
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";
$karta = imagecreatefromjpeg($slika_karte);
?>

Sada vec mozemo upisati nas tekst na sliku. Kasnije cemo opisati par sitnica, odnosno primjeniti par dodatnih komandi kojima cemo popraviti izgled naseg teksta i slike. Za upisivanje teksta na sliku se koristi komanda imagestring(). Pomocu nje definisemo koju vrstu slova cemo koristiti, na kojem mjestu na slici treba da upisemo tekst, i koje boje je nas tekst. Ja sam u ovom primjeru ispod vec izracunao mjesto na kojem treba da bude upisan nas tekst. Vi to mozete uraditi pomocu bilo kojeg grafickog programa ili jednostavnim isprobavanjem komande imagestring():

<?php
## ovdje definisemo nase varijable
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";
$name = "Mirza Muharemagic";
$country = "Bosnia and Hercegovina";
$passport = "BH4764390";

## kreiramo kopiju slike i ucitavamo je u varijablu $karta
$karta = imagecreatefromjpeg($slika_karte);

## upisujemo varijable na sliku
imagestring($karta,2,61,77,$name,0);
imagestring($karta,2,75,96,$country,0);
imagestring($karta,2,80,115,$passport,0);
?>

Nakon upisivanja teksta nam je ostalo samo jos da posaljemo sliku ka browseru, i onda je obrisemo. To radimo sa dvije komande: imagejpeg() i imagedestroy(). Imagejpeg() salje sliku browseru, a imagedestroy() je onda brise, i nas mali program izgleda u puno obliku ovako:

<?php
## ovdje definisemo nase varijable
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";
$name = "Mirza Muharemagic";
$country = "Bosnia and Hercegovina";
$passport = "BH4764390";

## kreiramo kopiju slike i ucitavamo je u varijablu $karta
$karta = imagecreatefromjpeg($slika_karte);

## upisujemo varijable na sliku
imagestring($karta,2,61,77,$name,0);
imagestring($karta,2,75,96,$country,0);
imagestring($karta,2,80,115,$passport,0);

## saljemo sliku browseru i brisemo je odmah nakon toga
imagejpeg($karta);
imagedestroy($karta);
?>

Ako sada ubacite ovaj kôd u jedan prazan php file, i pozovete ga u browseru, vidjecete ovakvu sliku:

Zar ne izgleda dobro?! :). Jedna ideja: ovako mozete kreirati karte za kino, ugovore, flyere i sl. sa licnim podacima osoba.

Vi mozete nakon ovog kôda pisati bilo koju komandu koja prikazuje nesto u browseru, sve ce biti ignorisano, jer je ovo sada jedan .jpg file. Znaci sve dalje Vase echo, print i sl. komande nece funkcionisati. To znaci, da ce se na ovoj stranici otvoriti samo ova slika bez ikakvog teksta, pozadine i sl. To mozete veoma lako rijesiti tako sto cete napraviti jos jedan file, u kojem ce se nalaziti sve sto Vi zelite, a onda na mjestu gdje treba da se pojavi Vasa slika, ili kao u nasem slucaju karta za voz upisite link do naseg file. To funkcionise na sledeci nacin.

Napravite Vas file, npr. karta.php koji izgleda ovako:

<?php
$name = "Mirza Muharemagic";
$country = "Bosnia and Hercegovina";
$passport = "BH4764390";
?>

<html>
<head>
<title>Karta</title>
</head>
<body bgcolor="#FFFFFF">
<center>
<h1>Vasa Karta</h1>


<img src="print_kartu.php?name=<?php echo $name."&amp;country=".$country."&amp;passport=".$passport; ?>" alt="Vasa karta">
</center>
</body>
</html>

<?php
## kraj naseg file-a
?>

A ovako izgleda nas file print_kartu.php, koji pozivamo pomocu <img src ... i koji ce nam prikazati sliku:

<?php
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";

$karta = imagecreatefromjpeg($slika_karte);
imagestring($karta,2,61,
imagestring($karta,2,75,96,$country,0);
imagestring($karta,2,80,115,$passport,0);
imagejpeg($kart
imagedestroy($karta);
?>

Sada je ostalo da poboljsamo nekoliko stvari, iako nasa karta sada stvarno pristojno izgleda. Na listi ispod mozete naci nekoliko trikova i ideja, kako da poboljsate izgled Vase karte:

    * pomocu komande imagecolorallocate() mozete definisati boju slova npr.:
      <?php
      $narandzasta = imagecolorallocate($pic, 220, 210,60);
      imagestring($karta,2,80,115,$passport,$narandzasta
      ?>
    * velicinu slike mozete pomocu komandi imagesx() (duzina) i imagesy() (visina, sirina) i getimagesize()
    * imagestringup() pise tekst vertikalno

VLADIX:
Kontrolna struktura "switch"
Instrukciju "Switch" cemo upotrebiti u situacijama kada imamo kaskadnu serijeu "If" naredbi

Instrukcija "switch" je slicna seriji "IF" naredbi koje se nalaze u istom izrazu. U mnogo situacija, trebacete da npr. uporedujete istu varijablu (ili ceo izraz) sa više razlicitih vrednosti, i pri tome da u zavisnosti od jednakosti ove dve vrednosti izvršite odredeni (razlicit) programski kod. Ova naredba je ekvivalentna naredbi "Select ... Case", Visual Basic-a. U naredna dva primera videcete dva nacina za rešavanje istog problema, prvi nacin koristi seriju "If" instrukcija, a drugi nacin 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 nacin na koji se ova naredba izvršava, jer cete inace naciniti 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 pocinje 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 ce nastavljati da izvršava sve naredne "Case" blokove. Pogledajte sledeci 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 ce izvršiti sve naredbe za ispis (print)! Ako je vrednost varijable jedan (1), PHP ce izvršiti obe, donje naredbe za ispis. Tek ako je vrednost varijable dva (2), imacemo "ocekivano" ponašanje ove strukture i ispisace se samo "a je manje od 3, ali nije negativno", jer iza ove naredbe sledi naredba prekida - "brake". Ovo znaci da obavezno morate koristiti naredbu prekida.

Kod naredbe "switch" uslov se proverava samo jedanput, a rezultat se uporeduje 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 slucaj Case izraza predstavlja "podrazumevana" Case naredba, ciji 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
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 inace prihvataju sa raznih formulara. Preporucljivo je da, ako je moguce, izvršite validaciju svih polja formulara, jer ce te na taj nacin smanjiti zagušenje na serveru i ubrzati komunikaciju sa korisnicima.

Evo i kako bi mogla da izgleda osnovna funkcija koja ce 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šcenjem sistemske funkcije ereg() proveravamo da li specijalni karakteri nalaze unutar unete string-varijable. Ova funkcija vraca True ili False u zavisnosti rezultata pretrage. Nakon toga proveravamo ispravnost unetog domena e-mail adrese, na taj nacin što se proverava sadržavanje najmanje 1 tacke "." unutar naziva domena. Upotrebljene sistemske funkcije su sastavni deo PHP 3 i 4. Takode, važno je napomenuti da unutar naziva domena može biti i više tacaka, npr. 'ftn.ns.ac.yu', [to proveravamo drugom funkcijom preg_match().

I na kraju, ukoliko su zadovoljena oba uslova ($r1 && $r2), funkcija provera_emaila vraca istinosnu vrednost - True, i e-mail adresa može dalje da se procesira.


Upload fajlova
Starije verzije PHP-a nemaju funkcije koje direktno rukuju upload-om fajlova, ali je uz pomoc drugih ugradenih funkcija, ipak moguca ova operacija

U novijim verzijama PHP-a (poceviši od verzije4) postoje nacini i funkcije za upravljanjem upload-om fajlova, korišcenjem specijalnog ugradenog (sistemskog) niza $HTTP_POST_FILES, ali u ovom tekstu cemo se pozabaviti kako to isto uraditi u starijim verzijama PHP-a.

Pretpostavimo da smo za upload fajlova pripremili HTML formular slican 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 odredivanje maksimalne velicine fajla koji se uload-uje. Odredivanje ovog parametra, browser nece odaslati fajl serveru ukoliko je velicina veca nego što je odredena ovim parametrom. Kada je forma odaslata PHP kreira i popunjava specijalne varijable koje su u vezi sa transfer podacima. Nema potrebe za rucnim parsiranjem jednog takvog HTTP zahteva, PHP ce sveo svemu pobrinuti, te ce 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 slican ovome:

<input type="file" name="userfile">

, u vašem PHP skriptu ce automatski biti kreirane sledece 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 - velicina upload-ovanog fajla u bajtovima.
    * $userfile_type - MIME tip upload-ovanog fajla. Na primer: "image/gif".

Takode, tu je i ugradena funkcija koja proverava varijablu privremenog naziva fajla. Funkcija is_uploaded_file($userfile), vraca 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 pripadajucim dozvolama) je sledeca:

move_uploaded_file($userfile, "/lokacija/fajl.nesto")

Na kraju, evo i PHP kôda koji cemo upotrebiti za smeštanje upload-ovanog fajla na odredenu 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");
}
?>

Navigacija

[0] Indeks poruka

[#] Sledeća strana

Idi na punu verziju