You are on page 1of 86

Bi 1

GII THIU CU HNH V CI T PHP


I.

Gii thiu

PHP (Hypertext Preprocessor) l ngn ng script trn server c thit k d dng xy


dng cc trang Web ng. M PHP c th thc thi trn Webserver to ra m HTML v xut ra
trnh duyt web theo yu cu ca ngi s dng.
Ngn ng PHP ra i nm 1994 Rasmus Lerdorf sau c pht trin bi nhiu ngi tri
qua nhiu phin bn. Phin bn hin ti l PHP 5 c cng b 7/2004.
C nhiu l do khin cho vic s dng ngn ng ny chim u th xin nu ra y mt s l do c
bn:
- M ngun m (open source code)
- Min ph, download d dng t Internet.
- Ngn ng rt d hc, d vit.
- M ngun khng phi sa li nhiu khi vit chy cho cc h iu hnh t Windows, Linux,
Unix.
- Rt n gin trong vic kt ni vi nhiu ngun DBMS, v d nh : MySQL, Microsoft
SQL Server 2000, Oracle, PostgreSQL, Adabas, dBase, Empress, FilePro, Informix,
InterBase, mSQL, Solid, Sybase, Velocis v nhiu h thng CSDL thuc H iu Hnh
Unix (Unix dbm) cng bt c DBMS no c s h tr c ch ODBC (Open Database
Connectivity) v d nh DB2 ca IBM.
II. Ci t PHP, Apache, MYSQL
ci t PHP, cc bn c th ci t tng gi ring l (PHP, Apache, Mysql). Tuy nhin,
ti vn khuyn khch cc bn ci t dng gi tch hp. S tin li cho vic sau ny hn rt nhiu.
Gi phn mm m ti chn l : Appserv - Win - 2.5.8 (Tn phn mm l Appserv, dnh cho
phin bn window, phin bn 2.5.8).
+ Bc 1: Bn ci t bnh thng bng cch nhp vo file exe.
+ Bc 2: Phn mm s cho bn chn cn ci nhng module no. Hy gi nguyn tt c v
nhn next.
+ Bc 3: Trong giao din di:

Server Name: bn nhp vo: localhost


Email: Bn nhp vo email ca bn:
Port: Mc nh l 80, tuy nhin nu my bn ci IIS th c th chnh thnh 81
chy dch v bn appserv.
Nhn next qua trang k tip.
+ Bc 4: Trong giao din bn di ta in thng tin nh sau:

Enter root password: Bn g vo root


Re-enter root password: nhp li 1 ln na root
Cc cu hnh bn di gi nguyn.
phn: Enable InnoDB bn nh du vo. MYSQL s l c cc ng dng c
bt ch InnoDB.
Nhn Install.

Nhn next hon tt vic ci t.


Sau khi ci t xong bn g vo trnh duyt : http://localhost
Xut hin giao din nh bn di, tc l bn ci t thnh cng appserv.

Bi 2
KIN THC TNG QUAN V LP TRNH PHP
bi trc chng ta tm hiu v cch thc cu hnh v ci t PHP. Tip theo chng ta s
nghin cu v cu trc c bn trong PHP. V tng quan PHP c c php kh tng ng vi 1 s
ngn ng nh C, java. Tuy nhin, t bn thn chng cng c nhng im rt ring bit.

I. Cu trc c bn
PHP cng c th bt u v kt thc ging vi ngn ng HTML. Ch khc, i vi PHP
chng ta c nhiu cch th hin.
Cch 1 : C php chnh:
<?php M lnh PHP ?>
Cch 2: C php ngn gn
<? M lnh PHP ?>
Cch 3: C php ging vi ASP.
<% M lnh PHP %>
Cch 4: C php bt u bng script
<script language=php>
.....
</script>
Mc d c 4 cch th hin. Nhng i vi 1 lp trnh vin c kinh nghim th vic s dng
cch 1 vn l la chon ti u.
Trong PHP kt thc 1 dng lnh chng ta s dng du ";"
ch thch 1 on d liu no trong PHP ta s dng du "//" cho tng dng. Hoc dng
cp th "/*..*/" cho tng cm m lnh.

II. Xut gi tr ra trnh duyt


xut d liu ra trnh duyt chng ta c nhng dng c php sau :
+ Echo "Thng tin";
+ Printf "Thng tin";
Thng tin bao gm : bin, chui, hoc lnh HTML .

Nu gia hai chui mun lin kt vi nhau ta s dng du "."

III. Khi nim bin, hng, chui v cc kiu d liu.


1.

Bin trong PHP.

Bin c xem l vng nh d liu tm thi. V gi tr c th thay i c. Bin c bt


u bng k hiu "$". V theo sau chng l 1 t, 1 cm t nhng phi vit lin hoc c gch di.
Mt bin c xem l hp l khi n tha cc yu t :
+ Tn ca bin phi bt u bng du gch di v theo sau l cc k t, s hay du gch
di.
+ Tn ca bin khng c php trng vi cc t kha ca PHP.
Trong PHP s dng 1 bin chng ta thng phi khai bo trc, tuy nhin i vi cc lp
trnh vin khi s dng h thng x l cng mt lc cc cng vic, ngha l va khi bo va gn
d liu cho bin.
Bn thn bin cng c th gn cho cc kiu d liu khc. V ty theo nh ca ngi lp
trnh mong mun trn chng.
Mt s v d v bin :

2.

Khi nim v hng trong PHP.

Nu bin l ci c th thay i c th ngc li hng l ci chng ta khng th thay i


c. Hng trong PHP c nh ngha bi hm define theo c php: define (string tn_hng,
gi_tr_hng ).
Cng ging vi bin hng c xem l hp l th chng phi p ng 1 s yu t :
+ Hng khng c du "$" trc tn.
+ Hng c th truy cp bt c v tr no trong m lnh
+ Hng ch c php gn gi tr duy nht 1 ln.
+ Hng thng vit bng ch in phn bit vi bin
V d :

3.

Khi nim v chui:

Chui l mt nhm cc k t, s, khong trng, du ngt c t trong cc du nhy.


V d:
"welcome to VietNam"
to 1 bin chui, chng ta phi gn gi tr chui cho 1 bin hp l.
V d:
$fisrt_name= "Nguyen";
$last_name= Van A;
lin kt 1 chui v 1 bin chng ta thng s dng du "."
V d:

4.

Kiu d liu trong PHP

Cc kiu d liu khc nhau chim cc lng b nh khc nhau v c th c x l theo


cch khc nhau khi chng c theo tc trong 1 script.
Trong PHP chng ta c 6 kiu d liu chnh nh sau :

Chng ta c th s dng hm dng sn gettype() ca PHP4 kim tra kiu ca bt k bin.


V d:

Sau bi ny cc bn c nhng khi nim u tin v PHP, cc c php, cc kiu d liu,


v cch lm vic vi mi trng PHP nh th no. bi sau, chng ta s tip tc tip cn vi cc
thut ton v c php PHP mt cch r rng v quen thuc trong cc ngn ng lp trnh.
Bi 3
TON T V BIU THC TRONG PHP
i vi mi ngn ng lp trnh, ton t v biu thc lun l nhng kin thc c bn c s
dng x l cc thao tc trong giai on lp trnh. V PHP cng khng ngoi l, chng vn c
nhng kin trc c bn nh mt ngn ng lp trnh thng thng.
I. Ton t trong PHP:
1- Ton t gn:
Chng ta tng tip xc vi ton t ny bi vic khi to 1 bin. N gm k t n =. Ton
t gn ly gi tr ca ton hng bn phi gn n vo ton hng bn tri.
V d:
$name = "Johny Nguyen";
2- Ton t s hc:
L dng php tnh gin n cng, tr, nhn, chia trong s hc. Ngoi ra cn c php chia ly
d (%). c s dng ly ra n v d ca 1 php ton.

3- Ton t so snh:
L ton t c s dng thc hin cc php ton so snh gia hai s hng. Chi tit, xem
bng bn di.

4- Ton t logic:
Ton t logic l cc t hp cc gi tr boolean.
V d: ton t or tr v true nu ton t tri hoc ton t phi l true.
True || false true.
Ta c bng cc ton t nh sau:

5- Ton t kt hp:
Khi to m PHP, chng ta s thng nhn thy cn phi tng hoc gim lng bin mt s
nguyn no . Bn s thng thc hin iu ny khi chng ta m 1 gi tr no trong vng lp.

II. Cc biu thc c bn trong PHP:


1- Biu thc iu kin:
L biu thc dng kim tra 1 s kin. Nu chng tha iu kin th s thc thi mt hnh
ng. Ngc li s l mt hnh ng khc.
C php:
If(iu kin)
{
hnh ng

}
V d:

2- Vng lp trong PHP:


a- While()....
Php lp ny yu cu phi tha mn iu kin th mi thc thi c vng lp
C php:
While(iu kin)
{
Hnh ng thc thi
}
V d:

b-Do....while():
Php lp ny s thc thi hnh ng t nht l mt ln. Sau mi tin hnh kim tra iu
kin.
C php:
Do
{
Hnh ng thc thi
}while(iu kin)
V d:

c- For():
Php lp ny l php ton gp cc tham s. Gip ngi lp trnh gim thiu thi gian phi
khai bo bin v cc tham s khi thc thi vic lp d liu.
C php:

For( gi tr ; iu kin ; bin tng hoc gim)


{ Hnh ng }
V d:

3- Biu thc switch case:


L biu thc s dng gim thiu qu trnh x l d liu nu c qu nhiu php ton if else.
C php:
Switch(bin)
{
Case gi tr 1: Hnh ng; Break;

Case gi tr N: Hnh ng; Break;


Default: Hnh ng; Break;
}
V d:

III. Tng kt:


Kt thc bi hc ny, cc bn t nhiu nm c nhng thuc tnh c bn ca cc php
ton hc trong PHP, ngoi ra chng ta cng tng bc hiu c c php ca tng biu thc.
i vi cc vng lp, chng ta cn hiu v vn chng mt cch linh hot v mm do, phn
bit c while v dowhile. S dng hm switch trong trng hp c qu nhiu gi tr ifelse tr
v.
IV. Bi tp p dng:
Bi tp 1: Vit 1 trang web c gi tr t 1->20. Hy xut ra trnh duyt nhng s chn nm
trong khong 1->20 .
Bi tp 2: Xy dng 1 website tha yu cu xut ra bng cu chng t 2 ->10.
Bi 4
X L GI TR FORM TRONG PHP

Mt trong nhng ng dng quan trng ca PHP l gip tng tc x l d liu trn form ca
ngi s dng. Nhm mc ch gip cp nht thng tin mt cch linh ng v d dng qun l
chung hn bi s kt hp tuyt vi ca c s d liu. Tuy nhin lm c iu y PHP yu cu
form phi p ng 1 s quy nh chung t ra.
Chng ta cng phn tch th form trong HTML sau:

Chng ta thy rng 1 form phi bao gm:


Tn form d dng tch bit vi gi tr ca chng.
Action: hnh ng chuyn tip n link x l.
Method: L phng thc truyn bao gm POST v GET.
V d:

Nh vy ta thy rng. on code trn lm nhng vic sau.


u tin khi khch nhp liu username vo th chng s chuyn ti trang check.php tin hnh x
l thng tin. Trn phng thc POST, vi tn form l reg. Gi tr m chng ta gi l username va
nhp liu.
Vy lm cch no chng ta ly c gi tr va nhp liu no ?.
PHP cho php ta ly gi tr da vo 2 phng thc POST v GET.
i vi POST ta c : $_POST[Gi tr]
i vi GET ta c : $_GET[Gi tr]
Vy vi on code trn c th ly c bin x l l : $_POST[username];
Username l tn ca field m ngi s dng nhp liu vo.
1 Phng thc GET:
Phng thc ny cng c dng ly d liu t form nhp liu. Tuy nhin nhim v chnh ca
n vn l ly ni dung trang d liu t web server.

V d:
Vi url sau: shownews.php?id=50
Vy vi trang shownews ta dng hm $_GET[id] s c gi tr l 50.
2- Phng thc POST:
Phng thc ny c s dng ly d liu t form nhp liu. V chuyn chng ln trnh ch
webserver.
V d:
Xy dng 1 trang HTML vi ni dung gm form nhp liu h v tn. Sau dng 1 file php xut
ra thng tin h v tn m ngi s dng va nhp liu.
p n:
To file userform.htm vi ni dung sau:

To file processform.php xut ra d liu

Tng Kt:
Kt thc bi ny cc bn nm c k thut kim tra thng tin da trn PHP. Mt trong nhng
vn khng th thiu i vi bt k mt website ng no. Chng cho ta kim tra tnh hp l ca
ngi s dng 1 cch d dng bi s ty bin trong cc biu thc ca PHP.
Bi tp p dng :
To 1 trang web vi hp thoi nhp liu username v password. Nu ngi s dng nhp thng tin
username/password l admin/12345 th xut ra thng bo "welcome, admin" vi kiu ch Tahoma,

mu . Ngc li nu nhp sai th xut thng bo "Username hoc password sai. Vui lng nhp
li".
p n:
To trang login.html vi ni dung sau:

Tip tc to trang checklogin.php vi ni dung sau:

Bi 5
TM HIU QUY TRNH LM VIC TRN FILE TRONG PHP
Mt trong nhng tc v c bit ca PHP l cho php x l d liu trc tip thng qua
qu trnh nhn v c ni dung trn 1 file d liu. iu ny gip cho PHP tr nn tinh t v d ty
bin hn khi x l 1 lng d liu c quy m ln. Vic thao tc m, c, ghi, ng file ny cng c
ngha tun t nh bn ang lm vic trc tip trn 1 file d liu thc th.
1- ng, m 1 file trong PHP:
m 1 file ta s dng c php sau: fopen("ng dn", thuc tnh).
Trong ng dn chnh l ng dn ti file cn m.
Thuc tnh bao gm cc quyn hn cho php thao tc trn file nh th no.
Cc thuc tnh c bn :

V d:
<?php
$fp=fopen("test.txt",r)or exit("khong tim thay file can mo");
?>
Tng t nh th, ng 1 file ta c c php nh sau: fclose(file va m)
V d:
<?php
$fp=fopen("test.txt",r)or exit("khong tim thay file can mo");
fclose($fp);
?>
Vic m v ng ny khng c ngha l chng c c. Mun c c ni dung ca file
chng ta li tip tc vi thao tc ly d liu t file na.
2- c v ghi file trong PHP.
a) c 1 file trong PHP
PHP cho ta nhiu s la chn trong vic c 1 file. C nhiu hnh thc h tr nhng hin nay 2 hnh
thc ph bin nht vn l c file theo tng dng v c file theo tng k t.
- c file theo tng dng:
C php : fgets(file va m).
V d:
<?php

$fp=fopen("test.txt",r)or exit("khong tim thay file can mo");


echo fgets($fp);
fclose($fp);
?>
- c file theo tng k t:
C php : fgetc(file va m).
V d:
<?php
$fp=fopen("test.txt",r)or exit("khong tim thay file can mo");
echo fgetc($fp);
fclose($fp);
?>
Quy trnh c s din ra theo tng yu cu ca c php s dng. Nhng s c s rng buc bi vic
kim tra n cui file cha ?.
y chng ta dng c php sau: feof(file va m)
V d:
<?php
$fp=fopen("test.txt",r)or exit("khong tim thay file can mo");
while(!feof($fp))
{
echo fgets($fp);
}
fclose($fp);
?>
b) Ghi 1 file trong PHP
PHP cung cp cho ta 1 c php nh ghi d liu vo 1file
C php c bn : fwrite("file va m", "Ni dung cn ghi vo file")
V d:
<?php
$fp=fopen("test.txt",a)or exit("khong tim thay file can mo");
$news="Trung Tam Tin hoc Viet Chuyenn";
fwrite($fp,$news);
fclose($fp);
?>
Tng kt:
Vic s dng file mt cch thnh tho s gip bn d dng vn hnh cc ng dng mang quy m
va v nh nh: website nhiu ngn ng, b m,v c nhng cng ngh web mi nh XML mt
cch d dng. Qua bi hc ny chng ta cng hiu c nguyn l hot ng, trnh t x l 1 file d
liu khi chng c triu gi trong ti liu PHP.

