PHP dhe MySQL - Tutorial per PHP - Guida | Tutoriale

×
Albanian Forums, Zerion Zeri yt Zeri Info, Forumi Shqiptar Al Virtual, Diskutime, Biseda, Chat Njofje, Informatika, Teknologjia, Gazeta Tema, Gazetat Shqiptare, Bota Sot, www Channel Albania, Telegrafi Kosovo, Ballkani Web, Gazeta Lajme shqip, Lajmet e Fundit Shqiperia Kosova, Dita, Panorama, Kryeartikull, Faqja Kryesore, Video Shqip, Muzike Shqipe, Njoftime, Lajmerime, Temat Online, Gazetat, Kosovare, Shtypi Ditor, Sporti Shqiptar, Dashuria, Pyetje Pergjigje, Keshilla, Ndihme, Webmaster Shqiptar, Familja, Shqiptaria, Muzika, Receta Gatimi, Imazhe, Vipat-shqiptar, Aktualiteti
Media Sociale
Mesazhe Private
Shqiptaret duke lexuar tema interesante dhe te ndryshme
Tema re

PHP dhe MySQL - Tutorial per PHP

PHP dhe MySQL - Tutorial per PHP

· 3 · 2507

  • Postime: 28589
  • Karma: +48/-5
  • Gjinia: Mashkull

ne: 28-08-2005, 18:22:19
PHP dhe MySQL (Rivizituar)
Programim dhe Koncepte - 05/09/2004 - Shkruar nga: Krenar KOMONI -    
Autorët:

Betim Deva <>

Krenar Komoni <>

Hyrje

Mesiguri se jeni të njohur me HTML dhe me mënyrën se si zhvillohen web faqet të cilat informatat (tekstin) i ruajnë në mënyrë statike. Në web faqet statike, informatat shkruhen brenda kodit të HTML në mënyrë manuale (ang. hardcode). Tek këto web faqe, sa herë që kishim nevojë të ndryshojmë diçka, edhe vetëm një shkronjë të vetme në tekst, është nevojitur të bëhet ndryshimi i html skedarit në mënyrë manuale. Kjo menyre shpesh herë është e mundimshme dhe e papërshtatshme. Në këtë shkrim të shkurtër, do të bejme fjalë se si të arrijmë të bëjmë një web faqe dinamike, që do të thotë se teksti do të nxirret dinamikisht nga baza e shënimeve dhe do të shfaqet në shfletuesin e webit (ang. web browser) tuaj.
Esenca është që të krijohen skriptat të cilat do të lidhen për serverin e bazave të shënimeve dhe të nxerrin informatat e nevojshme. Ato informata do të futen në tag-at e caktuar të HTML dhe si të tillë, do të paraqiten në shfletuesin e klientit.

Në këtë shkrim, ne do të bëjmë fjalë për gjuhën skriptuese PHP dhe për bazen e shënimeve MySQL, të cilat së bashku bëjnë një kombinim perfekt sa i përket web aplikacioneve.

çka është PHP?

PHP (www.php.net) është gjuhë skriptuese e dedikuar për të zhvilluar web aplikacione. PHP (PHP është shkurtese rekurzive e "Hypertext Preprocessor") është njëra ndër gjuhet më të përhapura skriptuese që janë të bazuara në burimet e hapura (Open Source). Interpreteri i PHP-së është i shkruar per shume sisteme operative si Linux, Unix (duke përfshirë HP-UX, Solaris dhe OpenBSD), Mac OS X, Novel, OS/2, e Windows, që do të thotë se i njejti PHP kod do të ekzekutohet në të gjithe serverët e lartepërmendur pothuajse pa ndonjë ndryshim në te. Fuqinë më të madhe PHP e ka arritur në web aplikacione. Kompanitë më të mëdhaja që janë të bazuara në burimet e hapura kanë migruar apo janë duke migruar në PHP. Në këtë shkrim do të flasim prej perspektivës së Linux-it, edhe pse esenca është e njejtë për të gjitha sistemet operative. Ajo çka e bën PHP të perhapur është se mund të shkruhen aplikacione te vyeshme me më pak punë se gjuhet tjera që bëjnë punë të ngjajshme, si dhe numri i madh e bazave te shënimeve që i perkrah si: MySQL, PostgreSQL, mSQL, MS-SQL, Sybase, Oracle, ODBC, dBase etj.

Ekzistojnë 3 fusha ku PHP mund te përdoret.

- Përdoret në web servera ku kodi ekzekutohet në server (ang. server side scripting) dhe klientit i kthehen rrezultatet si html ne shfletuesin e webit (ang. web browser).

- Me PHP mund të shkruhen programe që do te ekzekutohen në "command line", dmth e tëra qe na nevojitet është interpreteri dhe shelli. Një gjuhe skriptuese që është e përshtatshme për kete punë është Perl.

- PHP përdoret edhe për shkruarjen e aplikacioneve me grafike (GUI) që përdoren nëpër makina te klientëve. Aplikacionet e kryera jane multi-platformike që do të thotë se punojnë në shume sisteme operative me pothuajse kurrëfare ndryshimi në kod. Për të bërë këtë nevojitet PHP-GTK shtesa. Megjithatë PHP përdoret shumë pak sa i perket këtij drejtimi.

Ne do të fokusohemi në fushen e parë, dmth. do te perdorim PHP për të shkruajtur web-aplikacione.
PHP është gjuhë interpretuese, që do të thotë se këtu nuk ka nevojë që kodi të kompilohet. Interpretimi i kodit bëhet nga interpreteri sa herë që ne e kërkojmë faqen.
Që të testojmë programet e shkruara në PHP, na nevojiten:
Web serveri që e ka interpreterin ("PHP parser" si CGI apo modul i serverit, por zakonisht përdoret si modul) si dhe "web browser-i" (apo internet shfletuesi).

