Sunday, December 23, 2007

Logovanje i ogranicavanje pristupa!

Logovanje i ogranicavanje pristupa!



Pozdrav evo me kao sto sam i obecao, nastavljam sa tutorialom. Kao sto i sami znate cesto se javlja potreba da korisnicima ogranicite pristup pojedinim delovima vaseg sajta. Kako to mozemo da uradimo, pa lepo mozemo tako sto cemo da proverimo da li je onaj koji zeli da pristupi nekom delu sajta koji smo zastitili registrovan clan na nasem sajtu (kasnije cemo da vrsimo podelu i po jos nekim kriterijumima) ;)


Za registraciju, tj. dodavanje clanova mozete da iskoristite post "Dodavanje podataka u bazu".


Kako da proverimo da li je neko ko pokusa da pristupi nekom delu sajta zaista u nasoj bazi clanova?


Pa lepo koristicemo filtriranje baze, i ukoliko taj neko ko pokusa da se uloguje i unese prave podatke koje trazimo od njega (korisnicko ime i lozinku) i ukoliko je jedinstven onda cemo da ga izvrsimo neku akciju, u suprotnom poslacemo mu neko obavestenje da ne moze da pristupi.


Kako to izgleda?


Evo ovako, postavicemo na formu 2 edit boksa i u properties-u prvom cemo staviti ime (name) ProveriIme a drugom ProveriLozinku.


Postavicemo i jedno dugme, nazvacemo ga LogInButton i isprogramiracemo.


function LogInButtonClick($sender, $params)