Bi tp p dng:
Xy dng b m cho website, mi khi khch truy cp th s t ng tng ln 1 gi tr.
Bi 6
TNG QUAN V MNG V CC HM H TR TRONG PHP
Cng nh bao ngn ng lp trnh khc. PHP cng tn ti mt loi d liu c gi l mng.
C th hn Mng l 1 bin danh sch. Ngha l, mt bin vn cha nhiu phn t c to bi cc
s hoc chui. N cho php chng ta lu tr, sp xp th t v truy cp nhiu gi tr vi mt tn. V
cn lu rng mt phn t mng lun bt u vi gi tr l 0.
1- nh ngha mng trong PHP:
Vi c php ging vi java ta c cch gi 1 mng nh sau:
$tn_bin= array("Kenny","Maria","Julia","Kenvin")
Nh vy khi gi gi tr trong mng ta c:
Echo $tn_bin[2]; // Gi tr s cho l Julia.
Ngoi cch khai bo trn chng ta cng c th khai bo bng cch khc nh sau:
$tn_bin[] = "Kenny";
$tn_bin[] = "Gillian";
$tn_bin[] = "Charlene";
$tn_bin[] = "Calvin"
Chng ta khng cn thm k t vo. V PHP t x l cho chng ta phn .
thm 1 phn t vo mng chng ta cng c th s dng nh sau:
$tn_bin[] = "Jiro";
Nh vy nu chng ta gi gi tr: echo $tn_bin[4] th gi tr s l jiro. V n c PHP thm vo
sau cng v ngm hiu l gi tr tip theo.
V d:
<?php
$a=array("Kenny","Maria","Julia","Kenvin");
echo $a[2]; //Xut ra gi tr Julia
?>
2- Khi nim mng kt hp trong PHP
L cc mng c to index bng cc chui , chng c gi l cc mng kt hp.
V d:
<?
$a= array (name => "Kenny", job => "Teacher", age=>"45", email =>
"webmaster@vietchuyen.com.vn")
?>
Nh vy truy cp gi tr ca mng trn chng ta khng th s dng cch c c.
V d: ly gi tr ca tui ti khng th s dng cch trn : echo $a[2].
V chng ta gn gi tr ca index cho 1 tn gi khc. Do vy ly gi tr ca tui ta s dng nh
sau: echo $a[age] // Kt qu s cho ra 45.
<?

$tn_bin= array (name => "Kenny",


"webmaster@vietchuyen.com.vn")
echo $a[age];
?>

job

=>

"Teacher",

age=>"45",

email

=>

3- Php lp trong mng:


C php:
foreach($array as $temp)
{ Hnh ng }
Trong $array l mng m ta mun thc thi vic lp d liu, v $temp l mt bin trong ta s
tm thi lu tr mi phn t.
V d:
<?php
$name= array("Kenny", "Jiro", "Calvin", "Gillian");
foreach ($name as $test)
{ echo "$test<br>"; }
?>
b) Lp li qua mt mng kt hp:
C php:
Foreach($array as $key=>$value)
{ Hnh ng }
Trong $array l mng m ta mun thc thi vic lp d liu, $key l mt bin vn tm thi cha
mi kha, v $value l mt bin vn tm thi cha mi gi tr.
V d:
<?php
$person= array(name=>"Kenny", job=>"Teacher", email=>"whiletionvn@gmail.com", age=>"38");
foreach($person as $key=>$test)
{
echo "Key: $key. Gia Tri: $test<br>";
}
?>
4- Cc hm h tr trong PHP:
+ Hm gp mng:
C php: array_merge($mang1, $mang2);
+ Hm tch mng:
C php: array_slice($mang, v tr tch, s lng tch);
+ Hm sp xp mng:
C php: sort($mng);
+ Hm sp xp mng theo ch mc:
C php: ksort($mng);

+ Hm tm phn t c tn ti trong mng hay khng ?.


C php: in_array(gi tr tm, $mng);
5 - Tng kt:
Qua bi hc ny, chng ta tm hiu k v cc thnh phn ca mng mt chiu, nhiu chiu v cc
hm c bn v x l d liu. Hiu r cu trc mng, s sp xp ng b s gip ch cho cc bn rt
nhiu trong nhng ng dng ln.
Bi tp p dng :
1- Xy dng website c tnh nng upload cho php upload cng lc 10 file d liu.
2- Xy dng website c tnh nng upload, v ch cho php upload file c nh dng hnh nh nh
gif, jpg. Ngoi ra cc tnh nng khc u c thng bo li khng cho upload.
Bi 7
KHI NIM C BN V COOKIE V SESSION TRONG PHP
Cookie v session l hai phng php s dng qun l cc phin lm vic gia ngi s dng v
h thng. Vic qun l phin lm vic ny s gip bn to ra s chng thc hiu qu bi vic xc
nhn thng tin trc khi truy cp vo mt phn vng c nh. Ngoi ra, vic qun l tt phin lm
vic cng gip ngi truy cp cm thy d dng s dng dch v ca trang web cho nhng ln truy
cp sau. Bi c ch qun l phin lm vic ghi nhn li qu trnh truy cp ca ngi s dng khi h
thm vic trang web ca bn ln u.
1- Tng quan v cookie:
Cookie l 1 on d liu c ghi vo a cng hoc b nh ca my ngi s dng. N c trnh
duyt gi ngc ln li server mi khi browser ti 1 trang web t server.
Nhng thng tin c lu tr trong cookie hon ton ph thuc vo website trn server. Mi
website c th lu tr nhng thng tin khc nhau trong cookie, v d thi im ln cui ta gh thm
website, nh du ta login hay cha, v.v..
Cookie c to ra bi website v gi ti browser, do vy 2 website khc nhau (cho d cng host
trn 1 server) s c 2 cookie khc nhau gi ti browser. Ngoi ra, mi browser qun l v lu tr
cookie theo cch ring ca mnh, cho nn 2 browser cng truy cp vo 1 website s nhn c 2
cookie khc nhau.
a -Thit lp cookie:
thit lp cookie ta s dng c php:
Setcookie("tn cookie","gi tr", thi gian sng)
Tn cookie l tn m chng ta t cho phin lm vic.
Gi tr l thng s ca tn cookie.
V d:
Setcookie("username","admin", time() +3600)
Nh v d trn ta thy vi tn l username v gi tr l admin, c thi gian sng l 1 gi tnh t thi
im thit lp.
Ch : Kch bn cookie phi t trn mi gi tr tr v bao gm th HTML v lnh echo.
Kch bn cookie phi t trn mi gi tr tr v bao gm th HTML v lnh echo.
b - S dng cookie:

s dng li cookie va thit lp, chng ta s dng c php:


C php: $_COOKIE["tn cookies"]
Tn cookie l tn m chng ta thit lp pha trn.
V d:
To trang cookie.php vi ni dung sau:
<?php
setcookie("name","Kenny Huy",time() + 3600);
?>
<html>
<head>
<title>Test page 1</title></head>
<body>
<b><a href=cookie2.php>Click here</a></b>
</body>
</html>
Tip tc to trang cookie2.php vi ni dung sau:
<html>
<head><title>Result Page</title></head>
<body>
<?php
echo "Ten cua ban la <b>".$_COOKIE['name']."</b>";
?>
</body>
</html>
c- Hy Cookie:
hy 1 cookie c to ta c th dng 1 trong 2 cch sau:
+ C php: setcookie("Tn cookie")
Gi hm setcookie vi ch duy nht tn cookie m thi
+ Dng thi gian ht hn cookie l thi im trong qu kh.
V d: setcookie("name","Kenny Huy",time()-3600);
V d:
Tip tc to trang cookie3.php vi ni dung sau:
<?php
setcookie("name","Kenny Huy",time()-360);
?>
<html>
<head>
<title>Test page 1</title></head>
<body>
<b><a href=cookie2.php>Click here</a></b>
</body>
</html>

2- Tng quan v session:


Mt cch khc qun l ngi s dng l session. Session c hiu l khong thi gian ngi s
dng giao tip vi 1 ng dng. Mt session c bt u khi ngi s dng truy cp vo ng dng
ln u tin, v kt thc khi ngi s dng thot khi ng dng. Mi session s c c cp mt
nh danh (ID) khc nhau v ni dung c lu trong th mc thit lp trong file php.ini (tham s
session.save_path).
a- Thit lp session:
thit lp 1 session ta s dng c php: session_start()
on code ny phi c nm trn cc kch bn HTML. Hoc nhng lnh echo, printf.
thit lp 1 gi tr session, ngoi vic cho php bt u thc thi session. Chng ta cn phi ng
k 1 gi tr session. tin cho vic gn gi tr cho session .
Ta c c php sau: session_register("Name")
V d:
<?php
Session_start();
Session_register("username");
?>
b- S dng gi tr ca session:
Ging vi cookie. s dng gi tr ca session ta s dng m lnh sau:
C php: $_SESSION["name"]
$_SESSION["name"]
Vi Name l tn m chng ta s dng hm session_register("name") khai bo.
V d:
To trang session.php vi ni dung sau:
<?php
session_start();
session_register("name");
$_SESSION["name"] = "Kenny Huy";
?>
<html>
<head>
<title>Test page 1</title></head>
<body>
<b><a href=session2.php>Click here</a></b>
</body>
</html>
To trang session2.php vi ni dung sau:
<?
session_start();
?>
<html>

<head><title>Result Page</title></head>
<body>
<?php
echo "Ten cua ban la <b>".$_SESSION["name"]."</b>";
?>
</body>
</html>
c- Hy b session:
hy b gi tr ca session ta c nhng cch sau:
session_destroy() // Cho php hy b ton b gi tr ca session
session_unset()// Cho php hy b session .
V d:
To trang session3.php vi ni dung sau:
<?php
session_start();
session_destroy();
?>
<html>
<head>
<title>Test page 1</title></head>
<body>
<b><a href=session2.php>Click here</a></b>
</body>
</html>
3- Tng Kt:
Sau bi hc ny chng ta nm c cch iu khin phin lm vic gia cookie v session. S
dng chng trong tng trng hp c th. T c th p dng vit nhng ng dng nh nh
kim sot ngi ng nhp, lm gi hng online,..
Bi tp p dng:
Xy dng website s dng tnh nng session tha mn nhng yu cu sau:
1- To trang ng nhp vi username/password l : admin/vietchuyen. Nu user ng nhp thnh
cng th s xut ra dng welcome, admin.
2- To trang ng xut thot khi phn qun tr
Bi 8
KHI NIM V HM V GI LI HM TRONG PHP
gim thi gian lp li 1 thao tc code nhiu ln, PHP h tr ngi lp trnh vic t nh
ngha cho mnh nhng hm c kh nng lp li nhiu ln trong website. Vic ny cng gip cho
ngi lp trnh kim sot m ngun mt cch mch lc. ng thi c th ty bin mi trang. M
khng cn phi khi to hay vit li m lnh nh HTML thun.
1- Hm t nh ngha:

C php:
function functiono_name()
{
//Lnh thc thi
}
Tn hm c th l mt t hp bt k nhng ch ci, con s v du gch di, nhng phi bt u t
ch ci v du gch di.
V d:
<?php
function name()
{
$name= array("Kenny", "Jiro", "Calvin", "Gillian");
foreach ($name as $test)
{ echo "$test<br>"; }
}
name();
?>
2- Hm t nh ngha vi cc tham s:
C php:
function function_name($gt1,$gt2)
{
//Hnh ng
}
V d:
<?php
function indulieu($text)
{
echo "$text<br>";
}
indulieu("welcome");
indulieu("who are you ?");
?>
3- Hm t nh ngha vi gi tr tr v:
C php:
function function_name(C hoc khng c i s)
{
//Thuc thi
return giatri;
}

V d:
<?php
function tinhtong($a,$b)
{
$total=$a+$b;
return $total;
}
echo tinhtong(19,31)
?>
4-Gi li hm trong PHP:
PHP cung cp nhiu hm cho php triu gi li file. Nh hm include("URL n file"),
require("URL n file").
Ngoi hai c php trn cn c include_once(), require_once(). Hai hm ny cng c trch nhim gi
li hm. Nhng chng s ch gi li duy nht 1 ln m thi.
V d:
To file top.html vi ni dung:
<html><head><title>Welcome to you</title></head>
<body>
<table border=1 width=700>
<tr><td colspan=5 align=center>Banner</td></tr>
<tr>
<td align=center> Home </td>
<td align=center> News </td>
<td align=center> Music </td>
<td align=center> Download</td>
<td align=center> Contact</td></tr>
To file body.html vi ni dung:
<tr><td colspan=5 align=center>
Noi dung website
</td>
</tr>
To file bottom.html vi ni dung:
<tr>
<td colspan=5 align=center> Copyright@ abc.com</td>
</tr>
</table>
</body>
</html>
To trang index.php vi ni dung:

<?php
include("top.html");
include("body.html");
include("bottom.html");
?>
Tng kt:
Kt thc bi hc ny, hn cc bn c nhng khi nim c bn v hm v cch s dng li m
PHP. Trn ng dng thc t vic dng cc hm triu gi ng vai tr kh quan trng, n gip m
ngun ca ngi s dng logic v d dng chnh sa hn, vic ng dng n trn website nh th
no cng s ty bin hn so vi cch vit trc tip trn tng file.
Bi tp p dng:
1- Thit k website hon chnh bng vic phn tch cc file.
2- Xy dng website vi yu cu sau. Cho php ngi s dng chn mua s lng hng. Vi gi
tng ng vi tng mt hng. Sau xut tng tin( bao gm thu VAT 10%).
Bi 9
C BN V NGN NG SQL V MYSQL
Mysql l h qun tr d liu min ph, c tch hp s dng chung vi apache, PHP. Chnh
yu t pht trin trong cng ng m ngun m nn mysql qua rt nhiu s h tr ca nhng lp
trnh vin yu thch m ngun m. Mysql cng c cng mt cch truy xut v m lnh tng t vi
ngn ng SQL. Nhng Mysql khng bao qut ton b nhng cu truy vn cao cp nh SQL. V bn
cht Mysql ch p ng vic truy xut n gin trong qu trnh vn hnh ca website nhng hu ht
c th gii quyt cc bi ton trong PHP.
1- Cch khi ng v s dng MYSQL.
Chng ta s dng command nh sau:
Mysql hname uuser ppass
truy cp vo c s d liu.
Hoc s dng b appserv vo nhanh hn theo ng dn sau:
Start/ Appserv/ Mysql command Line client
Sau nhp password m chng ta t vo.
2- Nhng nh ngha c bn:
a) nh ngha c s d liu, bng, ct:
C s d liu: l tn ca c s d liu chng ta mun s dng
Bng: L 1 bng gi tr nm trong c s d liu.
Ct l 1 gi tr nm trong bng. Dng lu tr cc trng d liu.
Thuc tnh
V d:

Nh vy ta c th hiu nh sau:
1 c s d liu c th bao gm nhiu bng.
1 bng c th bao gm nhiu ct
1 ct c th c hoc khng c nhng thuc tnh.
b) nh ngha 1 s thut ng:
NULL : Gi tr cho php rng.
AUTO_INCREMENT : Cho php gi tr tng dn (t ng).
UNSIGNED : Phi l s nguyn dng
PRIMARY KEY : Cho php n l kha chnh trong bng.
c)Loi d liu trong Mysql:
y chng t ch gii thiu 1 s loi thng dng: 1 s d liu khc c th tham kho trn trang ch
ca mysql.