Interpreteri i PHP-së e interpreton kodin e shkruar në këtë gjuhe. Që ta thjeshtojmë esencën e kësaj gjuhe do të marrim një shembull bazik. Themi se e kemi nje skedar me emrin index.php në web server. Nëse e kërkojmë këtë skedar përmes web-it (psh. përmes protokollit HTTP): http://serverijuaj/index.php atëherë web serveri sendin e parë që do ta ben është ta shikon mbaresën që në këtë rast është "php". Menjëherë pas indentifikimit që tipi i skedarit është "php", serveri është i gatshëm ta interpretojë atë kod duke e përdorur modulin përkatës. Pasi që kodi interpretohet, të gjitha rezultatet (nëse ka) do të shfaqen në "web browser".

Pas ekzekutimit te këtij kodi nga serveri, në internet shfletuesin tonë do të shfaqet teksti "Tung pr-tech"
<? printf("Tung pr-tech"); ?>


Faktikisht funksioni "printf" e ka kryer punën e vetë në server dhe neve na ka dërguar vetëm "Tung pr-tech". Ketu është dallimi kyç i gjuhëve që ekzekutohen në server (si PHP) me ato që ekzekutohen në klient (si Javascript). Pra PHP bën të gjitha operacionet në server, dhe klientit ia dërgon vetëm tekstin e dëshiruar, ndërsa javascript ekzekuton të gjitha operacionet në anën e klientit. Të ndalemi këtu pak dhe të krahasojmë se çfarë të mira na sjellin gjuhët që ekzekutohen në server.

- Kodi është i centralizuar
- Kodi është i mbrojtur dhe klienti nuk ka qasje në te.
- Në server bëhen vendime se me çka të shërbehet klienti.
- Të gjitha ndryshimet që bëhen në kod, vërehen te të gjithe klientet në të njejtën kohë.
- Shumë i dobishëm për baza të shënimeve

Gjuhët që ekzekutohen tek klienti siç është javascript nuk i përkahin këto mundësi sepse kodi shkarkohet tek klienti dhe i gjithë ekzekutimi bëhet në "web browserin" e klientit

Sa i përket sintaksës, PHP sintaksën e huazon prej gjuhëve si C, Java e Perl. Nëse keni punuar më heret në C me gjërat bazike, llogariteni se 60% të PHP e zotëroni.

Të shohim një shembull të thjeshtë.
index.php
-------------------------------------
<html>
<head>Koka</head>
<body>
<?
 $a = 3;
 $b = 5;
 $c = $a + $b;
 echo "$a + $b = $c";
?>
</body>
</html>
 


Pas ekzekutimit të mesipërm, në "web browserin" (shfletuesin) tuaj do të paraqitet 3+5=8, apo nëse shikoni burimin e kësaj php faqeje (në shfletuesin tuaj bëni "view source"), ju do të shihni:

 index.php tek klienti
-------------------------------------
<html>
<head>Koka</head>
<body>
3 + 5 = 8
</body>
</html>
 


Kjo ishte sa për të dhënë një ide se çfarë bën PHP.

Ne do të supozojmë se ju veç keni punuar me ndonjë gjuhë tjetër programuese kështuqë më poshtë do të njihemi shkurtimisht me kodin e php.

çdo kod i php-së duhet futur brenda "tag-ave"
<?  Ketu vjen kodi ?>
, apo nëse planifikojmë që ta integrojmë PHP në XML atëherë kodin e fusim në mes të "tag-ave"
<?php  Ketu vjen kodi ?>

PHP është "case-sensitive" dmth. variabla $emri është e ndryshme nga $Emri;
Sikur edhe C, PHP-ja i injoron hapësirat e zbrazëta (hapësirat, rreshti i ri, tab-at) në mes komandave.
Komentet e rreshtit në PHP bëhen me "//"
Komentet që perfshijnë me shumë rreshta futen në mes të "/*" dhe "*/"
 
<?
/*
komenti 1
komenti 2
komenti 3
*/
$qyteti="Prishtina";
$vendi="Shqiptaria";

$qyteti="Prishtina" //Komenti

?>
 


çdo variabël në php përmban simbolin "$" përpara.
P.Sh.
<?
$vendi = "Iliria";
$viti_i_lindjes_se_skenderbeut = 1405;
?>
 


Një gjë që po e vëreni është se në PHP nuk ka nevojë të deklarohet "data type" (tipi) i variablave si në C.
Nëse vleren e fusim në thonjëza si tek variabla $vendi, atëherë menjëherë dihet se ajo variabël përmban string, ndërsa variabla $viti_i_lindjes_se_skenderbeut identifikohet menjehere si integer (numër i plotë).

Kushtet

Sikur në C, struktura IF është e njejtë
<html>
<head><title>Kushtet</title></head>
<body>
<?
$numri1 = 11;
$numri2 = 5;
if( $numri1 == $numri2){
 printf("$numri1 dhe $numri2 jane te barabarte");
} else if( $numri1 < $numri2) {
 printf("$numri1 është me i vogel se $numri2");
} else {
 printf("$numri1 është me i madh se $numri2");
}
?>
</body>
</html>


Pas ekzektutimit të kodit, në web shfletuesin tuaj do të shfaqet:
11 është me i madh se 5


Unazat (Loops)

PHP përkrah "for","while" dhe "do - while" loop-at (unazat). PHP poashtu perkrahe "foreach" unazen ashtu si edhe Perl.
Qe një shembull ku 3 loop-at japin rezultate të njejta.

<html>
<head><title>Unazat</title></head>
<body>
<?
echo "Loopi(Unaza) 1 ";
for($i=1; $i<= 10; $i++){
 printf($i);
}
echo "Loopi(Unaza) 2";
$i=1;
while($i<=10){
 printf($i);
 $i++;
}
echo "Loopi(Unaza) 3";
$i=1;
do{
 printf($i);
 $i++;
}while($i<=10)
?>
</body>
</html>

Pas ekzektutimit të kodit, në web shfletuesin tuaj do të shfaqet:
Loopi(Unaza) 1
12345678910