{

$con = mysql_connect("localhost", "", "");

if (!$con) {

die('Ne moze da se uspostavi veza ' . mysql_error());

}

$db_selected = mysql_select_db("Korisnici",$con);

$sql = "SELECT KorisnickoIme FROM TabelaKorisnici WHERE KorisnickoIme = '".$this->ProveriIme->Text."' AND Lozinka = '".$this->ProveriLozinku->Text."'";

$result = mysql_query($sql,$con);

if (mysql_num_rows($result) == 1)

{

echo 'ULOGOVAN';

mysql_close($con);

exit;


}

else

{

echo 'LOSI PODACI';

mysql_close($con);

exit;

}



Sta radi ovaj kod?


Dakle, prvo se konektujemo na bazu podataka u koju su korisnici, i sql upitom vrsimo proveru (filtriranje), da li se uneti korisnik nalazi u bazi.


Kad se filtriranje zavrsi proveravamo koliko ima rezultata, ako je pronadjen korisnik u bazi koji ima trazeno korisnicko ime i lozinku koja odgovara tom imenu onda u mom primeru stampam za rezultat komentar "Ulogovan" a ako su uneti podaci pogresni stampamo za rezultat "Losi podaci".


Naravno vi mozete da stavite nesto drugo, tipa stavite redirekciju na odredjen deo, ili sl. igrajte se malo ovim, eksperimentisite...

Thursday, October 25, 2007

Izmena i brisanje podataka


Editovanje (izmena) podataka (tj. njihovih vrednosti) u bazi!

Da biste promenili podatke u vašoj bazi podataka možete jednostavno da dodate JavaScript dogadjaj na dvoklik za DBGrid. Da biste dodali JavaScript dogadjaj kliknite na jezičak Javascript u object inspector-u i pošto ćemo da omogućimo menjanje podataka na kad učinimo dvoklik u neku od ćelija DBGrida , izabraćemo OnDblClick dogadjaj u object inspectoru i u code view-u u telu funkcije dodaćemo ovaj kod:


function ddsometable1JSDblClick($sender, $params)

{

?>

//Add your javascript code here

var temp = DBGrid1.getTableModel().getValue(0, DBGrid1.getFocusedRow());

location = "unit2.php?id=" + temp;

return(false);

<?php

}


Naravno, dodavanje i izmena unetih podataka često nije dovoljno i javi se i potreba da se neki podaci izbrišu iz baze. Kako to radimo? Pa ovako, opet cemo da koristimo kombinaciju PHP-a i MySQL-a.


Na primer, ako želimo da izbrišemo neki od podataka koji smo uneli ranije mi treba da saopštimo našem programu odakle da obriše i na osnovu kog kriterijuma treba da obriše neki podatak


Primera radi, mi ćemo obrisati iz naše baze podatke (ID, FirstName, LastName, PhoneNumber, Adress) gde je naš ID recimo 1.


To radimo sledecim kodom:


mysql_query("DELETE FROM sometable WHERE ID=1");


Ovaj kod će ,dakle,da iz tabele pod nazivom sometable da izbriše sve podatke koji imaju veze sa poljem ID gde je ID jednak 1.


U nasem slucaju kao sto možete da vidite sa slike, u mojoj bazi ja sam korisnik koji ima ID jednak 1 i izbrisaće mene L J


Naravno, ovako definisana komanda nama nije od prevelike koristi, mi ćemo da omogućimo da korisnik bira koga će da brise iz baze podataka tako sto cemo da koristimo iste edit box-ove koje smo koristili za unos novih podataka u bazu (tj. posto radimo brisanje prema samo jednom kriterijumu,koristićemo samo prvi edit box (onaj u koji unosimo ID)).


Dakle, postavite još jedan taster na vasu formu u Deplhi for PHP-u i promenite mu Caption (caption je tekst koji će da se prikazuje na datom dugmetu ako sam zaboravio da to napomenem ranije) u nešto tipa Delete button ili slično, nešto što će korisnicima saopštavati da će klikom da taj novi taster da brisu neke podatke. J


Ponovićemo postupak za programiranje ovog tastera kao i kod onog koji smo programirali za unos novih podataka. Razlika je,naravno, u telu funkcije koje će da obavlja program klikom na ovo dugme. Telo funkcije je ono što se nalazi izmedju glavnih vidičastih zagrada. U našem slučaju telo ove funcije koja ce da briše podatke je:


mysql_query("DELETE FROM sometable WHERE ID='".$this->IDEdit->Text."'");


A ceo kod izgleda ovako:


function ButtonIzbrisiClick($sender, $params)

{

mysql_query("DELETE FROM sometable WHERE ID='".$this->IDEdit->Text."'");

}


Dakle ovde je sve isto kao i u prethodnom primeru za brisanje, samo sto je jedina i glavna razlika ta sto ovde nije “fiksna” vrednost za ID koji ćemo da brišemo, vec je unosi korisnik ( u edit box-u koji je namenjen za ID vrednost ) i tako program “zna” šta treba da obriše iz baze.


Koristimo WHERE za naponenu da nakon njega slede uslovi pomoću kojih odredjujemo (ograničavamo) skup podataka nad kojima će se obaviti neka operacija.


Napomena!


Na po;etku tutorijala sam naveo primer kako kreirati bazu podataka koristeci phpMyAdmin, naravno, vi mo\ete da kreirate i direktno kroz va[u aplikaciju va[u bazu podataka koristeci MySQL.


Evo primera kako (ovo je cela funkcija za OnButton1Click dogadjaj) J


function KreirajBazuButtonClick($sender, $params)

{

mysql_query("CREATE DATABASE MyDatabase");

mysql_connect("localhost", "", "");

mysql_select_db("MyDatabase");

mysql_query("CREATE TABLE SomeTable(

id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY(id),

name VARCHAR(30),

age INT)")

or die(mysql_error());

echo "Table Created!";

}


Takodje, ja sam koristio MySQL komande za rad sa bazom, i za unos podataka i sl. Vi možete da koristite u suštini dve metode:


1 – Klasican unos npr :


$this->Table1->open();

$this->Table1->append();

$this->Table1->ID = 1;

$this->Table1->FirstName = "Vladica";

.... i tako dalje

$this->Table1->post();

$this->Table1->close();


2) Direktan unos u bazu (kao sto je korišćen u primeru):


$this->dbMyDatabase1->execute("INSERT INTO sometable (ID,FirstName,LastName,Adress,PhoneNumber) VALUES ('".$this->IDEdit->Text."','".$this->FNameEdit->Text."',

'".$this->LNameEdit->Text."','".$this->AdressEdit->Text."',

'".$this->PhoneNumEdit->Text."')");



TO BE CONTINUED


(Nastavi će se…)

Wednesday, September 19, 2007

Dodavanje podataka u bazu

Da bi dodali podatke u bazu preko vaše web aplikacije možete da stavite na formu nekoliko editbox-a i labela (labele nisu neophodne ali zasigurno pomažu da se korisnije orijentiše koje polje (edit box) je za šta) i možemo da dodamo još jedno dugme koje ce služiti da pošalje vrednosti iz EditBoxa u bazu.




Ove komponente, Edit boxes, labels, buttons,… dodajete iz tool palete a nalaze se u delu standard.



Ne zaboravite da u sekciji Name promenite svakoj Edit komponenti ime u ona koja cete da koristite, nije veliki problem ako ostavite i imena koja vam predlozi sam Delphi for PHP, ali kad vam se u projektu pojavi Edit1, Edit2, ..., Edit152 ajd upamtite koji je za sta :) Zato cemo da im promenimo imena (bar cu ja to da uradim) u IDEdit, FNameEdit, LNameEdit, AdressEdit, PhoneNumEdit.




I na kraju rasporedite komponente kako vam najviše odgovara.


Ja sam ih rasporedio kao na slici ispod…



Da bi poslali vrednosti iz edit box-a našoj bazi podataka,mi možemo da koristimo nekoliko metoda, ja koristim kombinaciju Delphi for PHP-a i MySQL-a (za sada :) ).