3- Nhng c php c bn:


C php to 1 c s d liu:

CREATE DATABASE tn_c_s_d_liu;


C php s dng c s d liu: Use tn_database;
C php thot khi c s d liu: Exit
C php to 1 bng trong c s d liu:
CREATE TABLE user (<tn_ct> <m_t>,,<tn_ct_n>..<m_t_n>)
V d:
mysql> create table user(user_id INT(15) UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(255) NOT NULL, password CHAR(50) NOT NULL, email
VARCHAR(200) NOT NULL, PRIMARY KEY (user_id));
Hin th c bao nhiu bng: show tables;
Hin th c bao nhiu ct trong bng: show columns from table;
Thm 1 ct vo bng :
ALTER TABLE tn_bng ADD <tn_ct> <thuc_tnh> AFTER <tn_ct>
V d:
mysql> alter table user add sex varchar(200) NOT NULL after email;
4- Thm gi tr vo bng:
C php:
INSERT INTO Tn_bng(tn_ct) VALUES(Gi_tr_tng_ng);
V d:
mysql>
insert
into
user(username,password,email,sex,home)
values("Lanna","12345","lanna@yahoo.com","F","www.abc.com");
5- Truy xut d liu:
C php:
SELECT tn_ct FROM Tn_bng;
V d:
mysql> select user_id,username from user;
6- Truy xut d liu vi iu kin:
C php:
SELECT tn_ct FROM Tn_bng WHERE iu kin;
V d:

mysql> select user_id,username from user where user_id=2;


7- Truy cp d liu v sp xp theo trnh t
C php:
SELECT tn_ct FROM Tn_bng
WHERE iu kin (c th c where hoc khng)
ORDER BY Theo quy c sp xp.
Trong quy c sp xp bao gm hai thng s l ASC (t trn xung di), DESC (t di ln
trn).
mysql> select user_id,username from user order by username ASC ;
8- Truy cp d liu c gii hn :
C php:
SELECT tn_ct FROM Tn_bng
WHERE iu kin (c th c where hoc khng)
LIMIT v tr bt u, s record mun ly ra
V d:
mysql> select user_id,username from user order by username ASC limit 0,10 ;
9- Cp nht d liu trong bng:
C php:
Update tn_bng set tn_ct=Gi tr mi
WHERE (iu kin).
Nu khng c rng buc iu kin, chng s cp nht ton b gi tr mi ca cc record trong bng.
V d:
mysql> update user set email="admin@qhonline.info" where user_id=1 ;
10- Xa d liu trong bng:
C php:
DELETE FROM tn_bng WHERE (iu kin).
Nu khng c rng buc iu kin, chng s x ton b gi tr ca cc record trong bng.
V d
mysql>delete from user where user_id=1 ;

Bi 10
KT HP PHP V MYSQL TRONG NG DNG WEBSITE
bi trc, chng ta cng nghin cu v cc c php sql v Mysql c bn bao gm vic
to bng, to kt ni, thm, sa, xa cc dng d liu trong c s d liu. V tip theo bi ny,
chng ta s cng tm hiu v cch s dng mysql kt hp vi PHP xut ra d liu nh th no.
lm vic vi mysql v PHP chng ta cn nm 6 hm c bn:
1- Kt ni c s d liu:
C php:
mysql_connect("hostname","user","pass")
2- La chn c s d liu:
C php:
mysql_select_db("tn_CSDL")
V d:
$conn=mysql_connect("localhost","root","root") or die(" khong the ket noi");
mysql_select_db("demo");
3- Thc thi cu lnh truy vn:
C php:
mysql_query("Cu truy vn y");
4- m s dng d liu trong bng:
C php:
mysql_num_rows();
5- Ly d liu t bng a vo mng:
C php:
mysql_fetch_array();
6- ng kt ni c s d liu:
C php:
mysql_close();
V d p dng:

To c s d liu da trn tng on code sau:


mysql -hlocalhost -uroot -proot
mysql>create database demo_mysql;
mysql> use demo_mysql;
mysql>create table user(id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, username
VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, PRIMARY KEY(id));
To trang test.php. u tin chng ta s kt ni c s d liu.
<?
$conn=mysql_connect("localhost", "root", "root") or die("can't connect database");
mysql_select_db("demo_mysql",$conn);
?>
Tip n vit cu truy vn ly ra tt c user t database.
<?
$sql="select * from user";
$query=mysql_query($sql);
?>
Kim tra xem trong bng d liu tn ti user no cha ?. Nu cha th xut ra thng bo li,
ngc li th a chng vo mng v lp cho n ht bng d liu.
<?
if(mysql_num_rows($query) == 0)
{
echo "Chua co du lieu";
}
else
{
while($row=mysql_fetch_array($query))
{
echo $row[username] ." - ".$row[password]."<br />";
}
}
?>
V cui cng chng ta ng kt ni v kt thc thao tc x l.
<?
mysql_close($conn);
?>
V cui cng l file hon chnh ca ng dng trn:
<?
$conn=mysql_connect("localhost", "root", "root") or die("can't connect database");
mysql_select_db("demo_mysql",$conn);
$sql="select * from user";

$query=mysql_query($sql);
if(mysql_num_rows($query) == 0)
{
echo "Chua co du lieu";
}
else
{
while($row=mysql_fetch_array($query))
{
echo $row[username] ." - ".$row[password]."<br />";
}
}
mysql_close($conn);
?>
Tng kt:
bi ny chng ta lm vic vi sql v cc k thut kt ni vi database ca PHP. Cc hm PHP
h tr mysql hin nay c rt nhiu. Tuy nhin v tnh nng cng nh phng thc s dng th chng
cng ging nhau. Do vy cc bn khng nn lo lng khi lm vic vi nhng hm m chng ta ang
nghin cu.
PHN 2
BI TP
Bi 11: Vit ng dng ng nhp bng PHP v MYSQL
nhng bi trc chng ta hc qua cc kin thc trng yu v PHP. Tuy nhin, c th xy
dng mt website hon chnh bng nhng kin thc th qu tht khng n gin. Bi v cc kin
thc qua sch v v ti liu d sao cng ch l nhng kin thc tng qut v thiu tnh khch quan
thc tin. Nn khi ngi hc lp trnh bc vo giai on vit ng dng th thng rt lng tng.
cng l l do ti vit bi ny hng dn cc bn dn lm quen vi cch tip cn mt ng dng
PHP&MYSQL nh th no.

Trc ht chng ta phi thit k v xy dng m hnh c s d liu ng vi tng lnh bn di


(xem li bi ngn ng SQL v MYSQL Cn Bn) sau mi tin hnh trin khai lp trnh.
view source
print?
1 mysql -hlocalhost -uroot -proot
2 mysql>create database project;
3 mysql>use project;
mysql>create table user( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, username
4 VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, level CHAR(1) NOT NULL,
PRIMARY KEY(id));
mysql>insert into user(username,password,level) values ("admin","12345","2")
5
("abc","12345","1");

Vy l chng ta c c s d liu nh m hnh trn. Tip n chng ta thit k Form HTML c


mn hnh ng nhp khi ngi dng truy cp.

view source
print?
1 <form action=login.php method=post>
2 Username: <input type=text name=username size=25 /><br />
3 Password: <input type=password name=password size=25 /><br />
4 <input type=submit name=ok value="Dang Nhap" />
5 </form>
Tip n chng ta tin hnh kim tra d liu t form
view source
print?
01 <?php
02 if(isset($_POST['ok']))
03 {
04 if($_POST['username'] == NULL)
05 {
06 echo "Please enter your username<br />";
07 }
08 else
09 {
10 $u=$_POST['username'];
11 }
12 if($_POST['password'] == NULL)
13 {
14 echo "Please enter your password<br />";
15 }
16 else
17 {
18 $p=$_POST['password'];
19 }
20 }
21 ?>
on code trn s kim tra xem ngi dng c tin hnh nhn nt ng nhp hay khng. V nu
c th chng ta s xt tip tnh trng ngi dng c trng cc username v password hay khng.
Nu c chng ta s thng bo li bn trn form, ngi s dng tin hnh nhp liu.

K n chng ta kim tra xem c tn ti hai bin $u v $p (ch khi ngi dng ng nhp thnh
cng th mi c th to ra 2 bin ). Tip n chng ta tin hnh kt ni c s d liu (xem li bi
kt hp PHP & MYSQL trong ng dng web).
view source
print?
1 <?php
2 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
3 mysql_select_db("project",$conn);
4 ?>
V tin hnh kim tra xem username v password ngi s dng va nhp c trng khp vi thng
tin c trong c s d liu hay khng ?. Nu khng th chng ta s bo li ngay. Ngc li s tin
hnh ly d liu t bng v gn vo session. c th qun l phin lm vic mt cch hiu qu
trn mi trang ca khu vc admin (xem li bi khi nim c bn v cookie v session).
view source
print?
01 <?php
02 if($u && $p)
03 {
04 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
05 mysql_select_db("project",$conn);
06 $sql="select * from user where username='".$u."' and password='".$p."'";
07 $query=mysql_query($sql);
08 if(mysql_num_rows($query) == 0)
09 {
10 echo "Username or password is not correct, please try again";
11 }
12 else
13 {
14 $row=mysql_fetch_array($query);
15 session_start();
16 session_register("userid");
17 session_register("level");
18 $_SESSION['userid'] = $row[id];
19 $_SESSION['level'] = $row[level];
20 }
21 }
22 ?>
Nh vy code hon chnh cho ng dng ny l nh sau:
view source

print?
01 <?php
02 if(isset($_POST['ok']))
03 {
04 if($_POST['username'] == NULL)
05 {
06 echo "Please enter your username<br />";
07 }
08 else
09 {
10 $u=$_POST['username'];
11 }
12 if($_POST['password'] == NULL)
13 {
14 echo "Please enter your password<br />";
15 }
16 else
17 {
18 $p=$_POST['password'];
19 }
20 if($u && $p)
21 {
22 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
23 mysql_select_db("project",$conn);
24 $sql="select * from user where username='".$u."' and password='".$p."'";
25 $query=mysql_query($sql);
26 if(mysql_num_rows($query) == 0)
27 {
28 echo "Username or password is not correct, please try again";
29 }
30 else
31 {
32 $row=mysql_fetch_array($query);
33 session_start();
34 session_register("userid");
35 session_register("level");
36 $_SESSION['userid'] = $row[id];
37 $_SESSION['level'] = $row[level];
38
39 }
40 }
41 }
42 ?>
43 <form action=login.php method=post>
44 Username: <input type=text name=username size=25 /><br />

45 Password: <input type=password name=password size=25 /><br />


46 <input type=submit name=ok value="Dang Nhap" />
47 </form>
bi sau, chng ta s tip tc tm hiu ng dng kt hp PHP & MYSQL cho vic thm mt thnh
vin nh th no. Mi s gp , cng nh thc mc ca cc bn dnh cho bi vit vui lng s dng
tnh nng tho lun ti din n. Hoc thng qua vic lin h ca h thng website. Mong s nhn
c nhiu kin ng gp t cc bn.
Bi 12: Vit ng dng thm thnh vin bng PHP v MYSQL
bi trc, chng ta xy dng ng dng thnh vin. Cho php ngi s dng thc thi cng vic
ng nhp vo h thng. Trong bi ny chng ta s tip tc cng vic pht trin ng dng trn,
ngi s dng sau khi ng nhp c nhng thao tc c quyn nh thm, qun l, sa, xo thnh
vin ca trang web. (xem li Bi 11: Vit ng dng ng nhp bng PHP & MYSQL).

Sau khi ng nhp vo trang admin ngi dng s c y sang trang qun l admin, ti y ch
nhng ai ng nhp ng vi username v password trong c s d liu v c quyn hn level l
2 th mi c th truy xut vo trang ny. V vy chng ta cn thao tc kim tra session qun l
phin lm vic ca ngi s dng. t on code sau nhng trang bn mun kim tra quyn truy
cp ca ngi s dng.
view source
print?
01 <?php
02 session_start();
03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2)
04 {
05 // ti y thc thi cc hot ng khi ng nhp thnh cng.
06 }
07 else
08 {
09 header("location: login.php");
10 exit();
11 }
12 ?>
Nh vy ti trang add_user.php chng ta cng t on code trn v vit thm 1 form thc thi cng
vic thm thnh vin.

view source
print?
01 <form action=add_user.php method=POST>
02 Level: <select name=level>
03 <option value=1>Member</option>
04 <option value=2>Admin </option>
05 </select><br />
06 Username: <input type=text name=username size=25><br />
07 Password: <input type=password name=password size=25> <br />
08 Re-Password: <input type=password name=re-password size=25><br />
09 <input type=submit name="adduser" value="Add New User">
10 </form>
Tng t nh nhng bi trc, chng ta cng ln lt kim tra tng i tng. Trc ht cn xem
th ngi dng nhn nt Add New user cha, sau li kim tra xem ngi dng nhp y
thng tin cha. Cui cng l so snh gia password v re-password c ging nhau hay khng. Tip
theo chng ta gn bin $l s bng vi gi tr m khi ngi dng chn level cho user . (xem li Bi
4: X l gi tr form trong PHP)
view source
print?
01 <?php
02 if(isset($_POST['adduser']))
03 {
04 if($_POST['username'] == "")
05 {
06 echo "Vui long nhap username<br />";
07 }
08 else
09 {
10 $u=$_POST['username'];
11 }
12 if($_POST['password'] != $_POST['re-password'])
13 {
14 echo "Password va re-password khong chinh xac<br />";
15 }
16 else

17
18
19
20
21
22
23
24
25
26
27
28
29

{
if($_POST['password'] == "" )
{
echo "Vui long nhap password<br />";
}
else
{
$p=$_POST['password'];
}
}
$l=$_POST['level'];
}
?>

K n chng ta li tip tc kim tra xem c tn ti bin $u, $p v $l hay khng (ch khi ngi dng
nhp liu th mi tn ti cng lc 3 bin ny). sau khi kim tra s tn ti ca 3 bin ny chng ta
tip tc dng PHP kt ni c s d liu kim tra xem username m ngi dng va chn c trng
vi username khc trong c s d liu cha. nu trng th phi xut thng bo li yu cu h chn
username khc cn nu khng th ta li tin hnh thm thnh vin mi ny vo CSDL.
view source
print?
01 <?php
02 if($u & $p & $l)
03 {
04 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
05 mysql_select_db("project",$conn);
06 $sql="select * from user where username='".$u."'";
07 $query=mysql_query($sql);
08 if(mysql_num_rows($query) != "" )
09 {
10 echo "Username nay da ton tai roi<br />";
11 }
12 else
13 {
14 $sql2="insert into user(username,password,level) values('".$u."','".$p."','".$l."')";
15 $query2=mysql_query($sql2);
16 echo "Da them thanh vien moi thanh cong";
17 }
18 }
19 ?>
Ti y ta kt thc thao tc thm mt thnh vin mi vo c s d liu. Sau y l ton b code
trong ng dng ny.
view source

