Professional Documents
Culture Documents
Gii thiu
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.
2.
3.
4.
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.
}
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:
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:
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:
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:
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
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.
<?
job
=>
"Teacher",
age=>"45",
=>
<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.
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:
$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.
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 />
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
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.
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.
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]
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.
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.
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.
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.
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>
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.
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)
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>
Tng kt:
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 .
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.
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.
1
2
3
4
<?php
$sql="insert into useronline(tgtmp,ip,local) values('$tg','$REMOTE_ADDR','$PHP_SELF')";
$query=mysql_query($sql);
?>
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.
Phn vic cui cng cn li l chng ta s xut thng tin y ra trnh duyt.
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.
1 Cu hi c nhiu cu tr li.
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 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.
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.
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%
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>";
}
}
}
?>
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).
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.
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,
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).
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.
21
22
23
24
25
26
27
mysql_close($conn);
}
else
{
echo "Vui long chon hinh truoc khi truy cap vao trang nay";
}
?>
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 ?>
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)
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
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>";
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 {
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();
?>