Da napomenem i to da pošto mi “kazemo” programu da doda one vrednosti koje je korisnik uneo u bazu, mi to saopstavamo tako što kliknemo na dugme koje smo stavili na formu, a to dugme mi isprogramiramo kodom. Da bi dosli do dela za unos koda mi jednostavno dok smo u design pogledu na formu mozemo da uradimo dvoklik na taster koji želimo da isprogramiramo i automatski ce Delphi for PHP da kreira funkciju koja ce se izvrsavati na naš klik mišem kad budemo pokrenuli aplikaciju.



Mi možemo da koristimo kod u ovom formatu da bi napunili bazu podacima:

$this->YourDatabaseName->execute("INSERT INTO YourTableName (YourFieldName)
VALUES ("SomeValue")");


U našem slucaju, pošto cemo da citamo vrednosti koje ce neki korisnik da unosi u polja na formi (u edit boxove),mi cemo da koristimo malo modifikovani kod od onog gore; razlika je u tome što onde direktno koristimo neke vrednosti za dodavanje u bazu a ovde citamo vrednosti koje korisnik unese u polja na formi da bi ih dodali u bazu; znaci nakon sto uradite dvoklik na dugme koje cemo da programiramo unesite ovaj kod u telo funkcije:


$this->dbMyDatabase1->execute("INSERT
INTO sometable (ID,FirstName,LastName,Adress,PhoneNumber) VALUES ('".$this->IDEdit->Text."','".$this->FNameEdit->Text."',
'".$this->LNameEdit->Text."','".$this->AdressEdit->Text."',
'".$this->PhoneNumEdit->Text."')");

Šta radi ovaj kod?


Ovaj kod znaci radi baš ono što sam naveo. Dakle, povežemo se prvo na bazu i izvršimo MySQL komandu.? Njome kažemo programu da redom u polja ID, FirstName, LastName, Adress i PhoneNumber smesti podatke (opet onim redom kojim su navedena imena polja koja popunjavamo) iz edit box-ova koji su na formi naše web aplikacije.


Mi ovde ne moramo da navodimo tip polja ni ništa jer ce Delphi for PHP automatski da ih prepozna i popuni na odgovarajuci nacin.

Šta nam preostaje sada? Pa sada nam preostaje da pokrenemo našu web aplikaciju i da vidimo da li radi ono što bi trebalo da radi. Kliknite na RUN i kada se pokrene aplikacija popunite bazu nekim vrednostima :D



Unesite neke vrednosti u edit box-ove i kliknite na dugme da bi poslali podatke u bazu.;)


Mala napomena!

Ako se secate, na samom pocetku kad smo definisali polja koja cemo imati u tabeli, stavili smo da imamo jedno polje primarnog kljuca, polje ID, sto znaci, podaci koje unostite trebalo bi da imaju razlicitu vrednost za id, tj. da vodite racuna da budu jedinstveni ;)