print?
01 <?php
02 session_start();
03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2)
04 {
05 if(isset($_POST['adduser']))
06 {
07 if($_POST['username'] == "")
08 {
09 echo "Vui long nhap username<br />";
10 }
11 else
12 {
13 $u=$_POST['username'];
14 }
15 if($_POST['password'] != $_POST['re-password'])
16 {
17 echo "Password va re-password khong chinh xac<br />";
18 }
19 else
20 {
21 if($_POST['password'] == "" )
22 {
23 echo "Vui long nhap password<br />";
24 }
25 else
26 {
27 $p=$_POST['password'];
28 }
29 }
30 $l=$_POST['level'];
31 if($u & $p & $l)
32 {
33 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
34 mysql_select_db("project",$conn);
35 $sql="select * from user where username='".$u."'";
36 $query=mysql_query($sql);
37 if(mysql_num_rows($query) != "" )
38 {
39 echo "Username nay da ton tai roi<br />";
40 }
41 else
42 {
43 $sql2="insert into user(username,password,level) values('".$u."','".$p."','".$l."')";
44 $query2=mysql_query($sql2);

45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

echo "Da them thanh vien moi thanh cong";


}
}
}
}
?>
<form action=add_user.php method=POST>
Level: <select name=level>
<option value=1>Member</option>
<option value=2>Admin </option>
</select><br />
Username: <input type=text name=username size=25><br />
Password: <input type=password name=password size=25> <br />
Re-Password: <input type=password name=re-password size=25><br />
<input type=submit name="adduser" value="Add New User">
</form>
<?php
}
else
{
header("location: login.php");
exit();
}
?>

bi sau, chng ta li tip tc tm hiu ng dng kt hp PHP v MYSQL cho vic qun l tt c
thnh vin trong database ra nh th no. Mi s gp , cng nh thc mc ca cc bn dnh cho
bi vit vui lng s dng tnh nng tho lun ti din n. Hoc thng qua vic lin h ca h thng
website. Mong s nhn c nhiu kin ng gp t cc bn.
Bi 13: Vit ng dng qun l thnh vin bng PHP v MYSQL
cc bi trc, chng ta cng tm hiu v vic thm mt thnh vin v thit lp trang ng nhp
vo h thng administrator. bi ny, chng ta s cng nghin cu v ng dng qun tr cc ti
khon. Hay ni cch khc l h thng li ton b danh sch ca nhng thnh vin trn website ca
chng ta.

Sau khi ng nhp vo trang admin ngi dng s c y sang trang qun l admin, ti y ch
nhng ai ng nhp ng vi username v password trong c s d liu v c quyn hn level l
2 th mi c th truy xut vo trang ny. V vy chng ta cn thao tc kim tra session qun l
phin lm vic ca ngi s dng. t on code sau nhng trang bn mun kim tra quyn truy
cp ca ngi s dng.
view source

print?
01 <?php
02 sessison_start();
03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2)
04 {
05 // ti y thc thi cc hot ng khi ng nhp thnh cng.
06 }
07 else
08 {
09 header("location: login.php");
10 exit();
11 }
12 ?>
Nh vy, chng ta s t on code ny trang qun l user. C th ti t trang ny c tn file l
manage_user.php. V d liu s lp li ton b user v ng vi tng user s l 1 dng d liu c
lp li. Chng ta s xy dng 1 bng gm c STT l s th t ca tng user c m trn mi user
khi lp, username l tn truy cp ca h, level l cp bc ca user (1 l member v 2 l admin), edit
l ct cha cc link chnh sa user, del l ct xa cc user.
view source
print?
1 <table align=center width=400 border=1>
2 <tr>
3 <td>STT</td>
4 <td>Username</td>
5 <td>Level</td>
6 <td>Edit</td>
7 <td>Del</td>
8 </tr>
Tip theo, chng ta s kt ni CSDL tin hnh lp cc user.
view source
print?
01 <?php
02 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
03 mysql_select_db("project",$conn);
04 $sql="select * from user order by id DESC";
05 $query=mysql_query($sql);
06 if(mysql_num_rows($query) == "")
07 {
08 echo "<tr><td colspan=5 align=center>Chua co username nao</td></tr>";
09 }
10 ?>

on code trn tin hnh la chn tt c user c trong database. ng thi kim tra xem trong
database c tn ti user no khng. Nu khng s xut ra thng bo "cha c username no". Ngc
li khi c tn ti user chng ta s x l tip nh sau:
view source
print?
01 <?php
02 $stt=0;
03 while($row=mysql_fetch_array($query))
04 {
05 $stt++;
06 echo "<tr>";
07 echo "<td>$stt</td>";
08 echo "<td>$row[username]</td>";
09 if($row[level] == "1")
10 {
11 echo "<td>Member</td>";
12 }
13 else
14 {
15 echo "<td>Admin</td>";
16 }
17 echo "<td><a href=edit_user.php?userid=$row[id]>Edit</a></td>";
18 echo "<td><a href=del_user.php?userid=$row[id]>Del</a></td>";
19 echo "</tr>";
20 ?>
y ta dng bin $stt lm b m cho s lng user. Nh vy, c mi ln lp 1 user th b m
ny s t ng tng ln 1 n v. Sau , chng ta a d liu vo mng v truyn cc gi tr trn
vo cc ct d liu trong bng.

Ti y ta kt thc thao tc qun l cc user ang tn ti trong c s d liu. Sau y l ton b


code trong ng dng ny.
view source

print?
01 <?php
02 sesison_start();
03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2)
04 {
05 ?>
06 <table align=center width=400 border=1>
07 <tr>
08 <td>STT</td>
09 <td>Username</td>
10 <td>Level</td>
11 <td>Edit</td>
12 <td>Del</td>
13 </tr>
14 <?
15 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
16 mysql_select_db("project",$conn);
17 $sql="select * from user order by id DESC";
18 $query=mysql_query($sql);
19 if(mysql_num_rows($query) == "")
20 {
21 echo "<tr><td colspan=5 align=center>Chua co username nao</td></tr>";
22 }
23 else
24 {
25 $stt=0;
26 while($row=mysql_fetch_array($query))
27 {
28 $stt++;
29 echo "<tr>";
30 echo "<td>$stt</td>";
31 echo "<td>$row[username]</td>";
32 if($row[level] == "1")
33 {
34 echo "<td>Member</td>";
35 }
36 else
37 {
38 echo "<td>Admin</td>";
39 }
40 echo "<td><a href=edit_user.php?userid=$row[id]>Edit</a></td>";
41 echo "<td><a href=del_user.php?userid=$row[id]>Del</a></td>";
42 echo "</tr>";
43 }
44

45 }
46 ?>
47 </table>
bi sau, chng ta li tip tc tm hiu ng dng chnh sa v xa mt thnh vin trong PHP v
MYSQL nh th no. Mi s gp , cng nh thc mc ca cc bn dnh cho bi vit vui lng s
dng tnh nng tho lun ti din n. Hoc thng qua vic lin h ca h thng website. Mong s
nhn c nhiu kin ng gp t cc bn.
Bi 14: vit ng dng sa xa thnh vin bng PHP v MYSQL
Trong bi trc chng ta ni v cch thm v qun l thnh vin kt hp PHP v MYSQL. Tip
theo trong bi ny, chng ta s vit tip 2 ng dng sa v xa thnh vin hon tt module user.

theo kp bi ny, cc bn vui lng xem li bi 11,12,13. V cc bi c hng dn lin mch t


u ti cui.

Cng nh nhng bi trc, h thng sa v xa thnh vin ny cng ch c th thc hin c khi
ngi s dng ng nhp thnh cng vi quyn hn ca 1 administrator. Do vy, bn ng qun
kim tra session u khi bt u vit ng dng ny nh.
view source
print?
01 <?php
02 sessison_start();
03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2)
04 {
05 // ti y thc thi cc hot ng khi ng nhp thnh cng.
06 }
07 else
08 {
09 header("location: login.php");
10 exit();
11 }
12 ?>
A- Xy dng trang sa thnh vin:
V l trang chnh sa thnh vin, nn ni dung ca chng c phn s ging vi phn thm thnh
vin, ch khc l cc nhp liu gi y c d liu. D liu ny chng ta tin hnh ly t c s
d liu thng qua bin truyn m trang qun l gi edit_user.php?userid=$row[id]

Nh vy ly c gi tr t lin kt ny chng ta s s dng bin $_GET['userid']. Sau khi c


c gi tr ny, vic cn li ca bn l ly thng tin ca id ny t c s d liu v a vo form
ngi dng c th chnh sa.

Vy ta c.
view source
print?
01 <?php
02 $sql="select * from user where id='".$id."'";
03 $query=mysql_query($sql);
04 $row=mysql_fetch_array($query);
05 ?>
06 <form action="edit_user.php?userid=<?=$id?>" method=post>
07 Level: <select name=level>
08 <option value=1 <? if($row[level] == 1) echo "selected"; ?>) >Member</option>
09 <option value=2 <? if($row[level] == 2) echo "selected"; ?>>Administrator</option>
10 </select><br />
11 Username: <input type=text name=user size=20 value="<?=$row[username]?>" /><br />
12 Password: <input type=password name=pass size=20 /> <br />
13 Re-password: <input type=password name=repass size=20 /><br />
14 <input type=submit name=ok value="Edit User" />
15 </form>
Theo nh on code trn phn value chng ta mun a gi tr vo th buc phi s dng c php
gn <?=$ten?> hoc cng c th s dng bng cch <? echo $ten; ?>.. y chng ta ch a ra gi
tr trn text box username, cn li mt khu do c th b m ha nn khng nn hin th ra. Phn
level do lu trong c s d liu l nhng con s 1,2 nn khi a ra chng ta phi so snh, nu trong
bng lu l 1 th ch c gi tr bng 1 s thm ch selected. mc nh la chn khi ngi dng
nhn vo nt chnh sa.

Tip ti ngi dng s nhn nt edit. Vic cn li ca chng ta l kim tra d liu khi h tin hnh
chnh sa d liu. im khc bit y l chng ta phi cn nhc khi vit trang chnh sa. Bi

khng phi ai vo chnh sa cng u sa c thng tin username, password, level. C khi h ch sa
mi level hoc c khi h ch sa mi password.

V th ta phi xt cc trng hp gii quyt.

Trng hp 1: Ngi dng ch chnh sa username, level m khng chnh sa password. Khi
username, level bt buc u c d liu nn ta khng cn kim tra chng rng hay khng. Nhng
vi password chng ta khng th bt ngi lp trnh nhp liu. V h hon ton c th rng.

Trng hp 2: Ngi dng chnh sa username, level ,password. Khi ta xem password c d liu
v ta tin hnh cp nht.

gii quyt bi ton trn tha 2 trng hp ta s xt phng php sau:

Ta kim tra password v repassword c ging nhau hay khng ?. Nu chng khc nhau ngha l
ngi dng nhp liu nhng nhp sai. Vy phi cnh bo li cho h bit l h nhp sai. Cn
ngc li nu password v repassword ging nhau th s ny sinh 2 trng hp con.

+ Mt l password v repassword u c d liu

+ Hai l password v repassword khng c d liu.

Khi trng hp con 1 chng ta s khi to bin $p v ghi nhn thng tin h nhp liu. V
trng hp 2 chng ta khng ghi nhn thng tin ngi nhp liu v h khng c nh chnh sa
mt khu. C th vit on code n gin nh sau:
view source
print?
01 <?php
02 if($_POST['pass'] != $_POST['repass'])
03 {
04 echo "Password and re-password is not correct";
05 }

06
07
08
09
10
11
12
13

else
{
if($_POST['pass'] != NULL)
{
$p=$_POST['pass'];
}
}
?>

Tip ti chng ta s phn loi d liu cp nht. Khi c username,password, level th ta cp nht tt
c thng tin ca h bng c php SQL. (xem li bi 9: ngn ng SQL v MYSQL c bn). Ngc
li khi khng tn ti password th ta ch cp nht username v level.

Mt iu na chng ta cn quan tm l i vi lnh update v delete, ta phi truyn 1 id c th


trnh vic chng xa hoc sa d liu ton b trong bng user. Vi id ti truyn nhn t bn ngoi
ta s c.
view source
print?
01 <?php
02 if($u && $p && $l )
03 {
04 $sql="update user set username='".$u."', password='".$p."', level='".$l."' where id='".$id."'";
05 mysql_query($sql);
06 header("location:mana_user.php");
07 exit();
08 }
09 else
10 {
11 if($u && $l)
12 {
13 $sql="update user set username='".$u."', level='".$l."' where id='".$id."'";
14 mysql_query($sql);
15 header("location:mana_user.php");
16 exit();
17 }
18 }
19 ?>
Sau khi sa thnh cng mt thnh vin chng ta s a ngi dng tr v vi trang qun l (xem bi
13 bit cch xy dng trang qun l thnh vin nh th no)

Ni dung ca ton b code trn nh sau:

view source
print?
01 <?php
02 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
03 mysql_select_db("project",$conn);
04 $id=$_GET['userid'];
05 if(isset($_POST['ok']))
06 {
07 if($_POST['user'] == NULL)
08 {
09 echo "Please enter your username";
10 }
11 else
12 {
13 $u=$_POST['user'];
14 }
15 if($_POST['pass'] != $_POST['repass'])
16 {
17 echo "Password and re-password is not correct";
18 }
19 else
20 {
21 if($_POST['pass'] != NULL)
22 {
23 $p=$_POST['pass'];
24 }
25 }
26 $l = $_POST['level'];
27 if($u && $p && $l )
28 {
29 $sql="update user set username='".$u."', password='".$p."', level='".$l."' where id='".$id."'";
30 mysql_query($sql);
31 header("location:mana_user.php");
32 exit();
33 }
34 else
35 {
36 if($u && $l)
37 {
38 $sql="update user set username='".$u."', level='".$l."' where id='".$id."'";
39 mysql_query($sql);
40 header("location:mana_user.php");
41 exit();
42 }
43 }

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

}
$sql="select * from user where id='".$id."'";
$query=mysql_query($sql);
$row=mysql_fetch_array($query);
?>
<form action="edit_user.php?userid=<?=$id?>" method=post>
Level: <select name=level>
<option value=1 <? if($row[level] == 1) echo "selected"; ?>) >Member</option>
<option value=2 <? if($row[level] == 2) echo "selected"; ?>>Administrator</option>
</select><br />
Username: <input type=text name=user size=20 value="<?=$row[username]?>" /><br />
Password: <input type=password name=pass size=20 /> <br />
Re-password: <input type=password name=repass size=20 /><br />
<input type=submit name=ok value="Edit User" />
</form>

B- Xy dng trang xa thnh vin:

i vi trang xa d liu, chng ta cng khng cn phi x l qu nhiu. Bi nhim v ca chng


ch n gin l xa i nhng dng trong bng.

Nh vy cng nh trang edit chng ta nhn gi tr t ni dung lin kt trang qun l gi l


del_user.php?userid=$row[id].

V thc thi lnh kt ni csdl x l ni dung ny.


view source
print?
1 <?php
2 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
3 mysql_select_db("project",$conn);
4 $sql="delete from user where id='".$id."'";
5 mysql_query($sql);
6 header("location:mana_user.php");
7 exit();
8 ?>
Sau khi xa xong thnh vin th h thng s a chng ta tr v trang qun l user li.

C- Tng kt:

Nh vy chng ta kt thc cc thao tc thm, sa, xa, qun l thnh vin. Qua nhng chui bi
hc ny, chc hn cc bn c nhng khi nim hnh thnh t vic ng dng lp trnh PHP xy
dng cc h thng c bn ri. Vic lp trnh 1 ng dng i hi bn ngoi vic vn dng ni dung
hc ra, bn cn phi bit linh ng x l cc tnh hung mt cch hiu qu. Trnh vic rp khun
mt cch my mc v hc thuc cc ni dung code. V nhng m hnh khc, bi ton khc bn s
c nhng cch thc x l v gii quyt khc nhau.
Mi s gp , cng nh thc mc ca cc bn dnh cho bi vit vui lng s dng tnh nng tho lun
ti din n. Hoc thng qua vic lin h ca h thng website. Mong s nhn c nhiu kin
ng gp t cc bn.
Bi 15: Vit ng dng to m xc nhn bng PHP
nhng bi trc, chng ta tm hiu v cch lm vic vi PHP kt hp MYSQL trong vic xy
dng h thng thm, sa, xa v qun l user. Trong bi ny, chng ta tip tc tm hiu phng
php to dy s ngu nhin chng tn cng flood d liu. Hoc ai c tnh spam khin c s d
liu ca chng ta khng th x l tip c.