Loopi(Unaza) 2
12345678910

Loopi(Unaza) 3
12345678910
 


Matricat (Arrays)
Matricat si ne çdo gjuhë tjetër programuese, mbajnë shumë vlera brenda një variable. Atyre vlerave i qasemi me indeks.

<html>
<head><title>Matricat</title></head>
<body>
<?
$hero = array(); //deklarimi i matrices

/* E mbushin matricen tone me infromata */
$hero[0] = "Skenderbeu";
$hero[1] = "Mic Sokoli";
$hero[2] = "Bajram Curri";

/* shtypim informatat */
echo "Heronjet shqiptare:";
for($i=0;$i<sizeof($hero);$i++){
 echo $hero[$i]."";
}
?>
</body>
</html>


Pas ekzektutimit të kodit, në web shfletuesin tuaj do të shfaqet:
Heronjet shqiptare:
Skenderbeu
Mic Sokoli
Bajram Curri


çka është MySQL?

Para se te analizojmë se çka është MySQL, ne duhet të dimë se çka është baza e shënimeve. Baza e shënimeve është një vegël bazë me te cilën kompjuteri i akumulon informatat edhe i organizon në menyre që të jenë të gatshme për thirrje, përdorim, apo prezentim të tyre. Sot, shumë baza të shënimeve përdoren për organizimin e përmbajtjes së webfaqeve. Të gjitha lajmet, ky shkrim edhe çdo gjë që shihni në Pr-Tech është e ruajtur në bazën e shënimeve te tipit SQL. Për shkak të buxhetit, 90% te kompanive në Amerike, por edhe vende tjera përdorin bazën e shënimeve te ashtuquajtur MySQL.

MySQL është një lloj i bazës së shënimeve Structured Query Language, apo SQL. Kjo bazë e shënimeve si edhe shumica e ka gjuhën e vet me të cilën përdoruesi komunikon për t'i thirrur të dhënat, apo për t'i ruajtur ato. MySQL është po ashtu server (sherbyes) databazor. MySQL është bazë e shënimeve e përdorur në botë, si burim të hapur, ose open source. Kompanitë e njohura botërore: Yahoo!, Google, Cisco, HP, edhe NASA kane parë që mund te ruajnë shumë harxhime nëse perdorin MySQL. [1]

Si ta perdorim MySQL?


Para se te filloni ta perdorni MySQL-in, ju duhet të shkarkoni sherbyesin per databazen MySQL. Kete mund ta beni tek: http://www.mysql.com. Nese perdorni Linux, Unix, apo Widnows, atëhere aty mund ti gjeni të gjitha skedarët ekzekutuese apo kodet për ta kompiluar shërbyesin. Pasi që lexuat dokumentacionin edhe e instaluat MySQL tani mundeni qe të filloni të krijoni përdorues (user), baza të shënimeve, dhe tabela për nevojat e juaja.

Hyni në direktoriumin bin ku mund të gjeni skedarin ekzekutues mysql. Për ta ekzekutuar atë skedar, vetëm shkruani 'mysql –u root' edhe pastaj shtypni pullën Enter në tastjerë. Në ekran ju do të shihni kete:

Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 7 to server version: 4.0.20a-nt

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql>
 


Krijimi i Përdoruesit

Tani ju keni hyrë në shërbyesin MySQL. Ketu ju mund të krijoni baza të shënimeve, përdorues, tabela, e shume të tjera.
Per ta krijuar një përdorues ju mund te ekzekutoni këtë komand në mysql.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'emri_perdoruesit'@'localhost' IDENTIFIED BY 'passwordi_ketu' WITH GRANT OPTION;
 


Kjo komandë e krijon përdoruesin "emri_perdoruesit" i cili është i lidhur me makinën (ang. host) localhost edhe e ka fjalëkalimin "passwordi_ketu". Pasi që ky përdorues ka fjalëkalim, herën tjetër, kur hyni ne mysql, duhet te shypni këtë komandë: mysql –u emri_perdoruesit –p.
Kjo komandë do t'ju pyes për password.

Krijimi i bazave të shënimeve

Pasi që e krijuat një përdorues tani është koha që të krijojme një bazë. Per ta krijuar databazen ju duhet të hyni në MySQL përsëri. Pra ekzekutoni komandën e sipërme mysql –u emri_peroruesit –p. Pasi që keni hyrë në databaze tani ekzekutoni këtë komandë per të krijuar databazën "personi"

mysql> CREATE DATABASE personi;
Query OK, 1 row affected (0.03 sec)
 


Kjo komandë do ta krijon databazën e ashtuquajtur "personi". Ju mund t'i jepni çfarëdo emri kësaj baze. Pasi që keni krijuar bazën "personi", tani ju duhet që ta përdorni këtë për të futur tabela dhe informata të tjera. Për ta bërë këtë, ju së pari duhet të zgjidhni databazën me komandën:
mysql> USE personi;
 


Pas ekzekutimit, do të pranoni tekstin: Database Changed.

Kjo tregon se tani ju gjendeni ne databazen personi. Për të shikuar se çka gjindet në databaze mund të ekzekutoni komandën SHOW TABLES.

mysql> SHOW TABLES;
Empty set (0.00 sec)
 


Ky është rezultati i atij ekzekutimi. Pra baza e shënimeve "personi" nuk ka asgjë në te.

Krijimi i Tabelave

Për ta krijuar një tabelë në këtë bazë përdoreni këtë komandë:

mysql> CREATE TABLE informatat (emri VARCHAR(20), mbiemri VARCHAR(20), gjinia VARCHAR(10), ditelindja DATE );
Query OK, 0 rows affected (0.14 sec)
 