Friday, September 14, 2007

Pocetak za rad sa bazama...

U prethodnom postu mogli ste da vidite primer kako može da se kreira lako
i brzo neka baza podataka. Mi cemo sad da nastavimo sa ovde sa bazom koju smo kreirali na nacin opisan u prethodnom postu, a kasnije cu vam pokazati kako možete da kreirate ovu istu bazu i u “hodu”.

Najpre da vidimo i neke osnovne pojmove.

Npr.


Šta je to baza podataka i cemu služi?

Baza podataka služi da skladišti željene podatke, da te podatke organizuje po tabelama, i da ih zatim jednostavno i brzo dostavi takozvanom 'klijentu' koji traži te podatke.


Kako se to dostavljaju ti podaci ‘klijentu’ i šta je to uopšte?

Dakle mi na jednoj strani imamo server (gde se cuvaju podaci) - i na drugoj strani klijent (kome se dostavljaju podaci).


Komunikacija izmedju klijenta i servera se odvija SQL jezikom tako sto klijent posalje query (upit) serveru - i server posalje klijentu odgovor - tj. zeljene informacije vezane za upit koji je dobio.


SQL se primenjuje skoro u svim programskim jezicima.

Znaci svrha baza podataka je da brzo i efikasno mogu da se skladiste podaci i da lako može da se radi sa njima.


Pa, dakle da pocenemo mi konacno nešto konkretno…


Korak 2 – Povezivanje baze podataka sa vašom web aplikacijom. :)




Pokrenite vas Delphi for PHP; kad se program otvori docekace vas prijatno razvojno okruženje, koje ce vam na samom pocetku ponuditi par opcija za pocetak rada; mi cemo izabrati opciju new, da bi pokrenuli wizard, (preko kog cemo da napravimo našu web aplikaciju (praznu za sad)) kada se wizard otvori, automatski ce vam ponuditi da kreirate novu aplikaciju, tj. obeležice vam opciju application za kreiranje nove PHP aplikacije, vi samo kliknite na OK i aplikacija ce biti kreirana.


Naravno bice kreirana prazna aplikacija jer još ništa nismo poceli da programiramo, a docekace vas prozor kao na slici ispod. Na njemu mozete da razlikujete nekoliko glavnih celina: project manager, object inspector, tool palete, deo za meni i toolbar a u sredisnjem delu ce biti otvoren deo za formu vaše web aplikacije koji cete moci da menjate iz pogleda na formu u deo za code (design and code view) jednostavnim klikom na jezicak ispod forme u zavisnosti od toga šta vam treba.



Dakle, da pocnemo nešto konkretnije sad



Da bi mogli da koristimo bazu podataka koju smo u prethodnom delu kreirali moracemo da je registrujemo prvo. To cemo da uradimo tako što cemo da odemo na deo project manager i pronadjemo jezicak Data Explorer i tu kliknemo. I dobicemo u tom delu prozorcic kao na slici pored. Uocicete deo Database i odmah u okviru database dela i MySQL;desnim klikom na MySQL iz menija Database dobicete opciju Registar Database preko koje cemo da registrujemo našu bazu podataka i stavimo parametre koje ce da koristi naša web aplikacija da bi pristupala bazi.



I evo nam novog dijaloga koji se stvorio nakon što smo izabrali opciju register database.


Šta ovde radimo?

Ovde mi unosimo ime za konekciju koju cemo da ostvarimo sa našom bazom podataka; ja sam stavio EXEMPLE jer se ipak radi o primeru.

Pošto mi sve ovo sad isprobavamo na našoj masini (localhost-u) u tom delu cemo da stavimo localhost, a vi kad odlucite da radite ovo sa bazom koja je na netu stavicete naravno vaš host name; port cemo ostaviti standardni a user name i password takodje ce biti prazni jer nista nismo stavili ni pri instalaciji wamp servera koji nam omogucuje da sve ovo testiramo na nasem kompjuteru,ove parametre, opet kažem ako koristite bazu koja je na internetu treba da unesete vaš user name i password da bi vam vas host dozvolio da pristupite bazi podataka. ;)