Trc tin, chng ta tin hnh to form HTML n gin thc thi thao tc nhp liu nh sau:
view source
print?
01 <form action="form.php" method=post>
02 <table>
03 <tr>
04 <td align="left">
05 <label for="captcha">Captcha</label>
06 </td>
07 <td>
08 <input type="text" name="txtCaptcha" maxlength="10" size="32" />
09 </td>
10 <td>
11 <img src="random_image.php" />
12 </td>
13 </tr>
14 <tr>
15 <td> </td>
16 <td>
17 <input type=submit name=ok value="Check" />
18 </td>
19 </tr>

20 </table>
21 </form>
Chng ta ch phn hnh nh, ti y ti truyn ng dn chnh l lin kt ti trang
random_image.php. Trang ny s thc thi cng vic to ra nhng bc hnh c dy s ngu nhin
phn nhp liu ca ngi s dng tham chiu ti.

Tip theo, chng ta khi to file random_image.php ly ra dy s ngu nhin v pht sinh chng
ngay trn tm hnh cho ngi truy cp nhp liu.

lm c iu . Chng ta s khi to session v lu dy s nhp liu vo session ca mnh,


sau so khp vi trang form bn kia.(xem li bi 7: Khi nim c bn v cookie v session trong
PHP)

u tin chng ta s dng hm md5 v ran m ha cc k t bao gm s v ch ci. Khi s dng


hm md5() k t pht sinh s ln ti 32 k t. V chng ta ch ly duy nht 5 k t t chui m ha
bng hm substr. Tip tc ta lu on m ha ny trong session c th
$_SESSION['security_code'], ti trang form ta s s dng so snh vi phn nhp liu ca ngi
s dng.

Vy nn on code di s gii quyt cc tnh hung ny.


view source
print?
1 <?php
2 $md5_hash = md5(rand(0,999));
3 $security_code = substr($md5_hash, 15, 5);
4 $_SESSION["security_code"] = $security_code;
5 ?>
K n ta khi to tm hnh vi chiu rng v chiu cao m ta thit lp thng qua hm
ImageCreate() . V tip tc khai bo 2 mu chnh l trng v en bng hm
ImageColorAllocate($image, red, green, blue ). Hm ny s to ra mt mu sc t h mu RGB trn
tm hnh m chng ta va khi to.

Tip tc ta background ca tm hnh s l mu en v ch xut hin trn tm hnh s l mu


trng bng hm ImageFill() v hm ImageString(). Hm ImageString c mt s i s c bn nh
sau: ImageString($image, 5, 30, 6, $security_code, $white); Trong :

+ $image l hnh m chng ta khi to.

+ 5: l font-size m chng ta quy c cho k t xut hin trn hnh.

+ 30: l khong cch bn tri ca tm hnh.

+ 6 : l khong cch t trn ca tm hnh.

+ $security_code: l on code sau khi chng ta ct ra trn.

+ $white: l mu sc m chng ta s dng hm ImageColorAllocate() trn khi to ra mu


trng.
view source
print?
1 <?php
2 $width = 100;
3 $height = 30;
4 $image = ImageCreate($width, $height);
5 $white = ImageColorAllocate($image, 255, 255, 255);
6 $black = ImageColorAllocate($image, 0, 0, 0);
7 ImageFill($image, 0, 0, $black);
8 ImageString($image, 5, 30, 6, $security_code, $white);
9 ?>
K ti chng ta s s dng lnh header tr ni dung ny tr v d liu dng hnh. V tin hnh
khi to nh dng cho file hnh m chng ta va to l JPG ng thi gii phng hnh tm c s
dng khi to ra tm hnh ny bng on code sau:
view source

print?
1 <?php
2 header("Content-Type: image/jpeg");
3 ImageJpeg($image);
4 ImageDestroy($image);
5 ?>
d qun l chng ta s t tt c on code trn vo trong 1 hm d s dng v qun l chng
tt hn. Vy ton b on code trong trang random_image.php ny nh sau.
view source
print?
01 <?php
02 session_start();
03 function create_image()
04 {
05 $md5_hash = md5(rand(0,999));
06 $security_code = substr($md5_hash, 15, 5);
07 $_SESSION["security_code"] = $security_code;
08 $width = 100;
09 $height = 30;
10 $image = ImageCreate($width, $height);
11 $white = ImageColorAllocate($image, 255, 255, 255);
12 $black = ImageColorAllocate($image, 0, 0, 0);
13 ImageFill($image, 0, 0, $black);
14 ImageString($image, 5, 30, 6, $security_code, $white);
15 header("Content-Type: image/jpeg");
16 ImageJpeg($image);
17 ImageDestroy($image);
18 }
19 create_image() ;
20 exit();
21 ?>
Tip tc, trong trang form chng ta phi khi to session chng nhn c cc gi tr m ta
khi to v s dng trang random_image, k ti ta kim tra xem ngi dng c nhn submit cha.
Nu c ta s tip tc kim tra xem ngi dng nhp vo textbox c ng l dy s hin th trn hnh
nh hay khng. V xut ra thng bo tng ng vi ni dung ca ngi nhp liu. (xem li bi 4:
X l gi tr form trong PHP)

Sau y l ton b code ca trang form.php.


view source
print?

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

<?php
session_start();
if(isset($_POST['ok']))
{
if($_POST['txtCaptcha'] == NULL)
{
echo "Please enter your code";
}
else
{
if($_POST['txtCaptcha'] == $_SESSION['security_code'])
{
echo "ma lenh hop le";
}
else
{
echo "Ma lenh khong hop le";
}
}
}
?>
<form action="form.php" method=post>
<table>
<tr>
<td align="left">
<label for="captcha">Captcha</label>
</td>
<td>
<input type="text" name="txtCaptcha" maxlength="10" size="32" />
</td>
<td>
<img src="random_image.php" />
</td>
</tr>
<tr>
<td> </td>
<td>
<input type=submit name=ok value="Check" />
</td>
</tr>
</table>
</form>

Download ton b source code ny ti y.

Tng kt:

Qua bi hc ny, chng ta hiu c nguyn tc x l v nhng hm c bn m 1 h thng khi s


dng captcha cn phi vn dng nh th no. V tt nhin hm x l captcha ny cng ch mang
kin trc tng i. tng cng tnh bo mt hn, cc bn nn s dng 1 s hm chuyn dng
nhm m ha hoc gy ni dung kh nhn hn chn cc tools hoc cc h thng bot c th qua
mt thng s ny.
Mi s gp , cng nh thc mc ca cc bn dnh cho bi vit vui lng s dng tnh nng tho lun
ti din n. Hoc thng qua vic lin h ca h thng website. Mong s nhn c nhiu kin
ng gp t cc bn.
Bi 16: Vit ng dng m s ngi online bng php
Trong bi ny, chng ta s ni v cch thc xy dng tnh nng thng k s ngi ang ving thm
website ca bn. V l chc nng nh, nn ti khng i nhiu v nhng tnh nng ln nh bao nhiu
khch, bao nhiu thnh vin,...Ch n thun l qu trnh hin th hin ti c bao nhiu ngi ang
thm ving website ca bn.

Trc ht, chng ta khi to c s d liu nh sau. (xem li bi bi 9: ngn ng SQL v MYSQL c
bn)
view source
print?
1 mysql> create table useronline(tgtmp INT(15) DEFAULT "0" NOT NULL ,
2 ip VARCHAR(50) NOT NULL ,
3 local VARCHAR(100) NOT NULL,
4 PRIMARY KEY(tgtmp),
5 KEY ip(ip),
6 KEY local(local));
tgtmp l thi gian m h truy cp c tnh khi h truy vo trang web .

IP l dy s lu thng tin IP ca h khi ving thm website ca chng ta.

local l ni lu ng dn m h ang truy cp.

Khi ngi dng truy cp vo trang web, chng ta s tin hnh insert thng tin ca h vo c s d
liu vi cc tham s c bn nhng trong database.

tgtmp c tnh ra bng hm time(). Hm ny s ly ra thi gian hin ti ca ngi truy cp. Tip
tc ta li tnh thi gian mi ca h, c tnh bng vic quy c thi gian quy nh. C th y ti
cho l 900 giy tng ng vi 15 pht truy cp ca h.
view source
print?
1 <?php
2 $tg=time();
3 $tgout=900;
4 $tgnew=$tg - $tgout;
5 ?>
nh vy nu thi gian lu trong database m nh hn thi gian new ny th chng ta c th hiu
rng v khch y ri khi website ca chng ta. C th hn.

V d: ti ving thm website l 7h.

nh vy h thng s ghi thng tin lc l 7h.

Nu sau 1 thi gian ti khng lm g, hoc ti khng truy cp website na th h thng s khng
ghi nhn thng tin mi. Nh th nu by gi 8h v tr i 15 pht ti quy c, r rng l thi gian
mi hin ti l 7h45, Thi gian ny vn ln hn thi im lu thng tin 7h (7h45 > 7h). Do vy, nu
chng tha iu kin th chng ta ch vic xa i cc record trong c s d liu l xong.

Vy ta c code kt ni CSDL nh sau:(xem li bi 10: kt hp PHP v MYSQL trong ng dng)


view source
print?
1 <?php
2 $conn=mysql_connect("localhost","root","root") or die("can't connect");
3 mysql_select_db("online",$conn);
4 ?>
Sau ta tin hnh ghi nhn thng tin ngi dng vo CSDL.
view source
print?

1
2
3
4

<?php
$sql="insert into useronline(tgtmp,ip,local) values('$tg','$REMOTE_ADDR','$PHP_SELF')";
$query=mysql_query($sql);
?>

$REMOTE_ADDR l bin mi trng dng ly ra IP ca ngi truy cp.

$PHP_SELF l bin mi trng dng ly ra ng dn m ngi dng ang truy cp.

Tip n ta tin hnh xa record khi thi gian thc ln hn thi gian trong c s d liu.
view source
print?
1 <?php
2 $sql="delete from useronline where tgtmp < $tgnew";
3 $query=mysql_query($sql);
4 ?>
Tip tc l cng vic hin th thng tin ra bn ngoi bng cch lit k cc record c trong database.
view source
print?
1 <?php
2 $sql="SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'";
3 $query=mysql_query($sql);
4 $user = mysql_num_rows($query);
5 ?>
DISTINCT l c php cho php lit k cc dng record m khng cho php chng c d liu trng
lp nh c php select bnh thng.

Vy chng ta s lit k tt c nhng ip ca nhng ai ang truy cp trn trang useronline.php.

Phn vic cui cng cn li l chng ta s xut thng tin y ra trnh duyt.

V sau y l ton b ni dung code ca trang useronline.php

view source
print?
01 <?php
02 $tg=time();
03 $tgout=900;
04 $tgnew=$tg - $tgout;
05 $conn=mysql_connect("localhost","root","root") or die("can't connect");
06 mysql_select_db("online",$conn);
07 $sql="insert into useronline(tgtmp,ip,local) values('$tg','$REMOTE_ADDR','$PHP_SELF')";
08 $query=mysql_query($sql);
09 $sql="delete from useronline where tgtmp < $tgnew";
10 $query=mysql_query($sql);
11 $sql="SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'";
12 $query=mysql_query($sql);
13 $user = mysql_num_rows($query);
14 echo "user online :$user";
15 ?>
Bi 17: Xy dng h thng bnh chn bng PHP v MYSQL
lot bi trc, chng ta bn ti cc ng dng qun l ngi s dng, xy dng b m, to m
bo mt phng chng nhng ngi c dng xu trn website. Tip theo, trong bi ny chng ta
s bn v cch thc xy dng h thng cho php ngi dng bnh chn khi h tin hnh thm ving
website ca chng ta. xy dng h thng bnh chn chng ta cn phn tch xem h thng ny cn
c bao nhiu bng quan h.

A- Phn tch v thit k c s d liu:

Trong tnh hung ny chng ta cn 1 bng cu hi v 1 bng cu tr li.

Phn tch quan h gia chng ta c:

1 Cu hi c nhiu cu tr li.

1 cu tr li ch dnh cho 1 cu hi.


Vy gia 2 bng ny s pht sinh mt kha ngoi, l kha dng lin kt gia hai bng ny.

Vy ta c c php to 2 bng nh sau.