Kjo komandë do ta krijon tabelën informatat, e cila do ti ketë këto kolona: emri, mbiemri, gjinia edhe ditëlindja. Në bazat e shënimve të tipit SQL të dhënat do të futen në rreshta ndërsa specifikimi i të dhënave gjendet në kolona: siç ishin emri, mbiemri etj. Këto kolona mbajnë lloje të ndryshme të të dhenave. P.Sh. emri është variabël i llojit karakter (numri 20 tek VARCHAR përcakton se sa karaktera do t'i kete emri më së shumti), ndërsa ditelindja është lloj i të dhënës date. Mënyra qe ju mund ta futni ditëlindjen është ne kete format: VVVV-MM-DD, ku V është viti, M është muaji, dhe D është dita e lindjës së personit.
Për ta vërtetuar se tabela është krijuar, përdoreni komandën SHOW TABLES;.
Nëse dëshironi qe t'ju jipet shpjegimi i tabelës "informatat" komanda DESCRIBE do t'ju ndihmojë.

mysql> DESCRIBE informatat;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| emri       | varchar(20) | YES  |     | NULL    |       |
| mbiemri    | varchar(20) | YES  |     | NULL    |       |
| gjinia     | varchar(10) | YES  |     | NULL    |       |
| ditelindja | date        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.03 sec)
 


Futja e së Dhënave

Për ta futur një të dhënë në këtë tabelë, ju mund të ekzekutoni këtë komandë:

mysql> INSERT INTO informatat VALUES ('Teuta', 'Gashi', 'femer', '1983-11-14');
Query OK, 1 row affected (0.03 sec)
 


Për të shikuar se çka gjendet në tabelë, ekzekutoni këtë komandë

mysql> SELECT * FROM informatat;
+-------+----------+----------+------------+
| emri  | mbiemri  | gjinia   | ditelindja |
+-------+----------+----------+------------+
| Teuta | Gashi    | femer    | 1983-11-14 |
| Valon | Kastrati | mashkull | 1981-03-03 |
+-------+----------+----------+------------+
2 rows in set (0.02 sec)
 


Siç e shihni kjo është tabela informatat, që e keni krijuar në bazën personi. Në këtë tabelë janë dy të dhëna: njëra është e Teutës edhe tjetra është e Valonit.
Nëse vëreni ndonje gabim pas futjes se informatave, ato mund të ndryshohen edhe më vone. Komanda UPDATE ju lejon që ta bëni ndyshimin e duhur. Nese ditelindja e Valonit është 1984-05-19 atehere ju mund ta ndryshoni ate ne këtë mënyre.

mysql> UPDATE informatat SET ditelindja='1984-05-19' WHERE emri='Valon';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM informatat;
+-------+----------+----------+------------+
| emri  | mbiemri  | gjinia   | ditelindja |
+-------+----------+----------+------------+
| Teuta | Gashi    | femer    | 1983-11-14 |
| Valon | Kastrati | mashkull | 1984-05-19 |
+-------+----------+----------+------------+
2 rows in set (0.00 sec)
 


Pra siç po e vëreni, ndryshimi është ekzekutuar, dhe ditëlindja e Valonit është ndryshuar.

Per të dalur nga MySQL perdorni komandën [q].

mysql> q
Bye
 



Lidhja e PHP-së me MySQL

Deri tani pamë se si shkruhen dhe ekzekutohen PHP skedarët. Ne pamë se si krijohen bazat e shënimeve në mysql dhe se si punojmë me rekorde. Tani do të shohim se si i komunikojne skriptat e PHP-së me MySQL-in. Sic e cekëm më lartë, PHP përkrahë një numër të madh të bazave të shënimeve, e në rradhë të parë MySQL. PHP disponon me një numër të madh të funksioneve për mysql.
Para se të shohim se këto funksione, së pari duhet të sigurohemi nëse PHP është kompiluar dhe instaluar me përkrahje te mysql-it. Për të parë këtë, krijojmë një skedar të PHP-së dhe e thërrasim funksionin phpinfo(). dmth.
info.php
<? phpinfo(); ?>

Dhe e ekzekutojme këtë skriptë psh. http://serverijuaj/info.php. Nëse PHP është instaluar me përkrahje të MySQL, atëherë në pjesën "Configure Command" duhet të shohim dicka si "--with-mysql=/usr" varësisht se ku ndodhet mysql-i.

Të gjitha funksionet për mysql, fillojnë me fjalën mysql_, p.sh.
mysql_connect - Hap lidhjen me MySQL serverin
mysql_select_db - Zgjedh bazën në server.
mysq_query - Dërgon MySQL query.
mysql_fetch_array - Nxerr rrezultatin (rreshtin) si matricë.
mysql_close - mbyll lidhjen me server.
e shumë të tjera.

Tani do të shohim hap pas hapi se si të lidhemi për MySQL përmes PHP skriptave dhe se si do të kemi mundësi të fusim informata në MySQL përmes HTML formave, dhe njëkohësisht si t'i lexojme rekordet nga MySQL-i dhe t'i shfaqim ato në web-faqen tonë.

Kthehemi pak prapa dhe e analizojmë tabelën "informatat" në bazën "personi". Tani do të dizajnojmë një faqe ku kemi me pasë mundësi të fusim informata në atë tabelë duke përdorur format e HTML-së. Duke e analizuar tabelën shohim se na nevoiten 4 tekst fusha (emri, mbiemri, gjinia, ditelindja).
E krijojmë një skedar shto.php me këtë përmbajtje.
shto.php
<html>
<head>
<title>Aplikacioni im - Shtimi</title>
</head>
<body>

<form name=forma method=post action=shto.php>
Emri<input type=text name=emri value="">
Mbiemri<input type=text name=mbiemri value="">
Gjinia<input type=text name=gjinia value="">
Ditelindja<input type=text name=ditelindja value="">(viti-muaji-dita)
<input type=submit name=shto value="Shto">
</form>
</body>
</html>
 


Pjesa e interfejsit përfundoi, Tani dëshirojmë që pasi që forma e HTML-së të procesohet, shënimet që i dërgojmë, të futen në tabelën "informatat". Për të bërë këtë duhet të perdorim funksionin "mysql_connect" që të lidhemi për server, të përdorim funksionin "mysql_select_db" për të zgjedhur bazën personi, dhe funksionin "mysql_query" për t'i futur shënimet.
Kodin e mësipërm e bëjmë kështu:

shto.php
<?
//Lidhja per server
mysql_connect("localhost","perdoruesi","fjalekalimi");
//Zgjedhja e bazes
mysql_select_db("personi");        

$mesazhi ="";
//Teston nese është klikuar ne butonin "Shto"
if($_POST['shto'] == "Shto"){

  //bejme query ne mysql
  $q = mysql_query("INSERT INTO informatat SET
      emri    = '$_POST[emri]',
      mbiemri  = '$_POST[mbiemri]',
      gjinia   = '$_POST[gjinia]',
      ditelindja = '$_POST[ditelindja]'");

  if($q)
    $mesazhi = "Informatat u shtuan me sukses";
  else
    $mesazhi = "Pati problem gjate shtimit";
}


?>

<html>
<head>
<title>Aplikacioni im - Shtimi</title>
</head>
<body>
<? echo $mesazhi; ?>
<form name=forma method=post action=shto.php>
Emri<input type=text name=emri value="">
Mbiemri<input type=text name=mbiemri value="">
Gjinia<input type=text name=gjinia value="">
Ditelindja<input type=text name=ditelindja value="">(viti-muaji-dita)
<input type=submit name=shto value="Shto">
</form>
</body>
</html>
 


Nese e ekzekutojme skripten e mësipërme kështu http://serverijuaj/shto.php do të shfaqet forma. Pas shtypjes së informatave dhe shtypjes së butonit "Shto", Shënimet do të futen në tabele.
Vëreni më lartë që e kemi përdorur metodën HTTP POST, kështuqë i çasemi variablave me anë të matricës super globale $_POST. Bëni rregull që në raste të tilla të përdoren variablat super globale $_POST apo $_GET në vend të $HTTP_POST_VARS apo $HTTP_GET_VARS dhe asesi të ju çaseni direkt psh. $emri në vend të $_POST[emri] sepse në këtë mënyrë do t'ju ikni kokëçarjeve që mund të shkaktojnë serverat e konfiguruar në mënyra të ndryshme (register_globals direktiva në php.ini). Ky ishte një shembull i thjeshtë i futjes së informatave në tabelë. Nëse keni projekte serioze, kushtoni rëndësi sigurisë ndaj SQL injekcioneve ku sulmuesi mund të shtyp komanda të SQL-it në vend të ditëlindjes të cilat do të bëhen pjëse e query-it nëse PHP nuk është e konfiguruar si duhet.

Tani do të shohim se si t'i lexojme informatat nga MySQL.

Në shembullin e mësipërm e vërejtët se si njëri mund të futen informatat në bazë të shënimeve përmes PHP-së dhe Formave të HTML-it. Për t'i lexuar informatat nga baza e shënimeve të MySQL-it, ne përsëri mund ta përdorim gjuhën programuese PHP. Leximi i informatave nga MySQL bëhet përmes query-it SELECT FROM.
lexo.php
<?
//Lidhja per server
mysql_connect("localhost","perdoruesi","fjalekalimi");
//Zgjedhja e bazes
mysql_select_db("personi");        

?>

<html>
<head>
<title>Aplikacioni im - Leximi</title>
</head>
<body>
<h2>PERSONI</h2>
<?
//bejme query ne mysql
$q = mysql_query("SELECT * FROM informatat");

while ($rreshti = mysql_fetch_array($q)){
//Ketu ruhen te gjitha variablat qe na duhen nga baza e shenimeve
  $emri = $rreshti['emri'];
  $mbiemri = $rreshti['mbiemri'];
  $ditelindja = $rreshti['ditelindja'];
  $gjinia = $rreshti['gjinia'];

  echo "Emri: $emri ";
  echo "Mbiemri: $mbiemri ";
  echo "Gjinia: $gjinia ";
  echo "Ditëlindja: $ditelindja ";
  echo "";
}
?>
</body>
</html>
 


Siç e shihni më lartë query nga baza e shënimeve ruhet gjatë unazës WHILE, e cila i ruan të gjitha informacionet vazhdimisht në vektorin $rreshti . WHILE hyn në çdo rresht të bazës së shënimeve dhe i ruan kolonat në $rreshti. Kolonat pastaj mund të thirren kështu: $rreshti['emri_i_kolones'].
Përveç SELECT * FROM informatat, ju mund të jeni më specifik dhe ta kurseni procesorin e memorien e serverit. P.sh nëse vetëm ju nevojitet kolona "emri" nga tabela "informatat" atëherë ju mund të zëvendësoni variablën $q me këtë:

 $q = mysql_query("SELECT informatat.emri FROM informatat");


Nëse dëshironi që t'i zgjidhni të gjithë personat në tabelën "informatat" të cilët/cilat e kanë mbiemrin Gashi, atëherë ju përdoreni këtë variabël $q:
 $q = mysql_query("SELECT * FROM informatat WHERE mbiemri='Gashi'");


Përshkak se ju mund të futni variablat $emri, $mbiemri, $gjinia, dhe $ditelindja me tagat kudo në kodin HTML, atëhere vetëm imagjinata juaj mund të ju ndaloj se si dëshironi të i prezentoni ato variablat ndaj klientit.

Konkludimi

PHP dhe MySQL pa dyshim janë dy vegla që punojnë shumë në mirë në mes vete. Këto vegla janë të bazuara në burimet e hapura (ang. Open source) dhe janë gratis për t'u shkarkuar nga PHP dhe MySQL.
 
Pr-Tech.Net

  • Postime: 28589
  • Karma: +48/-5
  • Gjinia: Mashkull

#1 ne: 28-08-2005, 18:33:58
Klasat dhe Objektet ne PHP4
Programim dhe Koncepte - 04/12/2002 - Shkruar nga: Betim DEVA -    
Dhjetor 2002

Shume njerez PHP-ne e shohin vetem nje gjuhe scriptuese(scripting language) qe mundeson te lidh me baze te shenimeve(database) dhe rezultatet t'i jep ne browser.
Perveq funksioneve me rendesi qe ka, PHP eshte edhe OOP(object oriented programming) edhe pse ky term nuk perdoret per PHP-ne.

Pas ketij teksti te shkuter(tutorial) kemi me pase mundesi me i kuptu se cka jane klasat e objektet.
PHP-ja konceptet e klasave dhe objekteve i ka trashegu prej C++ por edhe JAVA-s

Klasa eshte nje template,blueprint apo si te themi shqip nje forme e pergjithshme me anen e te ciles krijojme objekte.
Shtrohet pyetja se cka eshte Objekti.
Objeti eshte gati gjithcka qe e kemi ne natyre. Gjithcka qe mund ta pergjithsojme.

I shikojme shembujt e meposhtem dhe do t'na qartesojne
sh.1
objekte mund te jene: audi,bmw,mercedes dhe keto hyjne ne klasen vetura.

sh.2
objekte mund te jene: femna,djali dhe keto hyjne ne klasen njeri.

sh.3
objekte mund te jene: Linux,Mac,Windows dhe keto hyjne ne klasen OperatingSystem.

sh.4
objekte mund te jene: PHP,C,C++,JAVA dhe keto hyjne ne klasen programmingLanguage s.

Pra krijojme klasen qe eshte e pergjithshme per te gjitha objektet konkrete qe do te krijohen.

Keshtu qe OOP na mundeson qe te shkruajme kode burimore(source code) te cilat rezultojne ne efektshmeri te madhe dhe zvogelim te madhesise se kodit.
Faktikisht objektet behen si teresi ne veti qe kryejne operacione brenda saj, dhe poashtu mund ti shkembejne informatat me objekte tjera.
Objekti permban shenimet(data) si dhe funksionet(functions).
Data - ne gjuhe te ndryshme quhen edhe property apo edhe attribute
Functions - quhen edhe metoda.
Pra objekti kryen funksione te caktume me ane te funksioneve dhe manipulon me shenime(data) te saj.
Marrim shembull klasen vetura.
data jane: rrotat, timoni,
funksione jane: shpejtesina, frenimi, kthyerja ...


Tash do te krijojme nje klase me emrin vetura, per te krijuar me vone objektet bmw,audi...

class vetura{

}
 

pra siq po e shihni 'class' eshte nje keyword apo shqip fjale e php-se me anen e te ciles krijohen klasat.

Tash po i krijojme disa class variabla

class vetura{
var $numri_rrotave;
var $emri_vetures;
var $shpejtesia_vetures;
}
 

me keyword-in 'var' deklarohen class variablat.

Tash po e krijojme funksionin , ne kete rast konstruktorin e klases.
Cka eshte konstruktori?.
Konstruktori eshte nje i ashtuquajtur funksion (disa nuk pajtohen ta quajne funksion) qe ka emrin e njejte me klasen
dhe thirret sa here qe krijohet nje objekt i ri.
Objekti i ri sic do t'shohim me vone krijohet me keyword-in 'new'.
Nese nuk e kemi definu konstruktorin atehere interpreteri i PHP-se e ben nje default constructor te zbrazet.
Kostruktori sherben per krijimin e objektit.

Tash po e krijojme construktorin vetura()

class vetura{
var $numri_rrotave;
var $emri_vetures;
var $shpejtesia_vetures;

/* Konstruktori i objektit */
function vetura(){
 $this->numri_rrotave=4;
 $this->emri_vetures="Mercedez";
 $this->shpejtesia_vetures=200;
}
}
 

Pasi te krijohet objekti, se pari behet deklarimi i class variablave.
Mandej thirret konstuktori, ne kete rast 'vetura()'me 'crast ekzekutohen statments.
Po e shohim ketu se brenda konstruktorit 'vetura()' jane statments(rresht)

$this->numri_rrotave = 4;
$this->emri_vetures="Mercedez";
$this->shpejtesia_vetures=200;
 

Me '$this->' nekuptohet "Ky objekt", pra Objekti qe eshte krijuar, sintaksen '$this->numri_rrotave=4' ben qe
variabla $numri_rrotave=4. dhe kete e ben per vetvete.
Pra cdo objekt qe do te krijohet do te kete nga nje kopje te variables $numri_rrotave dhe secila prej tyre do te kete vleren 4.
Keshtu vlen edhe me variablat 'emri_vetures' dhe 'shpejtesia_vetures'
Pra objekti qe do te krijohet ne start do ti kete keto 3 variabla me vlera te caktuara nga konstruktori, normal mund te nderrohen me vone
Me kete eshte bere inicializimi i class variablave
Mund ta keni verejtur se ne kete statments
$this->emri_vetures="Mercedez";
variable emri_vetures nuk ka simbolin '$' perpara.


Tash po i krijojme 3 funkione:
emero_veturen($emri),
cakto_shpejtesine($shpejtesia),
lexo_veturen()
Ku dy te parat jane mutator funksione ( apo funksione qe i japim vlera permes argumenteve)
ndersa e fundit eshte acceptor, ku pranojme(return) vlera nga funksioni

class vetura{
var $numri_rrotave;
var $emri_vetures;
var $shpejtesia_vetures;

/* Konstruktori i objektit */
function vetura(){

 $this->numri_rrotave=4;
 $this->emri_vetures="Mercedez";
 $this->shpejtesia_vetures=200;
}

/* Emertimi i vetures */
function emero_veturen($emri){
 $this->emri_vetures = $emri;
}
/* Caktimi i shpejtesise se vetures */
function cakto_shpejtesine($shpejtesia){
 $this->shpejtesia_vetures = $shpejtesia;
}

/* Kthehen vlerat e vetures */
function lexo_veturen(){
 return "Vetura me emer ".$this->emri_vetures." ka   ".$this->numri_rrotave." rrota dhe leviz me shpejtesi: ".$this->shpejtesia_vetures."Km/h";
}
}//Fundi i klases vetura

 


Tash gati cdo gje eshte gati, na ka mbet vetem ti krijojme objektet.
Jashte scopit te klases i shkruajme kete rresht.

$benzi= new vetura;


Cka ndodh, ne kete rast?
Krijohet objekti nga klasa 'vetura' dhe si reference ka variablen $benzi.
Cka beri intepreteri i PHP-se ne kete rast.
Si te gjindet keyword-i 'new', kerkon klasen vetura per ta kriju nje objekt.
E gjen ate, dhe automatikish variablat e klases marrin vlerat e tyre marrin default vlerat, pastaj edhe
objekti krijohet nga konstruktori,qe ne fakt eshte funksioni vetura().
Ky proces ne anglisht quhet "Instantiation of object"
Tash cdo funksion qe kryhet ne kete objekt, behet permes references se tij.
psh
echo $benzi->lexo_veturen();  


Rezultat do te jete:
Vetura me emer Mercedez ka 4 rrota dhe leviz me shpejtesi: 200Km/h



Tash krijojme edhe disa objekte tjera, mirepo i japim vlerat tona/

$audi_auto = new vetura;
$audi_auto->emero_veturen("audi");
$audi_auto->cakto_shpejtesine(210);
echo $audi_auto->lexo_veturen();
 


Rezultat do te jete:
Vetura me emer audi ka 4 rrota dhe leviz me shpejtesi: 210Km/h



Keto vlera edhe mund ti mbishkruajme psh.
nese pas kesaj shkruajme:

$audi_auto->cakto_shpejtesine(230);
echo $audi_auto->lexo_veturen();
 

Rezultat do te jete:
Vetura me emer audi ka 4 rrota dhe leviz me shpejtesi: 230Km/h


Meposhte qendron i tere kodi qe e patem deri me tani

---------------------------------------------------------------
klasa.php

/* Ky kod eshte i demonstrim i krijimit te nje klase te thjeshte,
* class varialave, class funksioneve si dhe krijimin(instantiation)
* e objekteve
*/

/* fillimi i klases */
class vetura{
var $numri_rrotave; // deklarimi i variablave
var $emri_vetures;
var $shpejtesia_vetures;


/* Konstruktori i objektit */
function vetura(){
 $this->numri_rrotave=4; // Varriablat marrin vlerat e caktuara me rastin e krijimit te Objektit
 $this->emri_vetures="Mercedez";
 $this->shpejtesia_vetures=200;
}

/* Emertimi i vetures */
function emero_veturen($emri){
 $this->emri_vetures = $emri;
}
/* Caktimi i shpejtesise se vetures */
function cakto_shpejtesine($shpejtesia){
 $this->shpejtesia_vetures = $shpejtesia;
}

/* Kthehen vlerat e vetures */
function lexo_veturen(){
 return "Vetura me emer ".$this->emri_vetures." ka ".$this->numri_rrotave." rrota dhe leviz me shpejtesi: ".$this->shpejtesia_vetures."Km/h";
}
}//Fundi i klases vetura


$benzi= new vetura; //Krijohet objekti
echo $benzi->lexo_veturen(); //thirret funksioni lexo_veturen(); qe vlen per vete objektin

$audi_auto = new vetura; //Krijohet objekti
$audi_auto->emero_veturen("audi");//Thirret funksioni emero_veturen duke ia dhene parametrin "audi"
$audi_auto->cakto_shpejtesine(210);
echo $audi_auto->lexo_veturen();

$bmw = new vetura; //Krijohet objekti
$bmw->emero_veturen("bmw");
$bmw->cakto_shpejtesine(240);

$bmw->lexo_veturen();

$audi_auto->cakto_shpejtesine(230);
echo $audi_auto->lexo_veturen();
 

---------------------------------------------------------------

Objektet me kaq nuk mbarojne, ka edhe shume per to, si
Hieraklia e klasave qe quhet Inheritance, scope-i i variablave...
 

  • Postime: 28589
  • Karma: +48/-5
  • Gjinia: Mashkull

#2 ne: 28-08-2005, 18:39:44
Sigurimi i PHP
Sigurim dhe Kriptologji - 23/06/2004 - Shkruar nga: Krenar KOMONI -    
Hyrje ne PHP

Në shkrimin e kaluar Betim Deva dhe une (Krenar Komoni) patem shkruar per PHP dhe MySQL. Ne ate shkrim ju mund te njfotoheni me shume ne anen siperfaqesore per PHP edhe MySQL. PHP do te thote: PHP Hypertext Preprocessor. Instalimi i PHP-se ka qene njera nder supozimet qe eshte bere ne shkrimin e kaluar.
Ne kete shkrim une do te mundohem te ju shpjegoj hape pas hapi se si ju mund ta instaloni PHP, edhe pas instalimit te saj se si ju mund ta konfiguroni edhe ta siguroni ate. Ne kete shkrim une do te supozoj qe Apache Web Server apo ndonje Web Server tjeter eshte i instaluar ne sistemin e jauj.

Para nje-dy-tri muaje ju keni mundur te gjeni shume gabime qe jane bere ne kodin e PHP. BugTraq nga SecurityFocus apo BugTraq te tjere ne internet kane pasur lajme dhe verejtje te pa nderprera per keto gabime. Nese ju, si administrator, nuk i patet marre permasat per sigurimin e PHP gjate instalimit te saj, atehere juve keto gabime kane mundur te shkaktojne rezultate fatale per kompanine, organizaten, apo vete web faqen personale te juaj.

Instalimi i PHP

Para se te instaloni PHP, ju duhet qe te shkarkoni verzionin stabil nga PHP Web Faqja, apo njera nga pasqyret e saja.
Nese e instaloni PHP per produktivitet, e jo per rekreacion atehere ju lutem qe te shkarkoni verzionin STABIL [pra: stable version].
Une do te ju shpjegoj se si PHP instalohet ne Linux. Per shkak se cdo distribucion nuk e ka te miren e portage [nese jeni i interesuar me shume per kete, lexoni shkrimin nga Genc Kastrati per Gentoo Portage] te Gentoo, une do te shkarkoj kodin e PHP edhe do e kompajlloi nga burimi i saj.

Pasi te keni shkarkuar PHP kodin (pra: php source file), untar skedarin me kete komande.

tar xzvf php-4.3.7.tar.gz


Kur ky proces i shpejte mbaron, athere ju jeni gati qe ta konfiguroni PHP per kopjuterin e juaj, sipas programeve te ndryshme qe do ta perdorin PHP. Ne kete rast une do te ju tregoj se si ta konfiguroni PHP me Apache Web Server edhe MySQL databazen. Keto dy komponente te fundit supozohen qe jane te instaluara tani.

cd ../php-4.3.7
./configure --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.27 --enable-safe-mode
make
su
make install


Sic e shihni me larte opcioni safe-mode eshte i leshuar. Pra ne deshirojme qe ta instalojme PHP ne menyre qe te punon ne safe-mode. Kjo do t'i ekzekuton vetem skedaret qe jane me leje nga administratori edhe perdoruesit qe kane te drejta ne PHP.

Tani, hapi i ardhshem eshte qe te kopjoni skedarin per konfigurimin e PHP. Por para se te beni ate, ju duhet qe te krijoni folderin /usr/local/lib.
 cd ../php-4.3.7
mkdir /usr/local/lib
chmod 755 /usr/local/lib
cp php.ini-recommended /usr/local/lib/php.ini
chown root:sys /usr/local/lib/php.ini
chmod 644 /usr/local/lib/php.ini

Keto komanda te siperme do te ju ndihmojne per sigurimin e skedarit konfigurativ (php.ini). Pra ju i jepni privilegje vetem root per te shkruar edhe lexuar ne ate skedar. Ndersa te tjeret kane vetem te drejte te lexojne skedarin.

Integrimi i Apache Web Server dhe PHP

Ne menyre qe ta beni Apache Web Server te funksionoi me PHP, ju duhet qe te shtoni keto reshta ne skedarin konfigurativ httpd.conf te Apache.
AddType application/x-httpd-php .php


Nese keni instaluar PHP 4:
LoadModule php4_module libexec/libphp4.so


Nese keni instaluar PHP 5:
LoadModule php5_module libexec/libphp5.so


Sigurimi edhe konfigurimi i PHP

Per ta konfigurar PHP, ju duhet qe te ndryshoni disa direktiva ne skedarin php.ini, i cili tani gjindet ne folderin /usr/local/lib. Tani ne do t'i shikojme disa parametra qe luajne rol te rendesishem ne sigurimin e PHP.
safe_mode = On

Safe_mode eshte mire qe te jete [On] sepse PHP skriptat do te mund te perdoren vetem nga perdoruesit te cilet jane pronaret, apo te lejuarit per perdormin e PHP. Ky parameter shton shume bariera per sulmuesit qe deshirojne te perdorin edhe te hyne ne PHP pa autorizim.
safe_mode_gid = Off

Pasi qe safe_mode eshte [On], ju duhet qe te ndryshoni safe_mode_gid ne [Off].
safe_mode_exec_dir = directory[:...]

Kjo direktive lejon qe PHP te i perdor komandat system(), exec(), etj vetem ne folderat apo sub-folderat e specifikuara nga vete ju. Funksionet system() edhe exec() jane shume te rrezikshme ne PHP.
Nese ju keni dicka keshtu ne PHP skripten e juaj (index.php):
exec($variabla);


Sulmuesi mundet qe te thirre kete URL:
index.php?variabla="rm –rf *"

Kjo mund te shkaktoj deme ne serverin e juaj, sepse shume skedar - mos te gjithe, mund te fshihen nga faqja e diskut.

expose_php = Off

Nese kjo direktive eshte [Off] atehere PHP nuk do te informoj askend per vetveten. Pra sulmuesi do te kete veshtiresi qe te dije se cfare verzioni i PHP eshte ne server.

register_globals = Off

Ky parameter eshte shume i lakmijshem nga sulmuesit. Nese ky parameter eshte [On] atehere sulmuesit mund te ndryshojne shume variabla nga URL, me shume lehtesi. Pra atyre ju duhet qe vetem te shtojne emrin e variables pas pikepyejtes [?].

display_errors = Off

Me kete parameter ju mund t'i elminoni te gjitha gabimet qe paraqiten tek PHP skriptat kur ekzekutohen. Kjo nuk eshte mire qe te te jete [On] nese ju i paraqitni faqet per publik. Sulmuesit mund te marrin informata te rendesishme nga keto gabime edhe te i perdorin ato per interesat e tyre.

log_errors = On
error_log = emri_i_skedarit(filename)

Keto dy parametra duhet qe te jene keshtu sepse te gjitha gabimet ne skripta por edhe gabimet tjera do te ruhen ne skedar te caktuar nga ju. Ju mund te shikoni me vone se mos dikush eshte duke u munnduar qe te theje e te hyje ne sistemin e juaj.
Per direktiva dhe parametra tjera ju lutem lexoni se cfare funksioni kane ato nje nga nje para se t'i ndryshoni. Siguria eshte njera nder konceptet qe duhet te merret shume parasysh kur ju instaloni apo konfiguroni gjera te tilla, sikurse PHP.

Konkludimi

Instalimi i PHP mund te jete shume i lehte, por konfigurimi i PHP nuk vjen me sigurimin qe ju deshironi. Gjithmone lexoni se cka bejne direktivat apo parametrat, edhe gjithmone eliminoni gjerat qe jeni te sigurte qe nuk do te i perdorni. Kjo do te ju shpetoj koke dhembje por edhe do te i trulloj sulmuesit.

 
 
Pr-Tech.Net

Temat e fundit