Naravno da ne zaboravimo da unesemo i ime baze koju smo malopre kreirali, ako se secate moja baza se zvala “MyDatabase” pa cu zato to i da unesem ovde sada. Kada smo uneli sve trazene podatke preostaje nam samo da kliknemo na OK i baza ce biti registrovana ;)


Sada, pretpostavljam da zelite da prikazete na formu podatke koje cete da imate smestene u bazu. Kako to uraditi? Veoma lako.



Samo kliknite na ime tabele koju ste kreirali, prevucite je na formu i pustite taster miša. :)

I Delphi for PHP ce automatski da kreira DBGrid (za prikaz podataka iz vaše (naše ?) baze), i Table, Database i Datasource componente koje nam omogucuju pristup i manipulaciju podacima u bazi. ;) Naravno sve ove komponente možete da postavite i podesite i rucno tako što cete ih pronaci u Data Access meniju sa Tool Palette, ali ja ipak mislim da je ovo mnogo lakši i brzi nacin sa prevlacenjem na formu



Sada kad ste ovo uradili možete da pokrenete aplikaciju klikom na taster RUN ili preko tastature na F9, ili preko menija Run->Run.
Aplikacija ce biti startovana u vašem web browseru, ali ce DBGrid koji ce biti prikazan biti prazan. Zašto? Zato što jos nemamo nikakve podatke u bazi da bi bili prikazani.

Mora da napunimo bazu podataka prvo nekim podacima…


U sledecem postu kako napuniti bazu nekim podacima.


To be continued...

Wednesday, September 12, 2007

Pre nego sto predjemo na glavno jelo nesto malo i o onome sto ce nam trebati...

Pozdrav, evo mene kao sto sam i obecao…

Pre nego što predjemo na glavno jelo nešto malo i o onome što će nam trebati za rad u pozadini, a možemo da naučimo i nešto novo... WAMP

Pre nego sto krenemo na Delphi for PHP rekoh cisto da vam pokazem malo kako se radi sa WAMP-om tj. phpMyAdmin-om….


Inače da bi mogli da testiramo na našem kompjuteru kasnije web aplikacije koje ćemo da pravimo sa Delphi for PHP-om moramo da imamo podršku za PHP i MySQL (jer ćemo raditi i sa bazama kasnije). WAMP će nam to omogućiti jer sadrži PHP. MySQL, Apache u sebi…


Da bi instalirali WAMP server samo pratite veoma jednostavnu instalaciju i uputstva koja vam daje installer. Kad wamp server bude instaliran možete ga pronaći u sys tray-u (delu pored časovnika u donjem desnom uglu vašeg monitora). Pokrenućemo phpMyAdmin jednostavnim klikom na ikonicu wamp servera koji smo maločas instalirali i u jump meniju izabraćemo stavku phpMyAdmin i u browseru će se otvoriti prozor kao na slici.
















Možemo da koristimo phpMyAdmin da kreiramo baze podataka, jednostavno ukucamo ime baze koju želimo da kreiramo u polje pod nazivom “Create new database” i kliknemo na dugme Create.


Sada kada smo kreirali bazu podataka, veoma lako možemo d napravimo i tabelu u toj bazi u koju cemo da smeštamo podatke koje unosimo. Jednostavno ćemo uneti ime tabele koju želimo da napravimo (u nasem slučaju neka stoji “SomeTable” za ime tabele) i unećemo broj polja koja ćemo da koristimo (ja sam stavio za naš ovaj tutorijal 5 – jedno za ID, jedno za FirstName (ime), jedno za LastName (prezime), jedno za Address (adresu) i jedno za PhoneNumber (broj telefona) recimo ;) ).


Nakon što unesemo podatke za ime i broj polja tabele koju pravimo jednostavno ćemo da kliknemo na GO taster ba bi kreirali tabelu “SomeTable” u bazi podataka pod imenom “MyDatabase”.