Bng cu hi ( question)
view source
print?
1 mysql> create table question(qid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
2 -> qtitle VARCHAR(255) NOT NULL,
3 -> qdate DATE NOT NULL DEFAULT '0000-00-00',
4 -> PRIMARY KEY(qid));
Bng cu tr li (anwser)
view source
print?
1 mysql> create table answer(aid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
2 -> qid INT(10) UNSIGNED NOT NULL,
3 -> atitle VARCHAR(255) NOT NULL,
4 -> acount INT(10) NOT NULL DEFAULT '0',
5 -> PRIMARY KEY(aid));
Nhp liu bng CSDL ta c:
view source
print?
1 mysql> Insert into question(qtitle,qdate) values("Ban thay qhonline the nao ?","
2 2009-10-10");

3 mysql> Insert into answer(qid,atitle,acount) values("1","Nhin rat dep",0);


4 mysql> Insert into answer(qid,atitle,acount) values("1","Nhin Dep",0);
5 mysql> Insert into answer(qid,atitle,acount) values("1","Nhin Cung duoc",0);
6 mysql> Insert into answer(qid,atitle,acount) values("1","Nhin qua xau",0);
B- Xy dng trang bnh chn poll.php

Kt ni c s d liu:
view source
print?
1 <?php
2 $conn=mysql_connect("localhost","root","root") or die("can not connect database");
3 mysql_select_db("poll_exam",$conn);
4 ?>
La chn cu hi c trong c s d liu lit k ra trn website, sau ta li tip tc lit k cc
cu tr li ca cu hi bng cch s dng du chn la (radio). Nh vy chng ta s phi chy
cng lc 2 cu truy vn lng nhau trong sut qu trnh truy xut.
view source
print?
01 <?php
02 $sql="select * from question order by qid desc";
03 $query=mysql_query($sql);
04 if(mysql_num_rows($query) > 0)
05 {
06 $row=mysql_fetch_array($query);
07 $qid=$row[qid];
08 echo "<form action="poll.php?questionid=$qid" method="post" >";
09 echo "<h2>$row[qtitle]</h2>";
10 $sql2="select * from answer where qid='".$qid."' order by aid";
11 $query2=mysql_query($sql2);
12 if(mysql_num_rows($query2) > 0)
13 {
14 while($row2=mysql_fetch_array($query2)){
15 echo "<input type=radio name=answer value=$row2[aid]>$row2[atitle]<br />";
16 }
17 }
18 echo "<input type=submit name=ok value="Binh Chon">";
19 echo "<a href=result.php?questionid=$qid>Xem Ket Qua</a>";
20 echo "</form>";
21 }
22 ?>

V mn hnh s xut ra nh hnh bn di

V khi ngi dng nht nt Bnh chn, chng ta s gi li chnh trang x l d liu m ngi
dng va la chn.

Vy ta phi s dng lnh isset() kim tra xem ngi dng c nhn nt bnh chn khng, tip n
ta ly ra id m ngi dng va tin hnh chn form bn di.

Cui cng ta cp nht d liu bng cch ly s trong c s d liu cng tip cho 1 n v na. V
a ngi dng sang trang kt qu.

V trong on code ny c lnh header nn chng ta phi t qu trnh x l ny trn form. Nu


khng s b li d liu khi gi.
view source
print?
01 <?php
02 if(isset($_POST['ok']))
03 {
04 $id=$_POST['answer'];
05 $qid=$_GET['questionid'];
06 $sql3="update answer set acount=acount + 1 where aid='".$id."'";
07 mysql_query($sql3);
08 header("location: result.php?questionid=$qid");
09 exit();
10 }
11 ?>

Vy ton b code ca trang poll.php ny nh sau.


view source
print?
01 <?php
02 $conn=mysql_connect("localhost","root","root") or die("can not connect database");
03 mysql_select_db("poll_exam",$conn);
04 if(isset($_POST['ok']))
05 {
06 $id=$_POST['answer'];
07 $qid=$_GET['questionid'];
08 $sql3="update answer set acount=acount + 1 where aid='".$id."'";
09 mysql_query($sql3);
10 header("location: result.php?questionid=$qid");
11 exit();
12 }
13 $sql="select * from question order by qid desc";
14 $query=mysql_query($sql);
15 if(mysql_num_rows($query) > 0)
16 {
17 $row=mysql_fetch_array($query);
18 $qid=$row[qid];
19 echo "<form action="poll.php?questionid=$qid" method="post" >";
20 echo "<h2>$row[qtitle]</h2>";
21 $sql2="select * from answer where qid='".$qid."' order by aid";
22 $query2=mysql_query($sql2);
23 if(mysql_num_rows($query2) > 0)
24 {
25 while($row2=mysql_fetch_array($query2)){
26 echo "<input type=radio name=answer value=$row2[aid]>$row2[atitle]<br />";
27 }
28 }
29 echo "<input type=submit name=ok value="Binh Chon">";
30 echo "<a href=result.php?questionid=$qid>Xem Ket Qua</a>";
31 echo "</form>";
32 }
33 ?>
C- Xy dng trang kt qu bnh chn result.php

trang ny, ta s ly gi tr question id ca ngi bnh chn t trang poll.php v tnh ton xem t l
phn trm ca cc cu hi y nh th no.

u tin, ta ly gi tr t poll.php?questionid=1. vy 1 l gi tr ta s c c t
$_GET['questionid']. Tip n ta li dng gi tr va ly c ny lit k thng tin cu hi v tnh
ton gi tr.

tnh ton gi tr, ta cn bit tng s bnh chn trong ton b cc cu tr li hin nay l bao nhiu.
Bng cu lnh SUM ta c th lm c iu .
view source
print?
1 $sql2="select qid, SUM(acount) as total from answer group by qid having qid='".$qid."'";
Cu lnh ny cho php ta ly ra tng s bnh chn trong c s d liu ca cu hi m ta truyn vo.
SUM c acount ta cn phi GROUP(gom nhm) chng ta li theo m cu hi m chng ta cn
tm. having l mnh theo sau c ngha tng ng vi where, n thng c s dng theo
GROUP.

Nh vy ly ra tng s phiu bnh chn ta ch vic thc thi cu truy vn ny, v ly tn ct tm l


total.
view source
print?
1 <?php
2 $sql2="select qid, SUM(acount) as total from answer group by qid having qid='".$qid."'";
3 $query2=mysql_query($sql2);
4 $row2=mysql_fetch_array($query2);
5 $total=$row2[total];
6 ?>
k ti, ta li tnh ton s phiu ca tng cu hi trong c s d liu, da vo tng s cu hi ny.

V d: Tng s cu hi l 10
cu 1 l 3
cu 2 l 4
cu 3 l 2
cu 4 l 1
vy suy ra phn trm trn tng s 10 ca 4 cu ny c tnh bng cch ly. s liu ca tng cu
chia cho tng s cu hi v nhn cho 100. (3/10)*100 = 30%

lm trn kt qu ta s dng hm round(). Gip d liu a v s ng b v r rng nht.

Vy code x l ca chng ta nh sau:


view source
print?
01 <?php
02 $sql3="select * from answer where qid='".$qid."' order by aid";
03 $query3=mysql_query($sql3);
04 if(mysql_num_rows($query3) > 0)
05 {
06 while($row3=mysql_fetch_array($query3)){
07 $percent=round(($row3[acount]/$total)*100,2);
echo "<h4 style="color:red; font:12px verdana; ">$row3[atitle] : $row3[acount] ($percent
08
%)</h4>";
09 }
10 }
11 ?>
Kt qu khi xut ra s c hnh nh sau:

Vy ton b m ngun ca trang result.php ny nh sau:


view source
print?
01 <?php
02 $conn=mysql_connect("localhost","root","root") or die("can not connect database");
03 mysql_select_db("poll_exam",$conn);

04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

if(isset($_GET['questionid']))
{
$qid=$_GET['questionid'];
$sql="select * from question where qid='".$qid."'";
$query=mysql_query($sql);
$row=mysql_fetch_array($query);
echo "<h2>$row[qtitle]</h2>";
$sql2="select qid, SUM(acount) as total from answer group by qid having qid='".$qid."'";
$query2=mysql_query($sql2);
$row2=mysql_fetch_array($query2);
$total=$row2[total];
$sql3="select * from answer where qid='".$qid."' order by aid";
$query3=mysql_query($sql3);
if(mysql_num_rows($query3) > 0){
while($row3=mysql_fetch_array($query3)){
$percent=round(($row3[acount]/$total)*100,2);
echo "<h4 style="color:red; font:12px verdana; ">$row3[atitle] : $row3[acount] ($percent
%)</h4>";
}
}
}
?>

Download ton b m ngun ca bi ny ti y.


Mi s gp , cng nh thc mc ca cc bn dnh cho bi vit vui lng s dng tnh nng tho lun
ti din n. Hoc thng qua vic lin h ca h thng website. Mong s nhn c nhiu kin
ng gp t cc bn.
Bi 18: Xy dng ng dng to trang upload nhiu hnh nh
nhng bi trc, chng ta c dp nghin cu tng ng dng nh bi
vic kt hp PHP v Mysql. Trong bi ny, chng ta s tip tc tm hiu
phng php xy dng mt trang upload nhiu hnh nh nh th no. V lu
chng vo c s d liu ra sao trong lp trnh php.
M hnh ny l rt cn thit i vi cc h thng. Bi qua ngi s dng
c th thao tc v upload nhng hnh nh i km vi h thng ca h nh tin
tc, sn phm,
u tin, ta tin hnh xy dng c s d liu vi bng images nh sau (xem li bi 9: c bn v
ngn ng sql v mysql).
view source
print?
1 CREATE TABLE `images` (
2 `img_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
3 `img_url` VARCHAR( 255 ) NOT NULL ,
4 `img_name` VARCHAR( 150 ) NOT NULL

5 );
Nh vy, ti c bng images vi 3 ct thuc tnh l img_id dng lu kha ca tng hnh, img_url
dng lu ng dn vo h thng, img_name dng lu tn hnh nh.
ng dng ca chng ta cng rt cn s ty bin v d s dng. Sao cho ngi dng c th hon ton
thao tc. V d: nu c 2 hnh, h ch mun to ra 2 ch chn file th s ch khai bo l 2. V
ngc li nu l n hnh, h s to c n file la chn. lm c iu ny, trc tin ta cn to 1
form nh cho php ngi dng nhp vo s lng file m h mun thao tc. Vy ti khi to file c
tn upload.php vi m lnh form nh sau:
view source
print?
1 <form action="upload.php" method="post">
Enter your Image: <input type="text" name="txtnum" value="<?php echo $_POST['txtnum']; ?>"
2
size="10" />
3 <input type="submit" name="ok_num" value="Accept" />
4 </form>
Sau khi ngi dng nhn nt accept th cng l lc chng ta to ra s field upload theo yu cu ca
h. Vy, ta c code x l bn di nh sau: (xem li bi 4: x l gi tr trn form).
view source
print?
01 <?php
02 if(isset($_POST['ok_num']))
03 {
04
$num=$_POST['txtnum'];
05
echo "<hr />";
06
echo "Ban dang chon $num file upload<br />";
echo "<form action='doupload.php?file=$num' method='post' enctype='multipart/form07
data'>";
08
for($i=1; $i <= $num; $i++)
09
{
10
echo "<input type='file' name='img[]' /><br />";
11
}
12
echo "<input type='submit' name='ok_upload' value='Upload' />";
13
echo "</form>";
14 }
15 ?>
on code ny s dng vng lp for vi iu kin l bin $i s nh hn s file m h nhp vo.
ng thi, vic upload thnh cng ti form ta cng cn thm on code :
enctype='multipart/form-data'.
S lng field s lp theo yu cu ca ngi dng. Do vy. ti name ca th input, ta s s dng
mng lu thng tin. S dng name='img[]', c ngha l mi ln lp v mi ln ngi dng chn
file th mng img s thm 1 kha tng ng. (xem li bi 6: tng quan v mng v cc hm h tr)

V cui cng l nt submit thc thi cng vic upload v gi ti trang doupload.php?file=$num (ch
r s file c th do ngi dng nhp ti trang doupload).

Vy ton b code ca trang upload ny s nh sau:


view source
print?
01 <form action="upload.php" method="post">
Enter your Image: <input type="text" name="txtnum" value="<?php echo $_POST['txtnum']; ?>"
02
size="10" />
03 <input type="submit" name="ok_num" value="Accept" />
04 </form>
05 <?php
06 if(isset($_POST['ok_num']))
07 {
08
$num=$_POST['txtnum'];
09
echo "<hr />";
10
echo "Ban dang chon $num file upload<br />";
echo "<form action='doupload.php?file=$num' method='post' enctype='multipart/form11
data'>";
12
for($i=1; $i <= $num; $i++)
13
{
14
echo "<input type='file' name='img[]' /><br />";
15
}
16
echo "<input type='submit' name='ok_upload' value='Upload' />";
17
echo "</form>";
18 }
19 ?>
Ti trang thc hin nhim v doupload.php ta cn kim tra xem, ngi dng c nhn nt upload t
trang bn kia hay khng ?. Nu c ta s x l cng on upload y, nu khng ta cn thng bo li
cho ngi dng v yu cu h chn file.
view source
print?
01 <<?php
02 if(isset($_POST['ok_upload']))
03 {

04
//thc thi upload
05 }
06 else
07 {
08
echo "Vui long chon hinh truoc khi truy cap vao trang nay";
09 }
10 ?>
Nh vy, khi ngi dng nhn upload, ta s ly c tham s l bin $num t lin kt $_GET[file']
m ta thit lp trn phn form action ca file upload trang trc.
Bin $num ny dng thc thi vic upload v tun t ly cc thng tin ca file.
upload file t my ln h thng ta cn s dng hm:
move_uploaded_file(tn_file_tm,ng dn ti h thng).
C th din gii nm na cng vic ca hm ny nh sau: Ngay sau khi ngi dng nhn upload, h
thng s to ra 5 tham s ng vi tng file. C th l tn tm (tmp_name), tn gc (name), kch
thc (size), nh dng mime (type) v li (error) nu c. V khc vi kiu nhp liu thng thng,
khi chng ta s dng <input type=file name=ten> th lc ny s pht sinh mt bin mi trng mi
l $_FILES[ten'] v d nhin n s i km vi 5 tham s c th trn.
V d: $_FILES[ten'][name'] //Ly ra tn gc ca file.
Vy ng vi c php upload trn ta s c:
move_uploaded_file($_FILES['img']['tmp_name'],"data/".$_FILES['img']['name']);
C php ny s t ng upload hnh nh ln th mc data trn h thng. Vy ta cn phi to th mc
data ngang cp vi 2 file upload v doupload. Nu l host tht, bn cn CHMOD th mc l 777
(cho php th mc c ton quyn) th mi thc thi upload file c.
Trong tnh hung ca chng ta, v l upload mt lc nhiu file, nn lc ny ta phi s dng tham s
mng ti trang upload ta khi to.
Vy ng vi bin $num ta nhn t upload trn ta s trin khai code n gin nh sau:
view source
print?
1 <?php
2 for($i=0; $i< $num; $i++)
3
{
4 move_uploaded_file($_FILES['img']['tmp_name'][$i],"data/".$_FILES['img']['name'][$i]);
5 $url="data/".$_FILES['img']['name'][$i];
6 $name=$_FILES['img']['name'][$i];
7}
8 ?>

Vi bin $i l s lng tng ln theo vng lp. V mng lun bt u bi kha l 0 nn ta cn phi
thit lp khi to bin $i vi gi tr l 0. Bin $url v $name l ng dn hnh nh v tn gc ca
tm hnh c s dng lu vo CSDL.
K ti, ta cn lu thng tin hnh nh tng ng vo c s d liu. lm c iu ny, ta cn kt
ni CSDL vi c php sau: (xem li bi 10: kt hp php & mysql trong ng dng website).
view source
print?
1 <?php
2 $conn=mysql_connect("localhost","root","root") or die("can't connect your database");
3 mysql_select_db("images",$conn);
4 ?>
Nh vy mi khi upload thnh cng mt hnh nh, ta phi thm hnh nh vo CSDL nh sau:
view source
print?
1 <?php
2 $sql="insert into images(img_url,img_name) values('$url','$name')";
3 mysql_query($sql);
4 ?>
Sau khi thm vo CSDL ta cn hin th thng tin v hnh nh va upload cho ngi dng bit h
upload thnh cng.
Khi ta s dng mt bin $site lu ng dn gc hin th trn textbox.

Vy hon chnh code cho file doupload.php ny nh sau:

view source
print?
01 <?php
02 $site="http://www.qhonline.info";
03 if(isset($_POST['ok_upload']))
04 {
05 $num=$_GET['file'];
06 echo "<h3>Demo Images Script - Copyright by QHOnline.Info</h3>";
07 $conn=mysql_connect("localhost","root","root") or die("can't connect your database");
08 mysql_select_db("images",$conn);
09 for($i=0; $i< $num; $i++)
10 {
11 move_uploaded_file($_FILES['img']['tmp_name'][$i],"data/".$_FILES['img']['name'][$i]);
12 $url="data/".$_FILES['img']['name'][$i];
13 $name=$_FILES['img']['name'][$i];
14 $sql="insert into images(img_url,img_name) values('$url','$name')";
15 mysql_query($sql);
16 echo "Upload Thanh cong file <b>$name</b><br />";
17 echo "<img src='$url' width='120' /><br />";
18 echo "Images URL: <input type='text' name='link' value='$site/$url' size='35' /><br />";
19
20 }
21 mysql_close($conn);
22 }
23 else
24 {
25 echo "Vui long chon hinh truoc khi truy cap vao trang nay";
26 }
27 ?>
Download ton b m ngun ca bi ny ti y.
Mi s gp , cng nh thc mc ca cc bn dnh cho bi vit vui lng s dng tnh nng tho lun
ti din n. Hoc thng qua vic lin h ca h thng website. Mong s nhn c nhiu kin
ng gp t cc bn.
Bi 18: Xy dng ng dng to trang upload nhiu hnh nh
nhng bi trc, chng ta c dp nghin cu tng ng dng nh bi
vic kt hp PHP v Mysql. Trong bi ny, chng ta s tip tc tm hiu
phng php xy dng mt trang upload nhiu hnh nh nh th no. V lu
chng vo c s d liu ra sao trong lp trnh php.
M hnh ny l rt cn thit i vi cc h thng. Bi qua ngi s dng
c th thao tc v upload nhng hnh nh i km vi h thng ca h nh tin
tc, sn phm,

u tin, ta tin hnh xy dng c s d liu vi bng images nh sau (xem li bi 9: c bn v


ngn ng sql v mysql).
view source
print?
1 CREATE TABLE `images` (
2 `img_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
3 `img_url` VARCHAR( 255 ) NOT NULL ,
4 `img_name` VARCHAR( 150 ) NOT NULL
5 );
Nh vy, ti c bng images vi 3 ct thuc tnh l img_id dng lu kha ca tng hnh, img_url
dng lu ng dn vo h thng, img_name dng lu tn hnh nh.
ng dng ca chng ta cng rt cn s ty bin v d s dng. Sao cho ngi dng c th hon ton
thao tc. V d: nu c 2 hnh, h ch mun to ra 2 ch chn file th s ch khai bo l 2. V
ngc li nu l n hnh, h s to c n file la chn. lm c iu ny, trc tin ta cn to 1
form nh cho php ngi dng nhp vo s lng file m h mun thao tc. Vy ti khi to file c
tn upload.php vi m lnh form nh sau:
view source
print?
1 <form action="upload.php" method="post">
Enter your Image: <input type="text" name="txtnum" value="<?php echo $_POST['txtnum']; ?>"
2
size="10" />
3 <input type="submit" name="ok_num" value="Accept" />
4 </form>
Sau khi ngi dng nhn nt accept th cng l lc chng ta to ra s field upload theo yu cu ca
h. Vy, ta c code x l bn di nh sau: (xem li bi 4: x l gi tr trn form).
view source
print?
01 <?php
02 if(isset($_POST['ok_num']))
03 {
04
$num=$_POST['txtnum'];
05
echo "<hr />";
06
echo "Ban dang chon $num file upload<br />";
echo "<form action='doupload.php?file=$num' method='post' enctype='multipart/form07
data'>";
08
for($i=1; $i <= $num; $i++)
09
{
10
echo "<input type='file' name='img[]' /><br />";
11
}
12
echo "<input type='submit' name='ok_upload' value='Upload' />";
13
echo "</form>";
14 }
15 ?>
on code ny s dng vng lp for vi iu kin l bin $i s nh hn s file m h nhp vo.
ng thi, vic upload thnh cng ti form ta cng cn thm on code :