Sada, pošto smo odredili broj polja koji cemo da koristimo, da bi ih razlikovali moramo da unesemo i njihova imena, unećemo imena naših polja i tip za svako polje, ja ovde koristim u ovom primeru jedino za polje ID celobrojni tip podataka (INT) jer ćemo da koristimo brojeve u tom polju, a za sva ostala polja cemo da stavimo TEXT, jer ćemo da koristimo neke tekstualne podatke za vrednosti tih polja.


Takodje, vi možete da definišete i veličinu vrednosti koja će se unositi u datim poljima i još gomilu drugih podešavanja, ali posto je ovo osnovni tutorijal taj deo ćemo preskočiti, jer nam trenutno nije potreban.



Takodje možemo da definišemo i koje polje će nam biti polje primarnog ključa; u našem slučaju stavićemo da bude polje ID. Kada završite sa unosom imena polja i podešavanjem vezanim za tip polja i odredjivanje primarnog kljuca jednostavno kliknite na save .



I čestitam, vaša baza sa tabelom i željenim poljima je uspesno kreirana. :)

Tuesday, September 11, 2007

Pozdrav svima koji su zalutali ovde i to posle duuuzeg vremena!

Pozdrav svima koji su zalutali ovde i to posle duzeg vremena!

Gde sam bio?
Sta da vam kazem, radilo se, ucilo se, lencarilo se...

Ovde rekoh da svratim i da kazem svima onima koji su nekim slucajem zalutali nekako ovde da cete uskoro moci da na ovom mom blogu pronadjete tutorial vezan za web programiranje u Delphi for PHP-u.

O cemu se radi?
Radi se o tome da nisam samo lencario do sad, vec i da sam poceo da ucim, a uporedo sa tim kako sam ucio pisao sam i jedan tutorial korak po korak za sve one koji bi da nauce Delphi for PHP.

Sta je Delphi for PHP?

Dakle ovako, Delphi for PHP je jedno relativno novo razvojno okruzenje, koje izmedju ostalog poseduje:

- RAD za PHP;

- VCL za PHP - open source biblioteke koje sadrze vise od 50 standardnih vizualnih komponenti i naravno prosirljiv je, tj. mozete da razvijate i komponente za sopstvene potrebe i da sve ove komponente brzo i lako koristite uz potpunu integraciju AJAX-a;

- Integrisan PHP debugger;

- Jos jedna od dobrih vesti je da ce vase web aplikacije raditi na svim platformama;

- Drag and drop razvoj aplikacija za rad s bazama podataka koristeći Data Explorer

- Naravno sadrzi i editor izvornog koda sadrzi Code Insight, Code Explorer i Code Templates za lakse i brze pisanje koda.

Ja vec par godina radim u Delphi-u, ali mi je moram da priznam izrada Desktop aplikacija postala malo dosadna (a i nema tu $), pa sam zato hteo sam da pocnem sa razvojem web aplikacija i poceo da trazim najbolji alat za to. Posto mi je Delphi bio prirastao za srce, iskreno nisam mogao da se odvojim od IDE-a (Integrated development environment-a) i da se prepustim nekom od text editora, odlucio sam se za Delphi for PHP iz razloga sto mislim da je to jedan od alata koji ce vrlo brzo da zazivi medju razvojnim alatima te vrste i “preraste ih” u svakom pogledu…

Naravno, nece se svi sloziti samnom u vezi toga, ali to je naravno moje misljenje, a svako drugi ima pravo na drugacije misljenje zar ne ;-)

Uskoro postavljam prvi deo tutoriala za Delphi for PHP na srpskom, ide malo sporije jer sve kucam ujedno I na engleskom za englesku verziju ovog tutoriala.

Pozdrav svima koji ste zalutali ovde…

Monday, February 5, 2007

Hello world!

Pozdrav svima koji su trazeci nesto zalutali ovde!

Evo odlucih da i ja dam svoj skromni doprinos ovom elektronskom svetu otvarajuci jos jedan blog gde cu moci da predstavim svoj pogled na IT svet u Srbiji.

Uskoro pocinju pravi postovi na temu My IT View of Life

Do tada veliki pozdrav svima vama.
Vladica Savic