enctype='multipart/form-data'.
S lng field s lp theo yu cu ca ngi dng. Do vy. ti name ca th input, ta s s dng
mng lu thng tin. S dng name='img[]', c ngha l mi ln lp v mi ln ngi dng chn
file th mng img s thm 1 kha tng ng. (xem li bi 6: tng quan v mng v cc hm h tr)
V cui cng l nt submit thc thi cng vic upload v gi ti trang doupload.php?file=$num (ch
r s file c th do ngi dng nhp ti trang doupload).

Vy ton b code ca trang upload ny s nh sau:


view source
print?
01 <form action="upload.php" method="post">
Enter your Image: <input type="text" name="txtnum" value="<?php echo $_POST['txtnum']; ?>"
02
size="10" />
03 <input type="submit" name="ok_num" value="Accept" />
04 </form>
05 <?php
06 if(isset($_POST['ok_num']))
07 {
08
$num=$_POST['txtnum'];
09
echo "<hr />";
10
echo "Ban dang chon $num file upload<br />";
echo "<form action='doupload.php?file=$num' method='post' enctype='multipart/form11
data'>";
12
for($i=1; $i <= $num; $i++)
13
{
14
echo "<input type='file' name='img[]' /><br />";
15
}
16
echo "<input type='submit' name='ok_upload' value='Upload' />";
17
echo "</form>";
18 }
19 ?>

Ti trang thc hin nhim v doupload.php ta cn kim tra xem, ngi dng c nhn nt upload t
trang bn kia hay khng ?. Nu c ta s x l cng on upload y, nu khng ta cn thng bo li
cho ngi dng v yu cu h chn file.
view source
print?
01 <<?php
02 if(isset($_POST['ok_upload']))
03 {
04
//thc thi upload
05 }
06 else
07 {
08
echo "Vui long chon hinh truoc khi truy cap vao trang nay";
09 }
10 ?>
Nh vy, khi ngi dng nhn upload, ta s ly c tham s l bin $num t lin kt $_GET[file']
m ta thit lp trn phn form action ca file upload trang trc.
Bin $num ny dng thc thi vic upload v tun t ly cc thng tin ca file.
upload file t my ln h thng ta cn s dng hm:
move_uploaded_file(tn_file_tm,ng dn ti h thng).
C th din gii nm na cng vic ca hm ny nh sau: Ngay sau khi ngi dng nhn upload, h
thng s to ra 5 tham s ng vi tng file. C th l tn tm (tmp_name), tn gc (name), kch
thc (size), nh dng mime (type) v li (error) nu c. V khc vi kiu nhp liu thng thng,
khi chng ta s dng <input type=file name=ten> th lc ny s pht sinh mt bin mi trng mi
l $_FILES[ten'] v d nhin n s i km vi 5 tham s c th trn.
V d: $_FILES[ten'][name'] //Ly ra tn gc ca file.
Vy ng vi c php upload trn ta s c:
move_uploaded_file($_FILES['img']['tmp_name'],"data/".$_FILES['img']['name']);
C php ny s t ng upload hnh nh ln th mc data trn h thng. Vy ta cn phi to th mc
data ngang cp vi 2 file upload v doupload. Nu l host tht, bn cn CHMOD th mc l 777
(cho php th mc c ton quyn) th mi thc thi upload file c.
Trong tnh hung ca chng ta, v l upload mt lc nhiu file, nn lc ny ta phi s dng tham s
mng ti trang upload ta khi to.
Vy ng vi bin $num ta nhn t upload trn ta s trin khai code n gin nh sau:
view source
print?
1 <?php
2 for($i=0; $i< $num; $i++)

3
{
4 move_uploaded_file($_FILES['img']['tmp_name'][$i],"data/".$_FILES['img']['name'][$i]);
5 $url="data/".$_FILES['img']['name'][$i];
6 $name=$_FILES['img']['name'][$i];
7}
8 ?>
Vi bin $i l s lng tng ln theo vng lp. V mng lun bt u bi kha l 0 nn ta cn phi
thit lp khi to bin $i vi gi tr l 0. Bin $url v $name l ng dn hnh nh v tn gc ca
tm hnh c s dng lu vo CSDL.
K ti, ta cn lu thng tin hnh nh tng ng vo c s d liu. lm c iu ny, ta cn kt
ni CSDL vi c php sau: (xem li bi 10: kt hp php & mysql trong ng dng website).
view source
print?
1 <?php
2 $conn=mysql_connect("localhost","root","root") or die("can't connect your database");
3 mysql_select_db("images",$conn);
4 ?>
Nh vy mi khi upload thnh cng mt hnh nh, ta phi thm hnh nh vo CSDL nh sau:
view source
print?
1 <?php
2 $sql="insert into images(img_url,img_name) values('$url','$name')";
3 mysql_query($sql);
4 ?>
Sau khi thm vo CSDL ta cn hin th thng tin v hnh nh va upload cho ngi dng bit h
upload thnh cng.
Khi ta s dng mt bin $site lu ng dn gc hin th trn textbox.

Vy hon chnh code cho file doupload.php ny nh sau:


view source
print?
01 <?php
02 $site="http://www.qhonline.info";
03 if(isset($_POST['ok_upload']))
04 {
05 $num=$_GET['file'];
06 echo "<h3>Demo Images Script - Copyright by QHOnline.Info</h3>";
07 $conn=mysql_connect("localhost","root","root") or die("can't connect your database");
08 mysql_select_db("images",$conn);
09 for($i=0; $i< $num; $i++)
10 {
11 move_uploaded_file($_FILES['img']['tmp_name'][$i],"data/".$_FILES['img']['name'][$i]);
12 $url="data/".$_FILES['img']['name'][$i];
13 $name=$_FILES['img']['name'][$i];
14 $sql="insert into images(img_url,img_name) values('$url','$name')";
15 mysql_query($sql);
16 echo "Upload Thanh cong file <b>$name</b><br />";
17 echo "<img src='$url' width='120' /><br />";
18 echo "Images URL: <input type='text' name='link' value='$site/$url' size='35' /><br />";
19
20 }

21
22
23
24
25
26
27

mysql_close($conn);
}
else
{
echo "Vui long chon hinh truoc khi truy cap vao trang nay";
}
?>

Download ton b m ngun ca bi ny ti y.


Mi s gp , cng nh thc mc ca cc bn dnh cho bi vit vui lng s dng tnh nng tho lun
ti din n. Hoc thng qua vic lin h ca h thng website. Mong s nhn c nhiu kin
ng gp t cc bn.
Bi 19: Vit ng dng to gi hng - shopping cart - phn 1
nhng bi trc, chng ta cp ti cc ng dng c bn, gn gi vi
mi trng lm vic ca chng ta. Trong bi ny, ti s tip tc hng dn
cc bn xy dng h thng gi hng (shopping cart) mt ng dng ph bin
rt thng gp trn cc website cung cp sn phm hin nay. N gn nh
c thay th cho vic mua sm, vic la chn th cng m chng ta vn
thng lm.
Do ni dung v kin thc ca bi ny kh di, nn ti s trnh by bi vit ny 2 phn, gip cc
bn d theo di v d nm bt cc kin thc m ti cp v ng dng.
Phn 1: Xy dng trang hin th sn phm.
u tin, ta khi to bng CSDL n gin nh sau (xem li bi 9: c bn v ngn ng sql v mysql)
view source
print?
1 CREATE TABLE `books` (
2 `id` int(10) unsigned NOT NULL auto_increment,
3 `title` varchar(255) NOT NULL,
4 `author` varchar(100) NOT NULL,
5 `price` int(30) NOT NULL,
6 PRIMARY KEY (`id`)
7 );
trn l mt bng lu thng tin ca cc quyn sch vi tn, tc gi, gi tin ca cc quyn sch.
view source
print?
1 INSERT INTO `books` VALUES (1, 'PHP Can Ban', 'Kenny', 115);
2 INSERT INTO `books` VALUES (2, 'PHP Nang Cao', 'Kenny', 150);
3 INSERT INTO `books` VALUES (3, 'PHP Framework', 'Kenny', 300);
4 INSERT INTO `books` VALUES (4, 'Joomla Can Ban', 'Kenny', 100);
Tip tc ta to file style.css trnh by d liu p mt

view source
print?
01 body{
02 font:12px verdana;
03 }
04 .pro{
05 border:1px solid #999999;
06 margin:5px;
07 padding:5px;
08 width:400px;
09 }
10 a{
11 color:#666666;
12 text-decoration:none;
13 font-weight:900;
14 }
15 #cart{
16 border:1px solid #999999;
17 margin:5px;
18 padding:5px;
19 width:400px;
20 text-align:center;
21 }
Sau khi hon tt vic chun b c s d liu v giao din, tip theo ta s xy dng trang hin th
cc mn hng trn website, cho php ngi s dng la chn sch khi truy cp.
lit k danh sch cc quyn sch ang c trong database, ta cn kt ni CSDL vi thao tc code
nh sau. (xem li bi 10: kt hp php & mysql trong ng dng website).
view source
print?
1 <?php
2 $conn=mysql_connect("localhost","root","root") or die("can't connect your database");
3 mysql_select_db("images",$conn);
4 ?>
Lc ny, ta c th lit k cc quyn sch bng c php sau:
view source
print?
1 <?php
2 $connect=mysql_connect("localhost","root","root")
3 or die("Can not connect database");
4 mysql_select_db("shop",$connect);
5 ?>

Lc ny, ta c th lit k cc quyn sch bng c php sau:


view source
print?
01 <?php
02 $sql="select * from books order by id desc";
03 $query=mysql_query($sql);
04 if(mysql_num_rows($query) > 0)
05 {
06 while($row=mysql_fetch_array($query))
07 {
08 echo "<div class=pro>";
09 echo "<h3>$row[title]</h3>";
10 echo "Tac Gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br />";
11 echo "<p align=right><a href=addcart.php?item=$row[id]>Mua Sach Nay</a></p>";
12 echo "</div>";
13 }
14 }
15 ?>
on code trn thc thi vic hin th sch nu trong CSDL t nht 1 record. V chng s lit k
tiu sch, tc gi, gi tin. y, ti s dng number_format() ly ra 3 s 000 cui, ng vi
n v tin t ca Vit Nam l VN.
Sau cng ti to mt lin kt cho php thm quyn sch vo gi hng nu ngi mua cm thy
ng . (addcart.php s l trang thm vo gi hng vi tham s l m ca quyn sch).

Ni n ng dng shopping cart th hin nay, trn th trng tn ti nhiu phng php code. C th
s dng chui lu gi hng, cng c th lu vo CSDL nhp gi hng ca ngi dng v cng c
th s dng mng v session lu thng tin gi hng. Trong khun kh bi vit ny, ti s s dng
session v mng lu thng tin gi hng. (xem li Bi 7: Khi nim c bn v Cookie v session
trong PHP)

Ti trang addcart.php ti cn khi to mt session v lu m quyn sch vo mt mng. C th l:


$_SESSION[cart'][$id] (xem li bi 6: tng quan v mng v cc hm h tr). Vi $id l m quyn
sch m ngi dng chn trang xem hng ha (index.php). Mc ch chnh ca trang addcart
ny l lu tr hoc tnh ton li s lng sn phm khi m h la chn. (lu l s lng cc mn
hng).
Mt vn t ra trong trang ny, l lm th no nhn bit mn hng ngi chn hay cha.
Chng hn. Ln u ti chn mua quyn A, sau ti quay li chn mua tip quyn A. vy trong
gi hng phi ghi nhn s lng quyn A ny l 2. Ch khng th ch lu l 1 c.
Vy, lc ny ta s kim tra xem. Quyn sch m ta va chn c tn ti trong gi hng hay cha. Nu
c, ta phi tin hng ly s lng ang c tng ln 1 n v. Cn nu khng, ta phi gn s lng
ca chng l 1.
Code x l hon chnh trang addcart ny s nh sau:
view source
print?
01 <?php
02 session_start();
03 session_register("cart");
04 $id=$_GET['item'];
05 if(isset($_SESSION['cart'][$id]))
06 {
07 $qty = $_SESSION['cart'][$id] + 1;
08 }
09 else
10 {
11 $qty=1;
12 }
13 $_SESSION['cart'][$id]=$qty;
14 header("location:cart.php");
15 exit();
16 ?>
Nm na, chng ta c th hiu addcart ch n gin l x l s lng hng ha v lu chng dng
mng m thi.
Nh vy ti trang mua sch, ta cng cn cho khch hng bit rng trong gi hng ca h hin ang
c bao nhiu mn hng. Hoc nu cha c mn no, ta cng phi bo cho h bit v vic .
Vy khi no th gi hng rng ?. l khi session ca gi hng khng tn ti Id ca quyn sch no.
C th, $_SESSION[cart'][id]. Khi id khng tn ti trong session ny th cng l lc gi hng
khng tn ti.
Vy trc khi cho hin th gi hng, ta cn kim tra xem c tn ti id no trong gi hng hay khng.
V v id lu dng mng a chiu, nn ta cn dng vng lp duyt mng foreach.
foreach($_SESSION[cart'] as $k=>$v)

Vi $k c ngha tng ng $id quyn sch v $v tng ng l s lng ca quyn sch trong
gi hng. Vy nu tn ti bin $k, th tc c ngha l trong gi hng c sch. Khi ta s dng mt
bin bo hiu rng sch c tn ti trong gi hng hay khng.
view source
print?
01 <?php
02 if(isset($_SESSION['cart']))
03 {
04 foreach($_SESSION['cart'] as $k=>$v)
05 {
06 if(isset($k))
07 {
08 $ok=2;
09 }
10 }
11 }
12 if ($ok != 2)
13 {
14 echo '<p>Ban khong co mon hang nao trong gio hang</p>';
15 } else {
16 $items = $_SESSION['cart'];
17 echo '<p>Ban dang co <a href="cart.php">'.count($items).' mon hang trong gio hang</a></p>';
18 }
19 ?>
Trong on code trn ta s dng hm count nhm m xem trong mng hin ti (gi hng) hin
ang c bao nhiu quyn sch. V thc thi vic bo cho ngi dng bit h ang c bao nhiu
quyn sch trong gi hng.
Ton b code x l ca trang mua sch (index.php) ny nh sau:
view source
print?
01 <?php
02 session_start();
03 ?>
04 <html>
05 <head>
06 <title>Demo Shopping Cart - Created By My Kenny</title>
07 <link rel="stylesheet" href="style.css" />
08 </head>
09 <body>
10 <h1>Demo Shopping Cart</h1>
11 <div id=cart>
12 <?
13 if(isset($_SESSION['cart']))
14 {

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

foreach($_SESSION['cart'] as $k=>$v)
{
if(isset($v))
{
$ok=2;
}
}
}
if ($ok != 2)
{
echo '<p>Ban khong co mon hang nao trong gio hang</p>';
} else {
$items = $_SESSION['cart'];
echo '<p>Ban dang co <a href="cart.php">'.count($items).' mon hang trong gio hang</a></p>';
}
?>
</div>
<?
$connect=mysql_connect("localhost","root","root")
or die("Can not connect database");
mysql_select_db("shop",$connect);
$sql="select * from books order by id desc";
$query=mysql_query($sql);
if(mysql_num_rows($query) > 0)
{
while($row=mysql_fetch_array($query))
{
echo "<div class=pro>";
echo "<h3>$row[title]</h3>";
echo "Tac Gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br />";
echo "<p align=right><a href=addcart.php?item=$row[id]>Mua Sach Nay</a></p>";
echo "</div>";
}
}
?>
</body>
</html>

Nh vy, trong bi ny chng ta hon tt trang xem sch v trang x l vic thm sn phm mi
vo gi hng nh th no. Mi cc bn c tip bi sau vi tnh nng qun l, sa, xa tng mn
hng hoc c gi hng trong h thng.
Xem tip Bi 20: Vit ng dng to gi hng - shopping cart - phn 2
Bi 20: Vit ng dng to gi hng - shopping cart - phn 2

phn 1 ti trnh by phn hin th thng tin sch c trong c s d liu,


chu trnh thc thi ca vic thm mt quyn sch vo gi hng. V c ch
qun l gi hng ca chng ta nh th no. Tip tc vi phn 2, ti s trnh
by cch qun l gi hng nh chnh sa mn hng, lit k hng ha trong
gi hng v xa b tng mn hng hay c gi hng nh th no. c th
hiu c phn 2. Cc bn vui lng xem li bi 19: Vit ng dng to gi
hng shopping cart phn 1.
Phn 2: Xy dng h thng qun l gi hng.
Sau khi thm mt mn hng, ti gi hng ta cng cn phi x l hin th cc mn hng c
trong gi. V nh phng php phn 1, chng ta tm lu m sch trong session. (xem li Bi 7:
Khi nim c bn v Cookie v session trong PHP) . Vy trang gi hng ny, ta s khi to
session v s dng vng lp duyt mng foreach lp ton b m sch ang lu trong session.
Tip tc, ta li chuyn chng sang dng chui bng hm implode().
view source
print?
1 <?php
2 Session_start();
3 Foreach($_SESSION['cart'] as $key=>$value)
4{
5 $item[]=$key;
6}
7 $str=implode(",",$item);
8 ?>
Gi s lc ny chui ca chng ta s c dng 7,8,9. Cng vic tip theo l kt ni CSDL lit k
cc sn phm c m nh trn. (xem li bi 10: kt hp php & mysql trong ng dng website).
Thay v s dng select * from tn_bng where id= ??. Th ti u hn, ti s s dng php in
trong SQL. Lc ny cu truy vn s tng ng:
view source
print?
1 <?php
2 $sql="select * from books where id in ('$str') order by id desc";
3 $query=mysql_query($sql);
4 while($row=mysql_fetch_array($query))
5 ?>
Tip tc, ta lp ton b thng tin sch bao gm tn, tc gi, gi tin v c s lng m ta lu
trong session l $_SESSION['cart'][ 'ID_Mn_Hng']. ID_Mn_hng chnh l thng tin ta lp ra t
CSDL ($row[id]).
Bn cnh ti phn s lng, ta s a gi tr lu session ra textbox (v ti gi hng, ngi dng
c php iu chnh s lng, nn lc ny ta cn to textbox cho h iu chnh). V lp ton b cc
quyn sch nn ti tn tn ca textbox s lng ta cng cn truyn id nhn bit s lng thuc
ID ca quyn sch no.
view source

print?
1 <?php
echo "<p align=right>So Luong: <input type=text name=qty[$row[id]] size=5
2
value={$_SESSION['cart'][$row[id]]}> - ";
3 ?>
Chng ta cng cho ngi dng c php xa 1 mn hng no ra khi gi hng ca h. Bng
cch truyn m quyn sch ca tng quyn vo lin kt delcart.php.
view source
print?
1 <?php
2 echo "<a href=delcart.php?productid=$row[id]>Xoa Sach Nay</a></p>";
3 ?>
Ti y, ta cng cn tnh lun gi tin ca tng quyn sch tng ng vi s lng m h chn.
Nh vy, s lng l phn ta lu session, cn gi tin l phn ta ly ra t CSDL ng vi mng
$row ($row['price']).
view source
print?
1 <?php
echo "<p align=right> Gia tien cho mon hang: ". number_format($_SESSION['cart']
2
[$row[id]]*$row[price],3) ." VND</p>";
3 ?>
Sau cng, ta cn tnh tng tin ca ton b sn phm c trong gi hng. Bng cch cng dn tng
gi tin ca tng mn.
view source
print?
1 <?php
2 $total+=$_SESSION['cart'][$row[id]]*$row[price];
3 ?>
Phn cn li, l chng ta hin th gi tin vi ng nh dng VND ca Vit Nam.
view source
print?
1 <?php
echo "<b>Tong tien cho cac mon hang: <font color=red>". number_format($total,3)."
2
VND</font></b>";
3 ?>
ng thi, ta cng to nt cho php ngi dng cp nht. V cho php ngi dng xa ton b gi
hng.
view source
print?
1 <?php
2 echo "<input type="submit" name=submit value="Cap Nhat Gio Hang">";
3 echo "<div class=pro align=center>";

echo "<b><a href=index.php>Mua Sach Tiep</a> - <a href=delcart.php?productid=0>Xoa Bo Gio


Hang</a></b>";
5 ?>
Nh vy, code y s l:
view source
4

print?
01 <?php
02 echo "<form action=cart.php method=post>";
03 foreach($_SESSION['cart'] as $key=>$value)
04 {
05 $item[]=$key;
06 }
07 $str=implode(",",$item);
08 $connect=mysql_connect("localhost","root","root") or die("Can not connect database");
09 mysql_select_db("shop",$connect);
10 $sql="select * from books where id in ($str)";
11 $query=mysql_query($sql);
12 while($row=mysql_fetch_array($query))
13 {
14 echo "<div class=pro>";
15 echo "<h3>$row[title]</h3>";
16 echo "Tac gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br />";
echo "<p align=right>So Luong: <input type=text name=qty[$row[id]] size=5
17
value={$_SESSION['cart'][$row[id]]}> - ";
18 echo "<a href=delcart.php?productid=$row[id]>Xoa Sach Nay</a></p>";
echo "<p align=right> Gia tien cho mon hang: ". number_format($_SESSION['cart']
19
[$row[id]]*$row[price],3) ." VND</p>";
20 echo "</div>";
21 $total+=$_SESSION['cart'][$row[id]]*$row[price];
22 }
23 echo "<div class=pro align=right>";
echo "<b>Tong tien cho cac mon hang: <font color=red>". number_format($total,3)."
24
VND</font></b>";
25 echo "</div>";
26 echo "<input type="submit" name=submit value="Cap Nhat Gio Hang">";
27 echo "<div class=pro align=center>";
echo "<b><a href=index.php>Mua Sach Tiep</a> - <a href=delcart.php?productid=0>Xoa Bo
28
Gio Hang</a></b>";
29 echo "</div>";
30 ?>
Sau khi thit lp thnh cng trang gi hng c bn, lc ny ta c th thm sch mt cch d dng.
Tuy nhin, gi s trong trng hp khng c sch th sao ?. Chng ta vn cha xt n trng hp
gi hng rng th s nh th no. Vy khi no th gi hng rng ?. l khi session ca gi hng
khng tn ti Id ca quyn sch no. C th, $_SESSION[cart'][id]. Khi id khng tn ti trong
session ny th cng l lc gi hng khng tn ti.

Vy trc khi cho hin th gi hng, ta cn kim tra xem c tn ti id no trong gi hng hay khng.
V v id lu dng mng a chiu, nn ta cn dng vng lp duyt mng foreach.
foreach($_SESSION[cart] as $k=>$v)
Vi $k c ngha tng ng $id quyn sch v $v tng ng l s lng ca quyn sch trong
gi hng. Vy nu tn ti bin $k, th tc c ngha l trong gi hng c sch.
view source
print?
01 <?php
02 $ok=1;
03 if(isset($_SESSION['cart']))
04 {
05 foreach($_SESSION['cart'] as $k => $v)
06 {
07 if(isset($k))
08 {
09 $ok=2;
10 }
11 }
12 }
13 if($ok == 2)
14 {

15 // code x l gi hng trn.


16 }
17 ?>
on code ny, ta s dng bin $ok lm bin kim tra, mc nh khi load d liu bin $ok s
bng 1. V khi trong gi hng tn ti sch th chng ta s thay i bin $ok thnh 2. V gi gi hng
nh code trn.
phn trn, ta cng c cp khi ngi dng tin hnh chnh sa s lng tng mn hng n l
qua textbox v nhn cp nhn th h thng s tin hnh chnh sa li thng tin gi hng. Vy chng
ta s x l nh th no cho trng hp .
Nu ch , cc bn s thy dng code cha textbox cho php ngi dng nhp s lng c mt
tham s c bit l name=qty[$row[id]]. Vy tham s ny c dng lm g ?.
Tham s ny, ni cho chng ta bit s lng ang hin th l thuc m sn phm no. Vy khi tin
hnh cp nht gi hng ta s kim tra, nu $qty[$row[id]] m c gi tr l 0. Tc l ngi mun
xa b gi hng. Ngc li, ta ch vic cp nht gi hng $id tng ng vi s lng nhp
textbox.
view source
print?
01 <?php
02 if(isset($_POST['submit']))
03 {
04 foreach($_POST['qty'] as $key=>$value)
05 {
06 if( ($value == 0) and (is_numeric($value)))
07 {
08 unset ($_SESSION['cart'][$key]);
09 }
10 elseif(($value > 0) and (is_numeric($value)))
11 {
12 $_SESSION['cart'][$key]=$value;
13 }
14 }
15 header("location:cart.php");
16 }
17 ?>
Vic xa mn hng trn ch n gin l hy b session ca id . Vic cp nht s lng ch n
gin l gn s lng ngi nhp (th value trong textbox) vo s lng ang lu trong session.
Vy code hon chnh ca trang cart.php ny s nh sau:
view source
print?
01 <?php
02 if(isset($_POST['submit']))
03 {

04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

foreach($_POST['qty'] as $key=>$value)
{
if( ($value == 0) and (is_numeric($value)))
{
unset ($_SESSION['cart'][$key]);
}
elseif(($value > 0) and (is_numeric($value)))
{
$_SESSION['cart'][$key]=$value;
}
}
header("location:cart.php");
}
?>
<html>
<head>
<title>Demo Shopping Cart - Created By My Kenny</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h1>Demo Shopping Cart</h1>
<?
$ok=1;
if(isset($_SESSION['cart']))
{
foreach($_SESSION['cart'] as $k => $v)
{
if(isset($k))
{
$ok=2;
}
}
}
if($ok == 2)
{
echo "<form action=cart.php method=post>";
foreach($_SESSION['cart'] as $key=>$value)
{
$item[]=$key;
}
$str=implode(",",$item);
$connect=mysql_connect("localhost","root","root") or die("Can not connect database");
mysql_select_db("shop",$connect);
session_start();
$sql="select * from books where id in ($str)";

50
51
52
53
54
55

$query=mysql_query($sql);
while($row=mysql_fetch_array($query))
{
echo "<div class=pro>";
echo "<h3>$row[title]</h3>";
echo "Tac gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br />";
echo "<p align=right>So Luong: <input type=text name=qty[$row[id]] size=5
56
value={$_SESSION['cart'][$row[id]]}> - ";
57 echo "<a href=delcart.php?productid=$row[id]>Xoa Sach Nay</a></p>";
echo "<p align=right> Gia tien cho mon hang: ". number_format($_SESSION['cart']
58
[$row[id]]*$row[price],3) ." VND</p>";
59 echo "</div>";
60 $total+=$_SESSION['cart'][$row[id]]*$row[price];
61 }
62 echo "<div class=pro align=right>";
echo "<b>Tong tien cho cac mon hang: <font color=red>". number_format($total,3)."
63
VND</font></b>";
64 echo "</div>";
65 echo "<input type="submit" name=submit value="Cap Nhat Gio Hang">";
66 echo "<div class=pro align=center>";
echo "<b><a href=index.php>Mua Sach Tiep</a> - <a href=delcart.php?productid=0>Xoa Bo
67
Gio Hang</a></b>";
68 echo "</div>";
69 }
70 else
71 {
72 echo "<div class=pro>";
echo '<p align=center>Ban khong co mon hang nao trong gio hang<br /><a
73
href=index.php>Buy Ebook</a></p>';
74 echo "</div>";
75 }
76 ?>
77 </body>
78 </html>
V cui cng, khi ngi dng nhn xa ton b gi hng hay ch xa mt mn hng, ta s gi ti
trang delcart.php. Vy trang ny s x l nh th no ?.
Ti y, ta c th nhn tham s l: $_GET[productid'];
Tham s ny s l $id m chng truyn qua lin kt. Nu xa ton b gi hng, tc ta s truyn cho
n gi tr bng 0. Lc ny, ta s hy ton b $_SESSION[cart']. Ngc li, nu l mt $id c th,
th ta ch xa mn hng m thi. $_SESSION[cart'][$id].
Code hon chnh ca file delcart.php nh sau:
view source
print?
01 <?php

02
03
04
05
06
07
08
09
10
11
12
13
14
15

session_start();
$cart=$_SESSION['cart'];
$id=$_GET['productid'];
if($id == 0)
{
unset($_SESSION['cart']);
}
else
{
unset($_SESSION['cart'][$id]);
}
header("location:cart.php");
exit();
?>

Download ton b m ngun ca bi ny ti y.


Nh vy, chng ta hon tt vic xy dng hon chnh mt h thng shopping cart n gin. Tuy
rng, y khng phi l mt bi vit hon chnh trong vic xy dng m hnh thng mi in t.
Nhng qu , phn no gip cc bn hiu v d dng pht trin h thng ca mnh c t chc hn.
Hy vng trong thi gian ti, ti s vit tip bi vit s dng m hnh thanh ton trc tuyn (paypal)
kt hp vi gi hng hon chnh bi hng dn v shopping cart ny. Mi s gp , cng nh
thc mc ca cc bn dnh cho bi vit vui lng s dng tnh nng tho lun ti din n. Hoc
thng qua vic tr li vi khung phn hi bn di. Mong s nhn c nhiu kin ng gp t
cc bn.

You might also like