Вы находитесь на странице: 1из 413

Tng Hp Mi Th V PHP ( TEST )

Mc Lc
Chapter 1 : Gii Thiu PHP Chapter 2 : Bt u Vi PHP Chapter 3 : Ci t PHP Chapter 4 : C Php PHP Chapter 5 : Bin PHP Chapter 6 : Chui Bin PHP Chapter 7 : Ton T PHP Chapter 8 : Cu lnh if else trong PHP . Chapter 9 : Cu lnh Switch trong PHP Chapter 10 : Arrays ( Mng ) Chapter 11 : Looping While Loops Chapter 12 : Looping For Loops Chapter 13 : Functions ( Hm Chc Nng ) Chapter 14 : PHP Forms and User Input Chapter 15 : PHP $_GET Variable Chapter 16 : PHP $_POST Function Chapter 17 : Date() Function Chapter 18 : File Handing Chapter 19 : File Upload Chapter 20 : PHP Cookies Chapter 21 : PHP Sessions Chapter 22 : Sending Emails Chapter 23 : Secure E-mails Chapter 24 : Error Handing Chapter 25 : Exception Handing Chapter 26 : PHP Filter Chapter 27 : PHP MySQL Chapter 28 : PHP XML Expat Parser Chapter 29 : Gii thiu AJAX Chapter Ngoi : Bi Tp -Bi 11: Vit ng dng ng nhp bng PHP v MYSQL -Bi 12: Vit ng dng thm thnh vin bng PHP v MYSQL -Bi 13: Vit ng dng qun l thnh vin bng PHP v MYSQL -Bi 14: vit ng dng sa xa thnh vin bng PHP v MYSQL -Bi 15: Vit ng dng to m xc nhn bng PHP -Bi 16: Vit ng dng m s ngi online bng php

Page 1 of 413

-Bi 17: Xy dng h thng bnh chn bng PHP v MYSQL -Bi 18: Xy dng ng dng to trang upload nhiu hnh nh -Bi 19: Vit ng dng to gi hng - shopping cart - phn 1 -Bi 20: Vit ng dng to gi hng - shopping cart - phn 2 Chapter 30 : Cc hm Chapter 31 : Linh Tinh Cc Th Bn Ngoi Tng Hp c +Code style theo chun Zend -Nhng iu cn bit v PHP 5.4 -Cc hm rt hu ch trong PHP bn cn bit ! -iu g khin bn l 1 coder ti ? -Cc li c bn trong lp trnh PHP -Code gi mail trong PHP -T lm menu 2 cp n gin vi php v javascript -T lm im sng vi javascript -Gii thiu - Ci t Smarty -Smarty c bn [ Phn 1 ] -Smarty c bn [ Phn 2 ] -K thut s dng lazy loading trong hng i tng -Regular Expressions -Gii thiu Regular Expression Nng cao - quy vi menu khng gii hn s cp (N cp) -Upload file trong php -Class support Mutil Language cho c bn v nng cao v cho c cc framework khc!!!! -Hng dn CSS Framework 960 cho mi ngi -Nhp d liu t file excel s dng cng ngh XML... -M hnh VMC auto load Controller v model -Th Thut Tng Tc PHP -Code phn trang theo kiu Google -Phn trang c bn, c phn on khng OOP -Hng dn s dng jquery ajax lng nhau trong ng dng -Code phn trang bng Ajax n gin -S dng JqGrid PHP -K thut seo website -Phn trang n gin vi Jquery -Performance Tips trong PHP - Part 1 -Nhng lp v phng thc tru tng trong PHP 5. -M hnh Multi Modules , Multi Templates v Multi Database -Tm hiu th vin Php_filter -Vit Class Database c chng SQL Injection -Cch ly rss v tin tc T VnExPress -Cch dng hm ereg, preg trong php -Khi dng ajax khi nhn enter s t ng gi hm ging khi dng form -[TUT] Add d liu t form vo database hin th ting vit c du. -Tn mn v ECHO -Code xem th mc con . -STRING trong PHP [PART1]

Page 2 of 413

-STRING trong PHP [PART2] -STRING trong PHP [PART3] -STRING trong PHP [PART4] -Mng trong PHP [Part1] -Mng trong PHP [Part2] -Hng dn code trang news c bn -HNG DN CODE TRANG BN SCH -Hng dn chi tit code trang bn sch

About Author of this book


Author : Siverdragon12
- V l do ngu hng v trong lc hc lp trnh php nn mun vit li quyn sch ny dnh cho ngi mi nhp mn hoc a phn cc bn khng bit ting anh v 1 tng lai ai cng gii CNTT nh khng c ngha ai khng bit ting anh th khng th lp trnh . - Have A Nice Day , everybody !!! Ch : Sch Cha c hon thin . ang c b sung v chnh sa nhiu th gip sch ngy mt hon thin hn v vy sch hin ang l bn test , s sm public bn hon thin v thm nhiu chapter mi , bi tp mi , training mi cho cc bn v thm phn nng cao PHP gip cc bn hiu hn v lp trnh tt hn vi PHP . Share To Be Shared . Cm n .

Chapter 1 : Gii Thiu PHP


PHP l mt ngn ng kch bn my ch, v l mt cng c mnh lm cho cc trang Web ng v tng tc. PHP l mt thay th c s dng rng ri, min ph, v hiu qu vi cc i th cnh tranh nh ASP ca Microsoft. "Show PHP" cng c ca chng ti lm cho n d dng tm hiu PHP, n cho thy c m ngun PHP v u ra ca m HTML.

V D 1 on Code PHP n gin kt hp HTML

Page 3 of 413

<!DOCTYPE html> <html> <body> <?php echo "My first PHP script!"; ?> </body> </html>

Phn m l ngn ng PHP , cn li l HTML

Chapter 2 : Bt u vi PHP
Nhng g bn nn bit !!! Trc khi tip tc, bn cn phi c mt s hiu bit c bn sau y: -HTML -Javascript Nu bn mun nghin cu cc i tng ny ln u tin, tm thy cc hng dn trn trang ny . http://w3schools.com/ PHP l g? -PHP l vit tt ca PHP: Hypertext Preprocessor -PHP l mt ngn ng s dng rng ri , l mt m ngun m -PHP c thc hin trn my ch ( vd : Linux ) -PHP hon ton min ph download v s dng PHP l ngn ng n gin nht cho ngi mi bt u hc lp trnh PHP cng cung cp nhiu tnh nng tin tin cho cc lp trnh vin chuyn nghip. File PHP l g? -PHP tp tin c th cha vn bn, HTML, JavaScript m, v m PHP -M PHP c thc hin trn my ch, v kt qu c tr v cho trnh duyt nh

Page 4 of 413

HTML -PHP tp tin c phn m rng tp tin mc nh ca ". Php" PHP c th lm g? -PHP c th to ra ni dung trang nng ng -PHP c th to ra, m, c, vit, v cc tp tin trn my ch gn -PHP c th thu thp d liu mu -PHP c th gi v nhn cookie -PHP c th thm, xa, sa i d liu trong c s d liu ca bn -PHP c th hn ch ngi dng truy cp mt s trang trn trang web ca bn -PHP c th m ha d liu Vi PHP, bn khng gii hn u ra HTML. Bn c th xut hnh nh, tp tin PDF, v thm ch c phim Flash. Bn cng c th sn xut bt k vn bn, chng hn nh XHTML v XML. Ti sao PHP? - PHP chy trn cc nn tng khc nhau (Windows, Linux, Unix, Mac OS X, vv) - PHP l tng thch vi hu nh tt c cc my ch c s dng hin nay (Apache, IIS, vv) - PHP h tr cho mt lot cc c s d liu - PHP l min ph. Ti v n t ngun PHP chnh thc: www.php.net - PHP l d dng tm hiu v chy hiu qu pha my ch

Chapter 3 : Ci t PHP
Nhng g bn cn c !
+ Tm 1 Hosting ( chy php , ci ny p dng cho ai mun thu host b tin mnh khuyn nn chy localhost ) + Bn c th dng cc chng trnh h tr chy localhost trn google , c rt nhiu v bn c th ty chn nu thch i vi vic Chn Hosting - Bn nn chn hosting no h tr tt v t vn khch hng ( v l yu t cn thit ) - Bn nn chn hosting no c tc load nhanh , h tr ng truyn tt v khng b cm cc hm ( Function ) to iu kin tt nht cho vic hc PHP Page 5 of 413

Cc chng trnh chy Localhost u phi c cc iu sau y - C h thng Apache - MySQL - PHP l nhng yu cu c bn ca 1 server ( my ch )

Chapter 4 : C Php PHP


Mt s c php n gin
Tt c cc m lnh php u bt u vi <?php v kt thc vi ?> . M lnh ca PHP c th t bt c u trong file . 1 s my ch khc bn cng c th bt u vi <? V kt thc vi ?> i vi kh nng tng thch ti a, chng ti khuyn bn nn s dng cc hnh thc tiu chun (<? Php) ch khng phi l hnh thc vit tt.

V D
<?php M lnh php s y ?> Phn m rng tp tin mc nh cho cc tp tin PHP l ".php" Mt file PHP thng thng c cha cc th HTML, v mt s m kch bn PHP. Di y, chng ti c mt v d ca mt kch bn PHP n gin m s gi vn bn "Hello World!" cho trnh duyt: <?php echo Hello World!; ?>

Mi dng m trong PHP phi kt thc bng mt du chm phy. Du chm phy l mt du phn cch v c s dng phn bit mt b cc hng dn khc. C hai cu lnh c bn vn bn u ra vi PHP l : echo v print. Trong v d trn, chng ti s dng echo tuyn b sn xut cc vn bn "Hello World".

Ch Thch Trong PHP


Trong PHP , Chng ta s dng // ( Khng c du ngoc kp ) lm 1 dng lm ch thch , hoc /* v */ lm ch thch dng khi
Page 6 of 413

V d :

<!DOCTYPE html> <html> <body> <?php //y l ch thch 1 dng /* y l ch thch Nhiu Dng */ ?> </body> </html>

Chapter 5 : Bin PHP


Bn cn nh mn i S Trng Khng ?
Dng nh , x = 1 , y = 2 , z =3 Bn cn nh vi mi t ta c th gn 1 gi tr ( vd : x = 2 , y = 123 , z = 52 v.v ) v bn s dng my thng tin tnh 1 gi tr no ca d chng hn .

Tt c nhng ci trn c gi l Bin PHP , v bin c dng gi 1 gi tr nht nh (x=2) hoc l cc bi ton nh ( d = a+b+c ) trong a,b,c l cc hng s c gi tr bt k ( vd : a = 1 , b = 2 , c = 3 th d = a + b + c = 6 )

Bin PHP
Vi i s, cc bin PHP c s dng gi cc gi tr hoc biu thc. Mt bin c th c mt tn ngn, nh x, hoc mt ci tn di hn, nh h v tn chng ta vy. Quy tc cho tn bin PHP : -Cc bin trong PHP bt u vi mt k hiu $, tip theo l tn ca bin -Tn bin phi bt u vi mt k t hoc k t gch di -Mt tn bin ch c th cha cc k t ch-s v gch di (A-z, 0-9, v _) -Mt tn bin khng nn cha khng gian ( gi l khong cch vd : $a b bin ny l sai , $ba th ny mi ng ) -Tn bin l trng hp nhy cm v quan trng nn n phn bit c hoa v thng (y v Y l hai bin khc nhau)

Creating (Declaring) PHP Variables

Page 7 of 413

PHP khng c lnh khai bo mt bin. Mt bin c to ra thi im ln u tin bn ch nh mt gi tr cho n: ( lc mi bt u file php ) Vd v 1 bin y $siverdragon12=Hacker; Sau khi thc hin bin trn th bin siverdragon12 s gi gi tr l Hacker Mo : Nu bn to mt bin m khng bt k gi tr no th bn nn t gi tr l null Vd : $siverdragon12=null; No , by gi ta s to ra 1 bin c cha k t ( ch t a -> z ) v 1 bin c cha s ( 0 -> 9 )
<?php $txt="Hello World!"; $x=16; ?>

Ch : i vi ch ( k t ) th bn phi du ngoc kp nh trn , cn i vi s th khng cn .

PHP l mt ngn ng lng lo


Trong PHP, mt bin khng cn phi c khai bo trc khi thm mt gi tr cho n. Trong v d trn, nhn thy rng chng ti khng phi ni vi PHP kiu d liu bin. PHP s t ng chuyn bin cho ng kiu d liu, ty thuc vo gi tr ca n. Trong mt ngn ng lp trnh mnh m, bn phi khai bo (xc nh) cc loi v tn ca bin trc khi s dng n.

Phm Vi PHP
Phm vi ca mt bin l mt phn ca kch bn, trong bin c th c tham chiu.
Page 8 of 413

PHP c bn phm vi bin khc nhau: -local -global -static -parameter

Phm Vi Local
Mt bin khai bo trong mt hm PHP l a phng v ch c th c truy cp trong phm vi chc nng . (Bin c phm vi local): V d . <?php $a = 5; // phm vi local function myTest() { echo $a; // phm vi local } myTest(); ?>

Cc kch bn trn s khng sn xut bt k sn lng v echo tuyn b cp n bin phm vi a phng bin $a, m khng c ch nh mt gi tr trong phm vi ny.Bn c th c cc bin a phng c cng tn trong cc chc nng khc nhau, bi v cc bin a phng ch c cng nhn bi cc chc nng m chng c khai bo.Cc bin a phng s b xa ngay sau khi chc nng, nhim v c hon thnh.

Phm Vi Global
Phm vi ton cu cp n bt k bin c nh ngha bn ngoi ca bt k chc nng. Bin ton cu c th c truy cp t bt k mt phn ca kch bn khng phi l bn trong mt hm. truy cp vo mt bin ton cu t bn trong mt chc nng, s dng global t kha:

Page 9 of 413

V d : <?php $a = 5; $b = 10; function myTest() { global $a, $b; $b = $a + $b; } myTest(); echo $b; ?>

Kt qu on code trn l 15 ( sau khi chy )


PHP cng lu tr tt c cc bin ton cu trong mt mng gi l $ GLOBALS [ index ]. Ch s ca n l tn ca bin. Mng ny cng c th truy cp t bn trong chc nng v c th c s dng cp nht cc bin ton cu trc tip. V d trn c th c vit li nh th ny: <?php $a = 5; $b = 10; function myTest() { $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } myTest(); echo $b; ?>

Page 10 of 413

Phm Vi Static
Khi mt hm c hon thnh, tt c cc bin ca n thng b xa. Tuy nhin, i khi bn mun bin a phng khng b xa. lm iu ny, s dng cc t kha tnh khi ln u tin bn khai bo cc bin:

static $rememberMe;

Sau , mi khi hm c gi, bin vn s c nhng thng tin n c t thi gian qua cc chc nng c gi.

Lu : bin vn l local n chc nng.

Parameters
Mt tham s l mt bin a phng c gi tr c truyn cho hm m gi. Cc thng s c khai bo trong danh sch tham s nh l mt phn ca vic k khai hm functions:

Function myTest($para1,$para2,...) { // function code }


Cc thng s cn c gi l i s. Chng ti s tho lun chi tit hn khi chng ta ni v cc chc nng.

Chapter 6 : Chui Bin PHP


Chui bin c s dng s dng cho cc gi tr c cha k t . Trong chng trnh ny , chng ta s nhn vo chc nng ph bin nht v vn hnh c s dng thao tc cc chui bin trong PHP. Sau khi chng ti to ra mt chui , chng ta c th thao tc n . Mt chui c th c s dng trc tip trong mt hm hoc n c th c lu tr trong mt bin . Di y, cc tp lnh PHP gn vn bn "Hello World" vo mt chui bin gi l $ txt:

Page 11 of 413

<?php $txt="Hello World"; echo $txt; ?>

Khi thc thi code trn th s ra kt qu tr v l Hello World No , by gi chng ta th 1 s chc nng v cc chc nng khc nhau x l 1 chui
Ch c mt chui trong PHP. S dng du (.) c s dng t hai chui vi nhau. ni hai bin chui vi nhau, s dng ton t ni: <?php $txt1="Hello World!"; $txt2="What a nice day!"; echo $txt1 . " " . $txt2; ?> Kt qu tr v s l Hello World ! What a nice day! Nu chng ta nhn vo on m trn, bn thy rng chng ta s dng ton t ni hai ln. iu ny l bi v chng ti chn mt chui th ba (mt nhn vt khng gian), phn cch hai chui.

Hm strlen()
Hm strlen () c s dng tr li chiu di ca mt chui. Hy tm chiu di ca mt chui: <?php echo strlen("Hello world!"); ?> Kt qu tr v l 12 Chiu di ca mt chui thng c s dng trong vng lp hoc cc chc nng khc, iu quan trng l bit khi no kt thc chui. (tc l trong mt vng lp, chng ti mun ngng vng lp sau khi k t cui cng trong chui).

Hm strpos()
Hm strpos () c s dng tm kim mt nhn vt / vn bn trong mt chui. Nu kt hp c tm thy, chc nng ny s tr li vi v tr nhn vt ca trn u u Page 12 of 413

tin. Nu khng ph hp c tm thy, n s tr v FALSE. Hy xem nu chng ta c th tm thy chui "th gii" trong chui k t ca chng ti:

<?php echo strpos("Hello world!","world"); ?>

Kt qu tr v l 6 V tr t "world" trong v d trn l 6. L do m n l 6 (v khng phi 7), l v tr ca k t u tin trong chui l 0, v khng phi 1. Thng tin v 1 s chc nng ca cc hm khc ( c th l khng y nhng cng nn c qua cho bit ) http://w3schools.com/php/php_ref_string.asp

Chapter 7 : Ton T PHP


Ton T ( i s n gin ) Operators
The table below lists the arithmetic operators in PHP: Operator Name x+y Addition . Cng x-y Subtraction . Tr Multiplication. x*y Nhn x/y Division . Chia x%y -x a.b Modulus . Chia ly s d Description Sum of x and y Difference of x and y Product of x and y Quotient of x and y Remainder of x divided by y Example 2+2 5-2 5*2 15 / 5 5%2 10 % 8 10 % 2 -2 "Hi" . "Ha" Result 4 3 10 3 1 2 0 HiHa

Negation . s m Opposite of x Concatenation . Concatenate two strings Ghp k t

Page 13 of 413

Phn cng Operators


The basic assignment operator in PHP is "=". It means that the left operand gets set to the value of the expression on the right. That is, the value of "$x = 5" is 5. Assignment Same as... x=y x += y x -= y x *= y x /= y x %= y a .= b x=y x=x+y x=x-y x=x*y x=x/y x=x%y a=a.b Description The left operand gets set to the value of the expression on the right Addition Subtraction Multiplication Division Modulus Concatenate two strings

Tng dn/gim dn Operators


Operator Name Description ++ x Pre-increment Increments x by one, then returns x x ++ Post-increment Returns x, then increments x by one -- x Pre-decrement Decrements x by one, then returns x x -Post-decrement Returns x, then decrements x by one

Ton T So Snh
Comparison operators allows you to compare two values: Operator Name x == y Equal x === y x != y x <> y x !== y x>y x<y x >= y x <= y Identical Not equal Not equal Not identical Greater than Less than Greater than or equal to Less than or Description True if x is equal to y True if x is equal to y, and they are of same type True if x is not equal to y True if x is not equal to y True if x is not equal to y, or they are not of same type True if x is greater than y True if x is less than y True if x is greater than or equal to y True if x is less than or equal to Example 5==8 returns false 5==="5" returns false 5!=8 returns true 5<>8 returns true 5!=="5" returns true 5>8 returns false 5<8 returns true 5>=8 returns false 5<=8 returns true

Page 14 of 413

equal to

Logical Operators
Operator Name x and y And Example x=6 y=3 True if both x and y are true (x < 10 and y > 1) returns true x=6 True if either or both x and y are y=3 true (x==6 or y==5) returns true x=6 True if either x or y is true, but y=3 not both (x==6 xor y==3) returns false x=6 y=3 True if both x and y are true (x < 10 && y > 1) returns true x=6 True if either or both x and y are y=3 true (x==5 || y==5) returns false x=6 True if x is not true y=3 !(x==y) returns true Description

x or y

Or

x xor y

Xor

x && y

And

x || y

Or

!x

Not

Array Operators
Operator Name x+y Union x == y Equality x === y x != y x <> y x !== y Identity Inequality Inequality Non-identity Description Union of x and y True if x and y have the same key/value pairs True if x and y have the same key/value pairs in the same order and of the same types True if x is not equal to y True if x is not equal to y True if x is not identical to y

Page 15 of 413

Chapter 8 : Cu lnh If else trong PHP


Cu iu kin c s dng thc hin cc hnh ng khc nhau da trn cc iu kin khc nhau.

iu kin cu lnh ( c cho bit v suy ngh ) . N rt c dng thng xuyn khi bn vit code , bn mun thc hin mt hnh ng ( 1 cu lnh ) nhng vi nhng quyt nh khc nhau th cu lnh if else l s la chn ca bn
Bn c th s dng cu lnh iu kin trong m ca bn lm iu ny. - Trong PHP chng ti c bo co iu kin sau y . - Cu lnh if ( khng c else ) ci ny dng thc hin mt lnh ch khi iu kin quy nh l ng s tht - Cu lnh if else thc hin iu kin nu n iu kin l ng cn nu sai th s tr kt qu khc else - Cu lnh if elseif else dng thc hin nhiu khi m 1 lc trong nhiu khi m thc hin ( vd trn c mi 1 iu kin sai th tr v ci kia , cn ci ny nhiu trng hp i loi th ) - Cu lnh switch S dng cu lnh ny la chn mt trong nhiu on m s c thc hin .

Cu lnh IF
- S dng cu lnh if khi thc hin mt s m khi v ch khi iu kin qui nh ca n ng vi m c qui nh C php cu if : If ( iu kin ) s c thc hin nu iu kin ng .
V d sau y s a ra "Have a nice weekend!" nu ngy hin nay l th Su:

Page 16 of 413

<html> <body> <?php $d=date("D"); if ($d=="Fri") echo "Have a nice weekend!"; ?> </body> </html>

Ch rng on m trn khng c else . v vy m ny c thc thi khi n ch ng vi iu kin .

Cu lnh IF ELSE
S dng cu lnh if else thc hin on m nu iu kin n l ng hoc sai . C php :
if (iu kin) { M lnh s c thc hin nu iu kin ng; } else { M lnh s c thc hin nu iu kin sai; }

V d V d sau y s a ra "Have a nice weekend!" nu ngy hin nay l th Su, nu khng phi n s tr kt qu khc l "Have a nice day!"

Page 17 of 413

<html> <body> <?php $d=date("D"); if ($d=="Fri") { echo "Have a nice weekend!"; } else { echo "Have a nice day!"; } ?> </body> </html>

Cu lnh IF ELSEIF ELSE


S dng cu lnh if .... elseif ... else la chn mt trong nhiu khi m s c thc hin.

C php
if (iu kin 1) { code s c thc hin nu iu kin 1 ng; } elseif (iu kin 2) { code s c thc hin nu iu kin 2 ng; } else { code s c thc hin nu my ci iu kin trn sai; }

V d
Page 18 of 413

V d sau y s a ra "Have a nice weekend!"nu ngy hin nay l th Su, v "Have a nice Sunday!" nu ngy hin nay l ch nht. Nu khng, n s ra "Have a nice day!"

<html> <body> <?php $d=date("D"); if ($d=="Fri") { echo "Have a nice weekend!"; } elseif ($d=="Sun") { echo "Have a nice Sunday!"; } else { echo "Have a nice day!"; } ?> </body> </html>

Chapter 9 : Cu lnh Switch PHP


Cu iu kin c s dng thc hin cc hnh ng khc nhau da trn cc iu kin khc nhau. S dng cu lnh switch la chn mt trong nhiu khi m s c thc hin.

C php

Page 19 of 413

switch (n) { case label1: code s thc hin nu n=label1; break; case label2: code s thc hin nu if n=label2; break; default: code s thc hin nu n khc c 2 ci label1 v label2; }

y l cch n hot ng: u tin chng ta c mt biu thc duy nht n (thng xuyn nht mt bin), c nh gi mt ln. Gi tr ca biu thc sau c so snh vi cc gi tr cho tng trng hp trong cu trc. Nu c mt trn u, cc khi m lin kt vi trng hp c thc hin. S dng break ngn chn cc m t chy vo trng hp tip theo t ng. Nhng tuyn b mc nh c s dng nu khng tm thy. V d

Page 20 of 413

<html> <body> <?php $x=1; switch ($x) { case 1: echo "Number 1"; break; case 2: echo "Number 2"; break; case 3: echo "Number 3"; break; default: echo "No number between 1 and 3"; } ?> </body> </html>

Chapter 10 : Arrays ( Mng )


Mt mng lu tr nhiu gi tr trong mt bin duy nht. Mt Array l g? Mt bin l mt vng lu tr ang nm gi mt s hoc vn bn. Vn l, mt bin s ch c mt gi tr. Mt mng l mt bin c bit, c th lu tr nhiu gi tr trong mt bin duy nht. Nu bn c mt danh sch cc mc (mt danh sch cc tn xe, v d), lu tr cc xe t trong cc bin duy nht c th nhn nh th ny: $cars1="Saab"; $cars2="Volvo"; $cars3="BMW";

Page 21 of 413

Tuy nhin , nu khng phi 3 ci tn m l hng ngn ci tn th sao ? Gii php tt nht l dng mng Mt mng c th gi tt c cc gi tr bin ca bn di mt ci tn. V bn c th truy cp vo cc gi tr bng cch cp n tn mng. Mi phn t trong mng c ch s ring ca mnh n c th d dng truy cp. Trong PHP, c ba loi ca cc mng: Numeric array - Mt mng vi mt s ch s Associative array - Mt mng m mi phm ID c kt hp vi mt gi tr Multidimensional array- Mt mng c cha mt hoc nhiu mng

Numeric Arrays
Mt mng s cc ca hng mi phn t mng vi mt s ch s. C hai phng php to ra mt mng s. 1. Trong v d sau ch s c gn t ng (ch s bt u t 0): $cars=array("Saab","Volvo","BMW","Toyota");

2.Trong v d sau chng ta gn cc ch s theo cch th cng:

$cars[0]="Saab"; $cars[1]="Volvo"; $cars[2]="BMW"; $cars[3]="Toyota";

Page 22 of 413

V d
Trong v d sau bn truy cp cc gi tr bin bng cch cp n tn mng v ch s:

<?php $cars[0]="Saab"; $cars[1]="Volvo"; $cars[2]="BMW"; $cars[3]="Toyota"; echo $cars[0] . " and " . $cars[1] . " are Swedish cars."; ?>

Code s tr v l
Saab and Volvo are Swedish cars.

Associative Arrays
Mt mng kt hp, mi phm ID c kt hp vi mt gi tr. Khi lu tr d liu v cc gi tr c th c t tn, mt mng s khng phi l lun lun l cch tt nht lm iu . Vi mng kt hp, chng ti c th s dng cc gi tr nh l cha kha v gn gi tr cho h. V d 1 Trong v d ny, chng ti s dng mt mng gn la tui ngi khc nhau: $ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34); V d 2 V d ny l tng t nh v d 1, nhng cho thy mt cch khc nhau ca vic to ra cc mng: $ages['Peter'] = "32"; $ages['Quagmire'] = "30"; $ages['Joe'] = "34";

Page 23 of 413

Cc phm ID c th c s dng trong mt kch bn: <?php $ages['Peter'] = "32"; $ages['Quagmire'] = "30"; $ages['Joe'] = "34"; echo "Peter is " . $ages['Peter'] . " years old."; ?> Code s tr v l Peter is 32 years old.

Multidimensional Arrays
Trong mt mng a chiu, mi phn t trong mng chnh cng c th l mt mng. V mi phn t trong mng ph c th l mt mng, v nh vy. V d Trong v d ny, chng ta to mt mng a chiu, vi cc phm ID t ng gn:

Page 24 of 413

$families = array ( "Griffin"=>array ( "Peter", "Lois", "Megan" ), "Quagmire"=>array ( "Glenn" ), "Brown"=>array ( "Cleveland", "Loretta", "Junior" ) );

Cc mng trn s ging nh th ny nu bng vn bn n u ra:

Page 25 of 413

Array ( [Griffin] => Array ( [0] => Peter [1] => Lois [2] => Megan ) [Quagmire] => Array ( [0] => Glenn ) [Brown] => Array ( [0] => Cleveland [1] => Loretta [2] => Junior ) )

V d 2 Cho php th hin th mt gi tr t mng trn: echo "Is " . $families['Griffin'][2] . " a part of the Griffin family?"; Kt qu tr v s l Is Megan a part of the Griffin family?

Chapter 11 : Looping While Loops


Loops thc thi mt khi m mt s quy nh ca ln, hoc trong khi mt iu kin c ch nh l ng s tht. PHP Loops

Page 26 of 413

Thng thng khi bn vit m, bn mun cng mt khi m chy hn v hn na trong mt hng. Thay v thm mt vi dng trong mt kch bn gn nh bng nhau, chng ta c th s dng cc vng lp thc hin mt nhim v nh th ny. Trong PHP, chng ti c bo co vng lp sau y: - while - loops thng qua mt khi m trong khi mt iu kin c ch nh l ng s tht - do ... while - vng lp thng qua mt khi m mt ln, v sau lp i lp li vng lp di nh mt iu kin xc nh l ng s tht - foreach - loops mt khi m cho mi phn t trong mt mng

The while Loop


Cc vng lp trong khi thc thi mt khi m trong khi mt iu kin l ng s tht. C php while (iu kin) { code s c thc hin; } V d V d di y u tin thit lp mt bin 1 ($i=1;). Sau , trong khi vng lp s tip tc chy khi i nh hn hoc bng 5. N s tng thm 1 mi ln vng lp chy: <html> <body> <?php $i=1; while($i<=5) { echo "The number is " . $i . "<br>"; $i++; } ?> </body> </html>

Page 27 of 413

Kt qu l
The number is 1 The number is 2 The number is 3 The number is 4 The number is 5

The do...while Statement


Vic do ... while khi tuyn b s lun lun thc hin cc khi m mt ln, sau s kim tra cc iu kin, v lp li vng lp trong khi iu kin l ng. C php

do { code s c thc hin; } while (iu kin);

V d V d di y u tin thit lp mt bin 1 ($i=1;). Sau , n bt u do ... trong khi vng lp. Cc vng lp s tng bin i vi 1, v sau vit mt s u ra. Sau , iu kin c kim tra (l ti t hn, hoc bng 5), v vng lp s tip tc chy khi i nh hn hoc bng 5

Page 28 of 413

<html> <body> <?php $i=1; do { $i++; echo "The number is " . $i . "<br>"; } while ($i<=5); ?> </body> </html>

Kt qu cho ra l The number is 2 The number is 3 The number is 4 The number is 5 The number is 6

Cc vng lp v vng lp foreach s c gii thch trong chng k tip.

Chapter 12 : Looping For Loops


Loops thc thi mt khi m mt s quy nh ca ln, hoc trong khi mt iu kin c ch nh l ng s tht.

The for Loop


Vng lp for c s dng khi bn bit trc kch bn nn chy bao nhiu ln. C php

Page 29 of 413

for (init; condition; increment) { code to be executed; }

Ch thch: init: Hu h s dng s m (nhng c th c bt k m c thc hin mt ln vo u ca vng lp) condition: iu kin cho mi ln lp. Nu iu kin ny ng, vng lp tip tc. Nu n iu kin sai th vng lp kt thc. increment: Hu ht tng s m (nhng c th c bt k m s c thc hin vo cui ca s lp li) Lu : Cc thng s init v increment c th c sn phm no hoc c nhiu biu ng (cch nhau bng du phy).

V d V d di y nh ngha mt vng lp bt u vi i = 1. Cc vng lp s tip tc chy min l bin i nh hn hoc bng 5. Bin i s tng thm 1 mi ln vng lp chy:

Page 30 of 413

<html> <body> <?php for ($i=1; $i<=5; $i++) { echo "The number is " . $i . "<br>"; } ?> </body> </html>

Kt qu tr v l The number is 1 The number is 2 The number is 3 The number is 4 The number is 5

The foreach Loop


Vng lp foreach c s dng lp qua mng. C php

foreach ($array as $value) { code to be executed; } i vi mi vng lp, gi tr ca phn t mng hin ti c gn cho $ value (v con tr mng l di chuyn ca mt) - do , vng lp tip theo, bn s c xem xt gi tr mng tip theo. V d V d sau y cho thy mt vng lp m s in cc gi tr ca cc mng nht nh

Page 31 of 413

<html> <body> <?php $x=array("one","two","three"); foreach ($x as $value) { echo $value . "<br>"; } ?> </body> </html> Kt qu tr v s l one two three

Chapter 13 : Functions ( Hm Chc Nng )


Sc mnh thc s ca PHP xut pht t chc nng ca mnh. Trong PHP, c hn 700 tch hp chc nng. Bn c th tham kho cc chc nng nhiu hn y

http://w3schools.com/php/default.asp PHP Functions


Trong chng ny, chng ti s cho bn thy lm th no to ra cc chc nng ca ring bn. gi cho kch bn ang c thc thi khi ti trang, bn c th t n vo mt hm.Chc nng s c thc hin bi mt cuc gi n chc nng. Bn c th gi mt chc nng t bt c ni no trong mt trang .

Page 32 of 413

Create a PHP Function


Chc nng s c thc hin bi mt cuc gi n chc nng. C php function functionName() { code to be executed; }

PHP function hng dn: Cung cp cho cc chc nng mt tn phn nh nhng g chc nng Tn chc nng c th bt u bng mt ch ci hoc gch di (khng phi s) V d Mt chc nng n gin, vit tn ca ti khi n c gi l: <html> <body> <?php function writeName() { echo "siverdragon12"; } echo "My name is "; writeName(); ?> </body> </html> Kt qu l My name is siverdragon12

PHP Functions - Adding parameters (thm cc thng s)


Page 33 of 413

thm nhiu chc nng cho mt hm, chng ta c th thm cc thng s. Mt tham s l ging nh mt bin. Tham s c quy nh c th sau tn hm, bn trong du ngoc n. V d 1 V d sau y s vit tn khc nhau u tin, nhng tn cui cng nh nhau: <html> <body> <?php function writeName($fname) { echo $fname . " Refsnes.<br>"; } echo "My name is "; writeName("Kai Jim"); echo "My sister's name is "; writeName("Hege"); echo "My brother's name is "; writeName("Stale"); ?> </body> </html> Kt qu s l

My name is Kai Jim Refsnes. My sister's name is Hege Refsnes. My brother's name is Stale Refsnes. V d 2 Cc chc nng sau y c hai tham s:

Page 34 of 413

<html> <body> <?php function writeName($fname,$punctuation) { echo $fname . " Refsnes" . $punctuation . "<br>"; } echo "My name is "; writeName("Kai Jim","."); echo "My sister's name is "; writeName("Hege","!"); echo "My brother's name is "; writeName("Stle","?"); ?> </body> </html> Kt qu s l My name is Kai Jim Refsnes. My sister's name is Hege Refsnes! My brother's name is Stle Refsnes?

PHP Functions - Return values


cho php mt hm tr v mt gi tr, s dng cc tuyn b tr li. V d

Page 35 of 413

<html> <body> <?php function add($x,$y) { $total=$x+$y; return $total; } echo "1 + 16 = " . add(1,16); ?> </body> </html>

Kt qu s l 1 + 16 = 17

Chapter 14 : PHP Forms and User Input


Cc bin PHP $_GET v $_POST c s dng ly thng tin t cc hnh thc, nh u vo ca ngi s dng.

PHP Form Handling


iu quan trng nht khi giao dch vi cc hnh thc HTML v PHP l bt k yu t hnh thc trong mt trang HTML s t ng c sn cho PHP script ca bn. V d V d di y c cha mt dng HTML vi hai lnh vc u vo v mt nt submit:

Page 36 of 413

<html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="fname"> Age: <input type="text" name="age"> <input type="submit"> </form> </body> </html> Khi mt ngi dng in vo cc hnh thc trn v nhp chut vo nt submit, cc d liu mu c gi vo mt tp tin PHP, gi l "welcome.php": "welcome.php" trng nh th ny: <html> <body> Welcome <?php echo $_POST["fname"]; ?>!<br> You are <?php echo $_POST["age"]; ?> years old. </body> </html> Kt qu tr v s i loi nh th ny Welcome John! You are 28 years old. Cc bin PHP $_POST v $_GET s c gii thch trong cc chng tip theo.

Form Validation
u vo s dng nn c xc nhn trn cc trnh duyt bt c khi no c th (theo lnh ca khch hng). Trnh duyt xc nhn l nhanh hn v gim ti my ch. Bn nn xem xt my ch xc nhn nu ngi dng nhp vo s c chn vo c s d liu. Mt cch tt xc nhn mt hnh thc trn my ch l vit cc hnh thc cho chnh n, thay v nhy n mt trang khc. Sau ngi dng s nhn c cc thng

Page 37 of 413

bo li trn cng mt trang nh hnh thc. iu ny lm cho n d dng hn pht hin ra cc li.

Chapter 15 : PHP $_GET Variable


Trong PHP, bin $ _GET c xc nh trc c s dng thu thp cc gi tr trong mt hnh thc vi phng php = "get".

The $_GET Variable


Thng tin c gi t mt hnh thc vi phng thc GET c th nhn thy tt c mi ngi (n s c hin th trong thanh a ch ca trnh duyt) v c gii hn v s lng thng tin gi. V d <form action="welcome.php" method="get"> Name: <input type="text" name="fname"> Age: <input type="text" name="age"> <input type="submit"> </form> Khi ngi dng nhp vo nt "Submit", URL gi n my ch c th nhn mt ci g nh th ny: http://localhost/welcome.php?fname=Peter&age=37 Cc tp tin "welcome.php" by gi c th s dng bin $ _GET thu thp d liu mu (tn ca cc trng mu t ng s l cha kha trong mng $ _GET): Welcome <?php echo $_GET["fname"]; ?>.<br> You are <?php echo $_GET["age"]; ?> years old!

When to use method="get"?


Khi s dng phng php "get" trong cc hnh thc HTML, tt c cc tn bin v gi tr c hin th trong URL. Page 38 of 413

Lu : Phng php ny khng nn c s dng khi gi mt khu hoc cc thng tin nhy cm khc! Tuy nhin, bi v cc bin c hin th trong URL, n c th nh du trang. iu ny c th hu ch trong mt s trng hp. Lu : Phng php get l khng ph hp vi cc gi tr bin rt ln. N khng nn c s dng vi gi tr vt qu 2000 k t.

Chapter 16 : PHP $_POST Function


Trong PHP, bin $ _POST c xc nh trc c s dng thu thp cc gi tr trong mt hnh thc vi phng php = "post".

The $_POST Variable ( Bin $_POST )


Bin $ _POST c xc nh trc c s dng thu thp cc gi tr t mt hnh thc gi vi phng php = "post". Thng tin c gi t mt hnh thc vi phng thc POST l v hnh cho ngi khc v khng c gii hn v s lng thng tin gi. Lu : Tuy nhin, kch thc ti a cho phng thc POST l 8 MB mc ch ( c th thay i mc nh thng qua file php.ini , dng post_max_size ) V d : <form action="welcome.php" method="post"> Name: <input type="text" name="fname"> Age: <input type="text" name="age"> <input type="submit"> </form> Khi ngi dng nhp vo nt "Submit", URL s nh th ny: http://localhost/welcome.php

Page 39 of 413

Cc tp tin "welcome.php" by gi c th s dng bin $ _POST thu thp d liu mu (tn ca cc trng mu t ng s l cha kha trong mng $ _POST): Welcome <?php echo $_POST["fname"]; ?>!<br> You are <?php echo $_POST["age"]; ?> years old.

When to use method="post"?


Thng tin c gi t mt hnh thc vi phng thc POST l v hnh cho ngi khc v khng c gii hn v s lng thng tin gi. Tuy nhin, bi v cc bin khng c hin th trong URL, n khng phi l c th nh du trang.

The PHP $_REQUEST Variable


Bin $ _REQUEST c xc nh trc c cha cc ni dung ca c hai $ _GET, $_POST , $_COOKIE Bin $ _REQUEST c th c s dng thu thp d liu mu c gi vi c hai phng php GET v POST. V d Welcome <?php echo $_REQUEST["fname"]; ?>!<br> You are <?php echo $_REQUEST["age"]; ?> years old.

Phn 2 : PHP Nng Cao


Chapter 17 : Date() Function
Chc nng php date() dng nh dng mt thi gian v / hoc ngy.

The PHP Date() Function


Chc nng PHP Date() nh dng du thi gian cho mt ngy d c hn v thi gian.

Page 40 of 413

Mo : Du thi gian l mt chui cc k t, biu th ngy thng v / hoc thi gian m ti mt s kin no xy ra. C php date(format,timestamp)

Parameter format timestamp

Description Required. Specifies the format of the timestamp Optional. Specifies a timestamp. Default is the current date and time

PHP Date() - Format the Date


Tham s nh dng cn thit trong date()xc nh lm th no nh dng ngy / thi gian. Di y l mt s k t c th c s dng: d - i din cc ngy trong thng (01-31) m - i din cho mt thng (01-12) Y - i din mt nm (bn ch s) Bn c th tham kho thm ti y http://w3schools.com/php/php_ref_date.asp Nhng k t khc nh : /,.,- cng c th c chn vo gia cc cc ch ci b sung thm nh dng . <?php echo date("Y/m/d") . "<br>"; echo date("Y.m.d") . "<br>"; echo date("Y-m-d"); ?> Kt qu tr v s l 2013/05/11 2013.05.11 2013-05-11

Page 41 of 413

PHP Date() - Adding a Timestamp


Tham s du thi gian ty chn trong date() chc nng xc nh mt du thi gian. Nu bn khng ch nh mt du thi gian, ngy hin ti v thi gian s c s dng. Chc nng mktime() tr v cc du thi gian Unix cho mt ngy. Cc du thi gian Unix cha s giy gia Epoch Unix (January 1 1970 00:00:00 GMT) v thi gian quy nh. C php cho mktime() mktime(hour,minute,second,month,day,year,is_dst) i mt ngy trong tng lai, chng ti ch n gin l thm mt i s ngy mktime() <?php $tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y")); echo "Tomorrow is ".date("Y/m/d", $tomorrow); ?>

Code s ra l Tomorrow is 2009/05/12

Chapter 17 : Include File


PHP include and require Statements
Trong PHP, bn c th chn ni dung ca mt file PHP vo mt tp tin PHP trc khi my ch thc hin n. Bao gm v yu cu bo co c s dng chn m hu ch bng vn bn trong cc tp tin khc, trong dng chy ca thc hin. Page 42 of 413

Bao gm v yu cu ging ht nhau, ngoi tr khi tht bi: -yu cu s to ra mt li nghim trng (E_COMPILE_ERROR) v dng li kch bn -bao gm s ch sn xut mt cnh bo (E_WARNING) v kch bn s tip tc V vy, nu bn mun thc hin i vo v ch cho ngi s dng u ra, ngay c khi bao gm cc tp tin l mt tch, s dng bao gm. Nu khng, trong trng hp FrameWork, CMS hoc mt ng dng PHP m ha phc tp, lun lun s dng yu cu bao gm mt tp tin quan trng n dng chy ca thc hin. iu ny s gip trnh nh hng n an ninh v ton vn ca ng dng ca bn, ch cn trong trng hp mt trong nhng tp tin quan trng l v tnh mt tch. Cc file bao gm tit kim rt nhiu cng vic. iu ny c ngha l bn c th to mt tiu tiu chun, chn, hoc tp tin trnh n cho tt c cc trang web ca bn. Sau , khi tiu cn c cp nht, bn ch c th cp nht cc tiu bao gm cc tp tin.

Syntax ( C php )

include 'filename'; or require 'filename';

PHP include and require Statement


Gi s bn c mt tp tin tiu tiu chun, c gi l "header.php". bao gm cc tp tin tiu trong mt trang, s dng include/require:

<html> <body> <?php include 'header.php'; ?> <h1>Welcome to my home page!</h1> <p>Some text.</p> </body> </html>

Page 43 of 413

V d 2 Gi s chng ta c mt tp tin trnh n tiu chun nn c s dng trn tt c cc trang. "menu.php":

echo '<a href="/default.php">Home</a> <a href="/tutorials.php">Tutorials</a> <a href="/references.php">References</a> <a href="/examples.php">Examples</a> <a href="/about.php">About Us</a> <a href="/contact.php">Contact Us</a>';

Tt c cc trang trong trang Web nn bao gm cc tp tin trnh n ny. y l lm th no n c th c thc hin:

<html> <body> <div class="leftmenu"> <?php include 'menu.php'; ?> </div> <h1>Welcome to my home page.</h1> <p>Some text.</p> </body> </html>

V d 3 Gi s chng ta c mt tp tin vi mt s bin c nh ngha ("vars.php") bao gm:

Page 44 of 413

<?php $color='red'; $car='BMW'; ?>

Sau , cc bin c th c s dng trong cc tp tin gi:

<html> <body> <h1>Welcome to my home page.</h1> <?php include 'vars.php'; echo "I have a $color $car"; // I have a red BMW ?> </body> </html>

Chapter 18 : File Handing


Chc nng fopen() dng m 1 file trong PHP

Opening a File
Tham s u tin ca chc nng ny cha tn ca tp tin c m v tham s th hai quy nh c th trong ch tp tin phi c m ra: <html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html>

Page 45 of 413

Tp tin c th c m trong mt trong cc phng thc sau y:

Modes r r+ w w+ a a+ x x+

Description Read only. Starts at the beginning of the file Read/Write. Starts at the beginning of the file Write only. Opens and clears the contents of file; or creates a new file if it doesn't exist Read/Write. Opens and clears the contents of file; or creates a new file if it doesn't exist Append. Opens and writes to the end of the file or creates a new file if it doesn't exist Read/Append. Preserves file content by writing to the end of the file Write only. Creates a new file. Returns FALSE and an error if file already exists Read/Write. Creates a new file. Returns FALSE and an error if file already exists

Lu : Nu hm fopen() l khng th m cc tp tin c ch nh, n s tr v 0 (false). V d V d sau y to ra mt tin nhn nu hm fopen() l khng th m cc tp tin c ch nh:

<html> <body> <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?> </body> </html>

Closing a File
Chc nng fclose() dng ng file ang m: Page 46 of 413

<?php $file = fopen("test.txt","r"); //some code to be executed fclose($file); ?>

Check End-of-file
Feof () chc nng kim tra nu "end-of-file (EOF) t c. Feof () chc nng hu ch cho Looping thng qua cc d liu khng r chiu di. Lu : Bn khng th c t tp tin m trong w, a, v ch x!

if (feof($file)) echo "End of file";

Reading a File Line by Line


Cc fgets() chc nng c s dng c mt dng t mt tp tin duy nht. Lu : Sau khi mt cuc gi n chc nng ny, con tr tp tin di chuyn n dng k tip. V d V d di y c mt dng tp tin theo dng, cho n khi t n cui ca tp tin c:

Page 47 of 413

<?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "<br>"; } fclose($file); ?>

Reading a File Character by Character


Hm fgetc() c s dng c mt k t t mt tp tin duy nht. Lu : Sau khi mt cuc gi n chc nng ny di chuyn con tr tp tin k t tip theo. V d V d di y c mt tp tin k t ca nhn vt, cho n khi t n cui tp tin: <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); while (!feof($file)) { echo fgetc($file); } fclose($file); ?>

Chapter 19 : File Upload


Vi PHP , n c th cho php bn upload 1 tp tin ln server ( my ch )

Create an Upload-File Form

Page 48 of 413

cho php ngi dng ti ln cc tp tin t mt hnh thc c th rt hu ch. Nhn vo cc hnh thc HTML cho cc tp tin ti ln sau: <html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="Submit"> </form> </body> </html>

Ch sau y v dng HTML trn: -Thuc tnh enctype ca th <form> xc nh loi ni dung s dng khi np mu n. "multipart / form-data" c s dng khi yu cu d liu nh phn, ging nh ni dung ca mt tp tin c ti ln mt hnh thc ( ti nhiu file cho nhanh ) -Type = "file" thuc tnh ca th <input> xc nh rng u vo nn c x l nh mt tp tin. V d, khi xem trong mt trnh duyt, c s l mt nt browse bn cnh lnh vc u vo Lu : Cho php ngi dng ti ln cc tp tin l mt nguy c bo mt ln. Ch cho php ngi dng tin cy thc hin cc tp tin ti ln.

Create The Upload Script


Ni dung file "upload_file.php" s c dng nh th ny

Page 49 of 413

<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?>

Bng cch s dng PHP global $ _FILES mng bn c th ti ln cc tp tin t mt my tnh khch hng n my ch t xa. Tham s u tin l tn ca hnh thc u vo v ch s th hai c th l mt trong hai "name", "type", "size", "tmp_name" hoc "error". Nh th ny: $ _FILES ["File"] ["name"] - tn ca cc tp tin ti ln $ _FILES ["File"] ["type"] - loi tp tin ti ln $ _FILES ["File"] ["size"] - kch thc trong kilobytes ca cc tp tin ti ln $ _FILES ["File"] ["tmp_name"] - tn ca bn sao tm thi ca tp tin c lu tr trn my ch $ _FILES ["File"] ["error"] - m li t tp tin ti ln y l mt cch rt n gin cc tp tin ti ln. V l do bo mt, bn nn thm hn ch v nhng g ngi dng c php ti ln.

Restrictions on Upload
Trong kch bn ny, chng ta thm mt s hn ch cc tp tin ti ln. Ngi s dng c th ti ln gif, jpeg, v png tp tin v kch thc tp tin phi di 20 kB.:

Page 50 of 413

<?php $allowedExts = array("jpg", "jpeg", "gif", "png"); $extension = end(explode(".", $_FILES["file"]["name"])); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?> Lu : i vi IE nhn ra loi tp tin jpg phi l pjpeg, cho FireFox n phi l jpeg.

Saving the Uploaded File


Cc v d trn to ra mt bn sao tm thi ca cc tp tin ti ln trong th mc temp PHP trn my ch. Cc file tm thi sao chp mt i ngay c khi kch bn kt thc. lu tr cc tp tin c ti ln chng ta cn phi sao chp n vo mt v tr khc nhau:

Page 51 of 413

<?php $allowedExts = array("jpg", "jpeg", "gif", "png"); $extension = end(explode(".", $_FILES["file"]["name"])); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>

Cc kch bn trn kim tra nu tp tin tn ti, nu n khng c, n s sao chp cc tp tin vo mt th mc gi l "upload".

Page 52 of 413

Chapter 20 : PHP Cookies


Mt cookie thng c s dng xc nh mt ngi s dng.

What is a Cookie?
Mt cookie thng c s dng xc nh mt ngi s dng. Mt cookie l mt file nh m server nhng vo trn my tnh ca ngi dng. Mi ln cng mt my tnh yu cu mt trang vi mt trnh duyt, n s gi cookie. Vi PHP, bn c th to ra v ly gi tr cookie.

How to Create a Cookie?


Hm setcookie() c s dng thit lp mt cookie. Lu : Hm setcookie() phi c TRC th <html>. C php setcookie(name, value, expire, path, domain); V d 1 Trong v d di y, chng ti s to ra mt cookie c tn l "user" v gn gi tr "Alex Porter" vi n. Chng ti cng xc nh rng cookie ht hn sau mt gi: <?php setcookie("user", "Alex Porter", time()+3600); ?> <html> ..... Lu : Gi tr ca cookie c t ng urlencoded khi gi cc tp tin cookie, v t ng gii m khi nhn ( ngn chn URLencoding, s dng setrawcookie () thay th). V d 2 Bn cng c th thit lp thi gian ht hn ca cookie theo mt cch khc. N c th c d dng hn bng cch s dng giy.

Page 53 of 413

<?php $expire=time()+60*60*24*30; setcookie("user", "Alex Porter", $expire); ?> <html> .....

Trong v d trn c thit lp thi gian ht hn mt thng (60 giy * 60 pht * 24 gi * 30 ngy).

How to Retrieve a Cookie Value?


PHP bin $ _COOKIE c s dng ly mt gi tr cookie. Trong v d di y, chng ti ly gi tr ca cookie c tn l "ngi s dng" v hin th n trn mt trang: <?php // To 1 Cookie echo $_COOKIE["user"]; // Cch View Cookie print_r($_COOKIE); ?>

Trong v d sau, chng ti s dng isset() chc nng tm ra nu mt cookie c thit lp:

Page 54 of 413

<html> <body> <?php if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br>"; else echo "Welcome guest!<br>"; ?> </body> </html>

How to Delete a Cookie?


Khi xa mt cookie, bn nn m bo rng ngy ht hn l trong qu kh. V d xa Cookie: <?php // set the expiration date to one hour ago setcookie("user", "", time()-3600); ?>

What if a Browser Does NOT Support Cookies?


Nu cc chng trnh khuyn mi p dng vi cc trnh duyt khng h tr cookies, bn s phi s dng cc phng php khc vt qua thng tin t trang ny sang trang khc trong ng dng ca bn. Mt phng php l truyn d liu thng qua cc hnh thc (hnh thc v u vo ngi s dng c m t trc trong hng dn ny). Mu di y qua cc u vo ngi s dng "welcome.php" khi ngi dng nhp vo nt "Submit":

Page 55 of 413

<html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name"> Age: <input type="text" name="age"> <input type="submit"> </form> </body> </html>

Cc gi tr trong tp tin "welcome.php" nh th ny:

<html> <body> Welcome <?php echo $_POST["name"]; ?>.<br> You are <?php echo $_POST["age"]; ?> years old. </body> </html>

Chapter 21 : PHP Sessions


Mt bin PHP sessions c s dng lu tr thng tin v, hoc thay i ci t cho mt phin ngi dng. Bin Session gi thng tin v ngi s dng duy nht, v c sn cho tt c cc trang trong mt ng dng.

PHP Session Variables


Khi bn ang lm vic vi mt ng dng, bn m n, lm mt s thay i v sau bn ng n. y l ging nh mt phin ( sessions ). Cc my tnh bit bn l ai. N bit khi bn bt u ng dng v khi bn kt thc. Tuy nhin, trn internet c mt vn : cc my ch web khng bit bn l ai v nhng g bn lm v a ch HTTP khng duy tr trng thi. Mt PHP session gii quyt vn ny bng cch cho php bn lu tr thng tin ngi

Page 56 of 413

dng trn my ch s dng sau ny (v d nh tn ngi dng, cc mt hng mua sm, vv). Tuy nhin, thng tin phin l tm thi v s b xa sau khi ngi dng ri khi trang web. Nu bn cn lu tr vnh vin, bn c th mun lu tr cc d liu trong mt c s d liu. Phin lm vic bng cch to ra mt id duy nht (UID) cho mi khch truy cp v cc bin ca hng da trn UID ny. UID l hoc c lu tr trong mt cookie hoc l tuyn truyn trong URL.

Starting a PHP Session


Trc khi bn c th lu tr thng tin ngi s dng trong phin ( sessions ) PHP ca bn, trc tin bn phi bt u sessions. Lu : Cc chc nng session_start() phi xut hin TRC th <html>: <?php session_start(); ?> <html> <body> </body> </html> on m trn s ng k phin lm vic ca ngi dng vi my ch, cho php bn bt u thng tin ngi dng tit kim, v gn mt UID cho session ca ngi dng .

Storing a Session Variable


Cch chnh xc lu tr v ly bin phin giao dch l s dng bin $ _SESSION PHP:

Page 57 of 413

<?php session_start(); // store session data $_SESSION['views']=1; ?> <html> <body> <?php //retrieve session data echo "Pageviews=". $_SESSION['views']; ?> </body> </html> Kt qu cho ra l Pageviews=1 Trong v d di y, chng ti to ra mt truy cp trang page-views n gin. Cc isset() chc nng kim tra nu bin "views" c thit lp. Nu "views" c thit lp, chng ta c th tng truy cp ca chng ti. Nu "views" khng tn ti, chng ti to ra mt bin "views", v t n vo 1: <?php session_start(); if(isset($_SESSION['views'])) $_SESSION['views']=$_SESSION['views']+1; else $_SESSION['views']=1; echo "Views=". $_SESSION['views']; ?>

Destroying a Session
Nu bn mun xa mt s d liu phin ( sessions ), bn c th s dng unset() hoc session_destroy() .

Page 58 of 413

Unset() chc nng c s dng gii phng bin phin giao dch quy nh: <?php session_start(); if(isset($_SESSION['views'])) unset($_SESSION['views']); ?> Bn cng c th ph hy hon ton cc session bng cch gi session_destroy() chc nng: <?php session_destroy(); ?> Lu : session_destroy () s thit lp li phin lm vic ca bn v bn s mt tt c cc d liu sessions ca bn c lu tr.

Chapter 22 : Sending Emails


PHP cho php bn gi e-mail trc tip t mt on script.

The PHP mail() Function


PHP mail() chc nng c s dng gi email t bn trong mt kch bn ( Mt Script ). C php mail(to,subject,message,headers,parameters) Parameter to subject message headers parameters Page 59 of 413 Description Required. Specifies the receiver / receivers of the email Required. Specifies the subject of the email. Note: This parameter cannot contain any newline characters Required. Defines the message to be sent. Each line should be separated with a LF (\n). Lines should not exceed 70 characters Optional. Specifies additional headers, like From, Cc, and Bcc. The additional headers should be separated with a CRLF (\r\n) Optional. Specifies an additional parameter to the sendmail program

Lu : i vi cc chc nng mail s c sn, PHP i hi mt h thng email c ci t v hot ng. Chng trnh c s dng c xc nh bi cc thit lp cu hnh trong file php.ini.

PHP Simple E-Mail


Cch n gin nht gi mt email vi PHP l gi mt email vn bn. Trong v d di y, chng ti ln u tin khai bo cc bin ($to, $subject, $message, $from, $headers), sau chng ti s dng cc bin trong hm mail() gi e-mail: <?php $to = "someone@example.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "someonelse@example.com"; $headers = "From:" . $from; mail($to,$subject,$message,$headers); echo "Mail Sent."; ?>

PHP Mail Form


With PHP, you can create a feedback-form on your website. The example below sends a text message to a specified e-mail address:

Page 60 of 413

<html> <body> <?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", $subject, $message, "From:" . $email); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text'><br> Subject: <input name='subject' type='text'><br> Message:<br> <textarea name='message' rows='15' cols='40'> </textarea><br> <input type='submit'> </form>"; } ?> </body> </html>

y l v d trn lm vic nh th no: Trc tin, hy kim tra nu trng email u vo s c in Nu n khng c thit lp (nh khi trang l ln u tin truy cp), sn lng di dng HTML Nu n c thit lp (sau khi biu mu c in y ), gi email t hnh thc Khi submit c nhn sau khi biu mu c in y , trang ti li, thy rng cc u vo email c thit lp, v gi email Lu : y l cch n gin gi e-mail, nhng n khng phi l an ton. Trong

Page 61 of 413

chng k tip ca hng dn ny, bn c th c thm chi tit v l hng trong kch bn e-mail, v lm th no xc nhn u vo ngi s dng lm cho n an ton hn.

Chapter 23 : Secure E-mails


C mt im yu trong kch bn e-mail PHP trong chng trc.

PHP E-mail Injections


u tin, hy nhn vo cc m PHP t chng trc: <html> <body> <?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text'><br> Subject: <input name='subject' type='text'><br> Message:<br> <textarea name='message' rows='15' cols='40'> </textarea><br> <input type='submit'> </form>"; } ?> </body> </html>

Page 62 of 413

Vn vi code trn l ngi s dng tri php c th chn d liu vo cc tiu mail thng qua hnh thc u vo. iu g s xy ra nu ngi dng thm cc vn bn sau y n lnh vc nhp a ch email trong cc hnh thc? Nh th ny ? someone@example.com%0ACc:person2@example.com %0ABcc:person3@example.com,person3@example.com, anotherperson4@example.com,person5@example.com %0ABTo:person6@example.com Hm mail () t cc vn bn trn vo cc tiu th nh bnh thng, v phn u trang c thm mt Cc:, Bcc:, v: To : field. Khi ngi dng nhp vo nt submit, e-mail s c gi n tt c cc a ch trn!

PHP Stopping E-mail Injections


Cch tt nht ngn chn khai thc e-mail l xc nhn u vo. on code di y l ging nh trong chng trc, nhng by gi chng ti thm mt validator u vo kim tra cc lnh vc th in t trong cc hnh thc:

Page 63 of 413

<html> <body> <?php function spamcheck($field) { //filter_var() sanitizes the e-mail //address using FILTER_SANITIZE_EMAIL $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() validates the e-mail //address using FILTER_VALIDATE_EMAIL if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; } } if (isset($_REQUEST['email'])) {//if "email" is filled out, proceed //check if the email address is invalid $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Invalid input"; } else {//send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } } else {//if "email" is not filled out, display the form echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text'><br> Subject: <input name='subject' type='text'><br> Message:<br> <textarea name='message' rows='15' cols='40'>

Page 64 of 413

</textarea><br> <input type='submit'> </form>"; } ?> </body> </html>

Trong on m trn, chng ti s dng PHP b lc xc nhn u vo: Cc b lc FILTER_SANITIZE_EMAIL loi b tt c cc k t bt hp php e-mail t mt chui Cc b lc FILTER_VALIDATE_EMAIL xc nhn gi tr nh l mt a ch e-mail Bn c th c thm v cc b lc trong chng Lc PHP ca chng ti.. http://w3schools.com/php/php_filter.asp

Chapter 24 : Error Handing


Vic x l li mc nh trong PHP rt n gin. Mt thng bo li vi tn tp tin, s dng v mt tin nhn m t cc li c gi n trnh duyt.

PHP Error Handling


Khi to ra cc kch bn v cc ng dng web, li x l l mt phn quan trng. Nu m ca bn thiu m kim tra li, chng trnh ca bn c th trng rt khng chuyn nghip v bn c th c ri ro an ninh. Hng dn ny c cha mt s li ph bin nht kim tra cc phng php trong PHP. Chng ti s hin th cc phng php x l cc li khc nhau: - n gin "die()" bo co - Tu chnh li v gy nn li - bo co li

Basic Error Handling: Using the die() function


V d u tin cho thy mt kch bn n gin m mt tp tin vn bn: Page 65 of 413

<?php $file=fopen("welcome.txt","r"); ?> Nu tp tin khng tn ti, bn c th nhn c mt li nh th ny: Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in C:\www\test.php on line 2 trnh m ngi dng nhn c mt thng bo li nh trn, chng ti kim tra nu tp tin tn ti trc khi chng ti c gng truy cp vo n:

<?php if(!file_exists("welcome.txt")) { die("File not found"); } else { $file=fopen("welcome.txt","r"); } ?> By gi nu cc tp tin khng tn ti, bn nhn c mt li nh th ny: File not found on m trn l hiu qu hn hn so vi m trc , bi v n s dng mt c ch x l li n gin ngn chn kch bn sau khi li. Tuy nhin, ch cn dng li kch bn khng phi l lun lun ng cch i. Chng ta hy xem xt thay th PHP chc nng cho cc li x l.

Creating a Custom Error Handler

Page 66 of 413

To mt li x l ty chnh l kh n gin. Chng ti ch n gin l to ra mt chc nng c bit c th c gi khi li xy ra trong PHP. Chc nng ny phi c kh nng x l ti thiu l hai tham s (mc li v thng bo li), nhng c th chp nhn n nm tham s (ty chn tp tin, ng s, v bi cnh cc li); C php error_function(error_level,error_message, error_file,error_line,error_context)

Parameter error_level

error_message error_file error_line error_context

Description Required. Specifies the error report level for the user-defined error. Must be a value number. See table below for possible error report levels Required. Specifies the error message for the user-defined error Optional. Specifies the filename in which the error occurred Optional. Specifies the line number in which the error occurred Optional. Specifies an array containing every variable, and their values, in use when the error occurred

Error Report levels


Nhng mc bo co li l cc loi khc nhau ca cc li ngi dng nh ngha x l li c th c s dng cho: Value Constant 2 E_WARNING 8 E_NOTICE Description Non-fatal run-time errors. Execution of the script is not halted Run-time notices. The script found something that might be an error, but could also happen when running a script normally

Page 67 of 413

Fatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error() 512 E_USER_WARNING Non-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error() 1024 E_USER_NOTICE User-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error() 4096 E_RECOVERABLE_ERROR Catchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler()) 8191 E_ALL All errors and warnings (E_STRICT became a part of E_ALL in PHP 5.4)

256

E_USER_ERROR

By gi cho php to ra mt chc nng x l cc li:

function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br>"; echo "Ending Script"; die(); }

on m trn l mt li chc nng x l n gin. Khi n c kch hot, n c mc li v mt thng bo li. Sau kt qu u ra mc li v thng ip v kt thc kch bn. By gi chng ta to ra mt chc nng x l li, chng ti cn phi quyt nh khi n cn phi c kch hot.

Set Error Handler


X l li mc nh cho PHP l c xy dng trong x l li. Chng ti s thc hin cc chc nng trn x l li mc nh trong sut thi gian ca kch bn. N c th thay i x l li p dng ch cho mt s li, nh vy kch bn c th x l cc li khc nhau theo nhng cch khc nhau. Tuy nhin, trong v d ny, chng ta s s dng x l li ty chnh ca chng ti cho tt c cc li:

Page 68 of 413

set_error_handler("customError"); T khi chng ti mun c chc nng ty chnh ca chng ti x l tt c cc li, set_error_handler() ch cn mt tham s, mt tham s th hai c th c thm vo xc nh mt mc li. V d Kim tra x l li bng cch c gng bin u ra khng tn ti:

<?php //error handler function function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr"; } //set error handler set_error_handler("customError"); //trigger error echo($test); ?> u ra ca cc m trn nn c mt ci g nh th ny: Error: [8] Undefined variable: test

Trigger an Error
Trong mt kch bn m ngi s dng c th nhp d liu n rt hu ch kch hot cc li khi mt u vo bt hp php xy ra. Trong PHP, iu ny c thc hin bi cc chc nng trigger_error(). V d Trong v d ny, mt li xy ra nu bin "test" ln hn "1":

Page 69 of 413

<?php $test=2; if ($test>1) { trigger_error("Value must be 1 or below"); } ?> u ra ca cc m trn nn c mt ci g nh th ny: Notice: Value must be 1 or below in C:\webfolder\test.php on line 6

Mt li c th c kch hot bt c ni no bn mun trong mt kch bn, v bng cch thm vo mt tham s th hai, bn c th xc nh mc li c kch hot. Loi li c th xy ra: E_USER_ERROR - Fatal thi gian chy li do ngi dng to ra. Li m khng th c phc hi t. Thc thi kch bn phi dng li E_USER_WARNING - Khng gy h cnh bo ngi dng to ra thi gian chy. Thc thi kch bn khng dng li E_USER_NOTICE - Default. Ngi s dng to thng bo thi gian chy. Cc kch bn tm thy mt ci g c th l mt li, nhng cng c th xy ra khi chy mt kch bn bnh thng V d Trong v d ny E_USER_WARNING xy ra nu bin "test" ln hn "1". Nu E_USER_WARNING xy ra, chng ta s s dng ty chnh x l li ca chng ti v kt thc kch bn:

Page 70 of 413

<?php //error handler function function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br>"; echo "Ending Script"; die(); } //set error handler set_error_handler("customError",E_USER_WARNING); //trigger error $test=2; if ($test>1) { trigger_error("Value must be 1 or below",E_USER_WARNING); } ?>

u ra ca cc m trn nn c mt ci g nh th ny: Error: [512] Value must be 1 or below Ending Script By gi chng ta hc c cch to ra cc li ca chng ta v lm th no kch hot chng, cho php c mt ci nhn li ng nhp.

Error Logging
Theo mc nh, PHP s gi mt bn ghi li h thng ng nhp ca my ch hoc mt tp tin, ty thuc vo cch cu hnh error_log c thit lp trong file php.ini. Bng cch s dng cc error_log() chc nng bn c th gi cc bn ghi li vo mt tp tin c ch nh hoc mt im n t xa. Gi thng bo li cho chnh mnh bng e-mail c th l mt cch tt nhn c thng bo li c th.

Send an Error Message by E-Mail


Trong v d di y, chng ti s gi mt e-mail vi mt thng bo li v kt thc kch bn, nu mt li c th xy ra:

Page 71 of 413

<?php //error handler function function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br>"; echo "Webmaster has been notified"; error_log("Error: [$errno] $errstr",1, "someone@example.com","From: webmaster@example.com"); } //set error handler set_error_handler("customError",E_USER_WARNING); //trigger error $test=2; if ($test>1) { trigger_error("Value must be 1 or below",E_USER_WARNING); } ?>

u ra ca cc m trn nn c mt ci g nh th ny: Error: [512] Value must be 1 or below Webmaster has been notified

V cc th nhn c t cc m trn trng nh th ny: Error: [512] Value must be 1 or below iu ny khng nn c s dng vi tt c cc li. Cc li thng xuyn nn c ng nhp trn my ch bng cch s dng h thng mc nh khai thc g PHP.

Chapter 25 : Exception Handing


Trng hp ngoi l ( Exception ) c s dng thay i dng chy bnh thng ca mt kch bn nu mt li c xc nh xy ra.

What is an Exception
Page 72 of 413

Vi PHP 5, n mt i tng mi theo nh hng cch i ph vi cc li. X l ngoi l c s dng thay i dng chy bnh thng ca vic thc thi m nu mt li c ch nh (c bit) iu kin xy ra. Tnh trng ny c gi l mt ngoi l. y l nhng g thng xy ra khi mt ngoi l c kch hot: - M hin ti ca nh nc c lu - Vic thc thi m s chuyn sang mt chc nng c xc nh trc (ty chnh) x l ngoi l - Ty theo tnh hnh, x l sau c th tip tc thc hin t trng thi m lu, chm dt thc hin kch bn hoc tip tc kch bn t mt v tr khc nhau trong cc m Chng ti s hin th cc phng php x l cc li khc nhau: -S dng c bn ca ngoi l -To mt x l ngoi l ty chnh nhiu trng hp ngoi l -Li nm mt ngoi l -Thit lp mt x l ngoi l u Lu : Trng hp ngoi l ch nn c s dng vi iu kin li, v khng nn c s dng chuyn n mt ni khc trong cc m ti mt thi im xc nh.

Basic Use of Exceptions


Khi mt ngoi l c nm ra, cc m sau n s khng c thc hin, v PHP s c gng tm thy nhng "catch" ph hp vi khi. Nu mt ngoi l khng b bt, mt li nghim trng s c pht hnh vi mt thng bo "uncaught ngoi l". Cho php th nm mt ngoi l m khng nh bt n:

Page 73 of 413

<?php //create function with an exception function checkNum($number) { if($number>1) { throw new Exception("Value must be 1 or below"); } return true; } //trigger exception checkNum(2); ?>

on m trn s nhn c mt li nh th ny: Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' in C:\webfolder\test.php:6 Stack trace: #0 C:\webfolder\test.php(12): checkNum(28) #1 {main} thrown in C:\webfolder\test.php on line 6

Try, throw and catch


trnh li ny t v d trn, chng ta cn to ra cc m thch hp x l mt trng hp ngoi l. Thch hp ngoi l m nn bao gm: 1.C gng - Mt chc nng bng cch s dng mt ngoi l phi trong mt khi "th". Nu trng hp ngoi l khng kch hot, m s tip tc nh bnh thng. Tuy nhin, nu trng hp ngoi l kch hot, mt ngoi l l "nm" 2.Throw - y l cch bn kch hot mt ngoi l. Mi "nm" phi c t nht mt "catch" 3.Catch - Mt khi "bt" ly mt ngoi l v to ra mt i tng c cha cc thng

Page 74 of 413

tin ngoi l

<?php //create function with an exception function checkNum($number) { if($number>1) { throw new Exception("Value must be 1 or below"); } return true; } //trigger exception in a "try" block try { checkNum(2); //If the exception is thrown, this text will not be shown echo 'If you see this, the number is 1 or below'; } //catch exception catch(Exception $e) { echo 'Message: ' .$e->getMessage(); } ?> on m trn s nhn c mt li nh th ny: Message: Value must be 1 or below

Example explained:
on m trn nm mt ngoi l v bt n: 1.Cc checkNum() chc nng c to ra. N kim tra nu mt s l s ln hn 1. Nu Page 75 of 413

c, mt ngoi l c nm 2.Cc checkNum() chc nng c gi trong mt khi "th" 3.Ngoi tr trong phm vi chc nng checkNum () c nm 4.Block "bt" retrives cc trng hp ngoi l v to ra mt i tng ($e) c cha cc thng tin ngoi l 5.Cc thng bo li t trng hp ngoi l c lp li bng cch gi $e-> getMessage() t i tng ngoi l Tuy nhin, mt trong nhng cch c c xung quanh "nm mi phi c mt nm bt" nguyn tc l thit lp mt mc ngoi l x l hng u x l cc li phiu thng qua.

Creating a Custom Exception Class


To mt x l ngoi l ty chnh l kh n gin. Chng ti ch n gin l to ra mt lp hc c bit vi chc nng c th c gi khi mt ngoi l xy ra trong PHP. Cc lp hc phi l mt phn m rng ca lp ngoi l. Cc lp ngoi l ty chnh c tha hng ti sn t lp ngoi l ca PHP v bn c th thm cc chc nng ty chnh cho n. Cho php to ra mt lp ngoi l: <?php class customException extends Exception { public function errorMessage() { //error message $errorMsg = 'Error on line '.$this>getLine().' in '.$this->getFile() .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address'; return $errorMsg; } } $email = "someone@example...com"; try { //check if if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) Page 76 of 413

{ //throw exception if email is not valid throw new customException($email); } } catch (customException $e) { //display custom message echo $e->errorMessage(); } ?> Cc lp hc mi l mt bn sao ca lp ngoi l c vi mt s b sung chc nng ErrorMessage(). V n l mt bn sao ca lp c, v n c tha hng cc thuc tnh v phng php t lp c, chng ta c th s dng cc phng thc lp ngoi l nh getline() v getFile() v getMessage().

Example explained:
on m trn nm mt ngoi l v bt n vi mt lp ngoi l ty chnh: 1.Lp customException() c to ra nh l mt phn m rng ca lp ngoi l c. Bng cch ny, n c tha hng tt c cc phng php v cc thuc tnh t lp ngoi l c 2.Chc nng ErrorMessage() c to ra. Hm ny tr v mt thng bo li nu mt a ch e-mail khng hp l 3.Bin $email c thit lp mt chui khng phi l mt a ch e-mail hp l 4."Th" khi c thc hin v ngoi l c nm t a ch e-mail khng hp l 5.Khi "catch" bt nhng trng hp ngoi l v hin th cc thng bo li

Multiple Exceptions
N c th cho mt kch bn s dng nhiu trng hp ngoi l kim tra nhiu iu kin. C th s dng mt s nu .. khc khi, mt chuyn i, hoc nhiu trng hp ngoi l lm t. Nhng trng hp ngoi l ny c th s dng cc lp hc ngoi l khc nhau v tr li thng bo li khc nhau:

Page 77 of 413

<?php class customException extends Exception { public function errorMessage() { //error message $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile() .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address'; return $errorMsg; } } $email = "someone@example.com"; try { //check if if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) { //throw exception if email is not valid throw new customException($email); } //check for "example" in mail address if(strpos($email, "example") !== FALSE) { throw new Exception("$email is an example e-mail"); } } catch (customException $e) { echo $e->errorMessage(); } catch(Exception $e) { echo $e->getMessage(); } ?>

Example explained:

Page 78 of 413

on m trn kim tra hai iu kin v nm mt ngoi l nu c cc iu kin khng c p ng: 1. Lp customException () c to ra nh l mt phn m rng ca lp ngoi l c. Bng cch ny, n c tha hng tt c cc phng php v cc thuc tnh t lp ngoi l c 2. Chc nng ErrorMessage () c to ra. Hm ny tr v mt thng bo li nu mt a ch e-mail khng hp l 3. Bin $ email c thit lp mt chui l mt a ch e-mail hp l, nhng c cha chui "v d" 4. "Th" khi c thc hin v mt ngoi l c nm vo iu kin u tin 5. iu kin th hai gy ra mt ngoi l k t khi e-mail c cha chui "v d" 6. Khi "catch" bt nhng trng hp ngoi l v hin th cc thng bo li chnh xc Nu nm ngoi l ca customException lp v khng c bt customException, ch c ngoi l c s nh bt, mt ngoi l s c x l .

Re-throwing Exceptions
i khi, khi mt ngoi l c nm ra, bn c th mun x l n khc vi cch tiu chun. N c th nm mt ngoi l ln th hai trong vng mt khi "catch". Mt kch bn nn che giu li h thng t ngi dng. Li h thng c th quan trng i vi cc coder, nhng khng c ngi dng quan tm. lm cho mi vic d dng hn cho ngi s dng, bn c th nm li ngoi l vi mt thng ip thn thin vi ngi s dng:

Page 79 of 413

<?php class customException extends Exception { public function errorMessage() { //error message $errorMsg = $this->getMessage().' is not a valid E-Mail address.'; return $errorMsg; } } $email = "someone@example.com"; try { try { //check for "example" in mail address if(strpos($email, "example") !== FALSE) { //throw exception if email is not valid throw new Exception($email); } } catch(Exception $e) { //re-throw exception throw new customException($email); } } catch (customException $e) { //display custom message echo $e->errorMessage(); } ?>

Example explained:
on m trn bi kim tra nu a ch email c cha chui "v d" trong , nu c, cc trng hp ngoi l c li nm:

Page 80 of 413

1.Lp customException() c to ra nh l mt phn m rng ca lp ngoi l c. Bng cch ny, n c tha hng tt c cc phng php v cc thuc tnh t lp ngoi l c 2.Chc nng ErrorMessage() c to ra. Hm ny tr v mt thng bo li nu mt a ch e-mail khng hp l 3.Bin $email c thit lp mt chui l mt a ch e-mail hp l, nhng c cha chui "v d" 4."Th" khi cha mt "th" khi lm cho n c th nm ngoi l 5.Ngoi l ny c kch hot k t khi e-mail c cha chui "v d" 6.Khi "catch" bt ngoi l v li nm mt "customException" 7.B bt "customException" v hin th mt thng bo li Nu trng hp ngoi l khng c nh bt trong khi hin ti ca n "th", n s tm kim mt khi catch "cp cao hn".

Set a Top Level Exception Handler


set_exception_handler() chc nng thit lp mt chc nng ngi dng nh ngha x l tt c cc trng hp ngoi l uncaught. <?php function myException($exception) { echo "<b>Exception:</b> " , $exception->getMessage(); } set_exception_handler('myException'); throw new Exception('Uncaught Exception occurred'); ?> u ra ca cc m trn nn c mt ci g nh th ny: Exception: Uncaught Exception occurred Trong on m trn khng c block "catch". Thay vo , x l ngoi l cp cao nht kch hot. Chc nng ny nn c s dng bt ngoi l uncaught.

Quy tc cho trng hp ngoi l


M c th c bao bc trong mt khi th, gip bt ngoi l tim nng Mi khi try hoc "nm" phi c t nht mt khi catch tng ng Nhiu khi catch c th c s dng bt cc lp hc khc nhau ca cc trng hp

Page 81 of 413

ngoi l Trng hp ngoi l c th c nm (hoc ti nm) trong mt khi catch trong mt khi try Mt nguyn tc n gin: Nu bn nm mt ci g , bn phi nm bt n.

Chapter 26 : PHP Filter


PHP b lc c s dng xc nhn v lc d liu n t cc ngun khng an ton, ging nh u vo ngi s dng.

What is a PHP Filter?


Mt b lc PHP c s dng xc nhn v lc d liu n t cc ngun khng an ton. kim tra, xc nhn v lc u vo ngi dng hoc d liu ty chnh l mt phn quan trng ca bt k ng dng web. Phn m rng PHP b lc c thit k lc d liu d dng hn v nhanh hn.

Why use a Filter?


Hu nh tt c cc ng dng web ph thuc vo u vo bn ngoi. Thng thng, iu ny xut pht t mt ngi dng hoc mt ng dng khc (nh mt dch v web). Bng cch s dng b lc, bn c th chc chn rng ng dng ca bn c cc loi u vo chnh xc. Bn nn lun lun lc tt c d liu bn ngoi! u vo lc l mt trong nhng vn bo mt ng dng quan trng nht. D liu bn ngoi l g? -D liu u vo t biu mu -Cookies -Web dch v d liu -my ch cc bin -C s d liu kt qu truy vn

Functions and Filters

Page 82 of 413

lc mt bin, s dng mt trong cc chc nng lc sau y: -filter_var() - B lc mt bin duy nht vi mt b lc xc nh -filter_var_array() - B lc mt s bin vi cc b lc ging v khc nhau -filter_input - mt bin u vo v lc n -filter_input_array - Nhn mt s bin u vo v lc chng vi cc b lc ging v khc nhau Trong v d di y, chng ti xc nhn mt s nguyn bng cch s dng chc nng filter_var(): <?php $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("Integer is not valid"); } else { echo("Integer is valid"); } ?>

Chapter 27 : PHP MySQL


C s d liu MySQL min ph l rt thng c s dng vi PHP.

To mt kt ni n mt c s d liu MySQL
Trc khi bn c th truy cp d liu trong mt c s d liu, bn phi to ra mt kt ni n c s d liu. Trong PHP, iu ny c thc hin vi cc chc nng mysql_connect ().

C php
mysql_connect(servername,username,password);
Thng s servername Tn truy nhp M t Ty chn. Ch nh my ch kt ni vi. Gi tr mc nh l "localhost: 3306"

Ty chn. Ch nh tn ngi dng ng nhp vi. Gi tr mc nh l tn ca ngi s dn s hu qu trnh my ch

Page 83 of 413

mt khu

Ty chn. Ch nh mt khu ng nhp. Mc nh l ""

Lu : C thm nhiu thng s c sn, nhng nhng ngi c lit k trn l quan trng nht. y ca chng ti PHP MySQL tham kho bit thm chi tit.

V d
Trong v d sau chng ti lu tr cc kt ni trong mt bin ($ con) cho s dng sau ny trong kch bn. "Cht" mt phn s c thc hin nu kt ni khng thnh cng:

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } // some code ?>

Kt thc mt kt ni
Kt ni s c t ng ng khi kch bn kt thc. ng kt ni trc khi s dng mysql_close () chc nng:

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } // some code mysql_close($con); ?>

Mt c s d liu cha mt hoc nhiu bng.

To mt c s d liu
Cu lnh CREATE DATABASE c s dng to ra mt c s d liu trong MySQL.

C php
CREATE DATABASE database_name
tm hiu thm v SQL, vui lng truy cp ca chng ti hng dn SQL .

Page 84 of 413

c c PHP thc hin cc tuyn b trn, chng ta phi s dng hm mysql_query (). Chc nng ny c s dng gi mt truy vn hoc lnh kt ni MySQL.

V d
V d sau y to ra mt c s d liu gi l "my_db":

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; } else { echo "Error creating database: " . mysql_error(); } mysql_close($con); ?>

To mt bng
Cu lnh CREATE TABLE c s dng to ra mt bng trong MySQL.

C php
CREATE TABLE ( column_name1 column_name2 column_name3 .... ) table_name data_type, data_type, data_type,

tm hiu thm v SQL, vui lng truy cp ca chng ti hng dn SQL . Chng ta phi thm cc tuyn b CREATE TABLE mysql_query () chc nng thc hin lnh.

V d
V d sau y to ra mt bng c tn l "Ngi", vi ba ct. Cc tn ct s c "FirstName", "LastName" v "Age":

Page 85 of 413

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } // Create database if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; } else { echo "Error creating database: " . mysql_error(); } // Create table mysql_select_db("my_db", $con); $sql = "CREATE TABLE Persons ( FirstName varchar(15), LastName varchar(15), Age int )"; // Execute query mysql_query($sql,$con); mysql_close($con); ?>
Quan trng: Mt c s d liu phi c la chn trc khi mt bng c th c to ra. C s d liu c chn vi mysql_select_db () chc nng. Lu : Khi bn to ra mt lnh vc c s d liu kiu varchar, bn phi xc nh di ti a ca lnh vc ny, v d nh varchar (15). Cc kiu d liu xc nh kiu d liu ct c th gi. i vi mt ti liu tham kho y ca tt c cc loi d liu c sn trong MySQL, chng ti hon thnh ti liu tham kho kiu d liu .

Kha chnh v cc lnh vc Tng Auto


Mi bng cn phi c mt trng tiu hc trng im. Mt kha chnh c s dng xc nh cc hng trong mt bng. Mi gi tr kha chnh phi l duy nht trong bng. Hn na, cc trng tiu hc trng im khng c th l v gi tr v cc cng c c s d liu i hi phi c mt gi tr xc nh v tr cc bn ghi. V d sau y thit lp cc lnh vc PersonId nh cc lnh vc kha chnh. Cc lnh vc trng im chnh thng l mt s ID, v thng c s dng vi cc thit lp

Page 86 of 413

AUTO_INCREMENT. AUTO_INCREMENT t ng lm tng gi tr ca trng 1 mi ln mt k lc mi c thm vo. m bo rng cc trng tiu hc trng im khng th null, chng ta phi thm cc thit lp NOT NULL cho lnh vc ny.

V d
$sql = "CREATE TABLE Persons ( personID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(personID), FirstName varchar(15), LastName varchar(15), Age int )"; mysql_query($sql,$con);

Chn d liu vo mt bng c s d liu


INSERT INTO tuyn b c s dng thm cc bn ghi mi vo mt bng c s d liu.

C php
C th vit INSERT INTO tuyn b trong hai hnh thc. Cc hnh thc u tin khng xc nh cc ct d liu s c chn vo, ch c gi tr ca h:

INSERT INTO table_name VALUES (value1, value2, value3,...)


Hnh thc th hai quy nh c th c cc tn ct v cc gi tr s c chn vo:

INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
tm hiu thm v SQL, vui lng truy cp ca chng ti hng dn SQL . c c PHP thc hin bo co trn, chng ta phi s dng hm mysql_query (). Chc nng ny c s dng gi mt truy vn hoc lnh kt ni MySQL.

V d
Trong chng trc, chng ta to ra mt bng c tn l "Ngi", vi ba ct "FirstName", "LastName" v "Age".Chng ti s s dng cng mt bng trong v d ny. V d sau y cho bit thm hai k lc mi vo bng "Persons":

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con)

Page 87 of 413

{ die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Peter', 'Griffin',35)"); mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire',33)"); mysql_close($con); ?>

Chn d liu t form vo c s d liu


By gi chng ta s to ra mt hnh thc HTML c th c s dng thm cc h s mi bng "Ngi". y l hnh thc HTML:

<html> <body> <form action="insert.php" method="post"> Firstname: <input type="text" name="firstname"> Lastname: <input type="text" name="lastname"> Age: <input type="text" name="age"> <input type="submit"> </form> </body> </html>
Khi ngi dng nhp chut vo nt gi dng HTML trong v d trn, cc d liu mu c gi "insert.php". Cc tp tin "insert.php" kt ni vi mt c s d liu, v ly cc gi tr t hnh thc vi cc bin PHP _POST. Sau , mysql_query () chc nng thc hin cc INSERT INTO tuyn b, v mt k lc mi s c thm vo bng "Ngi". y l trang "insert.php":

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error());

Page 88 of 413

} mysql_select_db("my_db", $con); $sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "1 record added"; mysql_close($con); ?>

Chn d liu t mt bng c s d liu


Cu lnh SELECT c s dng chn d liu t mt c s d liu.

C php
SELECT column_name(s) FROM table_name
tm hiu thm v SQL, vui lng truy cp ca chng ti hng dn SQL . c c PHP thc hin cc tuyn b trn, chng ta phi s dng hm mysql_query (). Chc nng ny c s dng gi mt truy vn hoc lnh kt ni MySQL.

V d
V d sau y chn tt c cc d liu c lu tr trong bng "Ngi" (k t * chn tt c cc d liu trong bng):

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons"); while($row = mysql_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; }

Page 89 of 413

mysql_close($con); ?>
V d trn ca hng d liu tr v bi hm mysql_query () trong bin $ kt qu. Tip theo, chng ti s dng mysql_fetch_array () chc nng tr li hng u tin t recordset nh l mt mng. Mi cuc gi n mysql_fetch_array () tr li hng k tip trong recordset. Cc vng lp trong khi vng qua tt c cc bn ghi trong recordset. in gi tr ca mi hng, chng ti s dng bin $ row PHP ($ row ['FirstName'] v $ row ['LastName']). u ra ca cc m trn s l:

Peter Griffin Glenn Quagmire

Hin th cc kt qu trong mt bng HTML


V d sau y chn cc d liu tng t nh v d trn, nhng s hin th d liu trong mt bng HTML:

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons"); echo "<table border='1'> <tr> <th>Firstname</th> <th>Lastname</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['FirstName'] . "</td>"; echo "<td>" . $row['LastName'] . "</td>"; echo "</tr>"; } echo "</table>"; mysql_close($con); ?>
u ra ca cc m trn s l:

Page 90 of 413

FirstName Glenn Peter

Lastname Bai ly Tin mach ming

Mnh WHERE
Mnh WHERE c s dng trch xut ch nhng h s m thc hin mt tiu chun quy nh.

C php
SELECT column_name(s) FROM table_name WHERE column_name operator value
tm hiu thm v SQL, vui lng truy cp ca chng ti hng dn SQL . c c PHP thc hin cc tuyn b trn, chng ta phi s dng hm mysql_query (). Chc nng ny c s dng gi mt truy vn hoc lnh kt ni MySQL.

V d
V d sau y chn tt c cc hng t bng "Ngi" "FirstName = 'Peter'":

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons WHERE FirstName='Peter'"); while($row = mysql_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br>"; } ?>
u ra ca cc m trn s l:

Peter Griffin

ORDER BY T kha
ORDER BY t kha c s dng sp xp d liu trong mt recordset.

Page 91 of 413

ORDER BY loi t kha cc bn ghi trong th t tng dn theo mc nh. Nu bn mun sp xp cc bn ghi trong mt th t gim dn, bn c th s dng cc t kho DESC.

C php
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
tm hiu thm v SQL, vui lng truy cp ca chng ti hng dn SQL .

V d
V d sau y chn tt c cc d liu c lu tr trong bng "Ngi", v sp xp kt qu theo ct "Age":

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons ORDER BY age"); while($row = mysql_fetch_array($result)) { echo $row['FirstName']; echo " " . $row['LastName']; echo " " . $row['Age']; echo "<br>"; } mysql_close($con); ?>
u ra ca cc m trn s l:

Glenn Quagmire 33 Peter Griffin 35

Sp xp theo hai ct
N cng c th t do nhiu hn mt ct. Khi t hng theo nhiu hn mt ct, ct th hai ch c s dng nu cc gi tr trong ct u tin l bng nhau:

Page 92 of 413

SELECT column_name(s) FROM table_name ORDER BY column1, column2

Cp nht d liu trong mt c s d liu


Cu lnh UPDATE c s dng cp nht cc bn ghi hin c trong mt bng.

C php
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value
Lu : Ch mnh WHERE trong c php UPDATE. Mnh WHERE quy nh c th h s hoc h s cn c cp nht. Nu bn b qua mnh WHERE, tt c h s s c cp nht! tm hiu thm v SQL, vui lng truy cp ca chng ti hng dn SQL . c c PHP thc hin cc tuyn b trn, chng ta phi s dng hm mysql_query (). Chc nng ny c s dng gi mt truy vn hoc lnh kt ni MySQL.

V d
Trc , trong hng dn, chng ti to ra mt bng c tn l "Ngi". y l n trng nh th no: FirstName Peter Glenn LastName Tin mach ming Bai ly Tui 35 33

V d cp nht sau y mt s d liu trong bng "Persons":

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("UPDATE Persons SET Age=36 WHERE FirstName='Peter' AND LastName='Griffin'"); mysql_close($con); ?>
Sau khi cp nht, bng "Ngi" s nh th ny:

Page 93 of 413

FirstName Peter Glenn

LastName Tin mach ming Bai ly

Tui 36 33

Xa d liu trong c s d liu


DELETE FROM tuyn b c s dng xa cc bn ghi t mt bng c s d liu.

C php
DELETE FROM table_name WHERE some_column = some_value
Lu : Ch mnh WHERE trong c php DELETE. Mnh WHERE quy nh c th h s hoc h s c cn xa. Nu bn b qua mnh WHERE, tt c h s s b xa! tm hiu thm v SQL, vui lng truy cp ca chng ti hng dn SQL . c c PHP thc hin cc tuyn b trn, chng ta phi s dng hm mysql_query (). Chc nng ny c s dng gi mt truy vn hoc lnh kt ni MySQL.

V d
Nhn vo bng sau "Ngi": FirstName Peter Glenn LastName Tin mach ming Bai ly Tui 35 33

Cc v d sau y xa tt c cc bn ghi trong bng "Persons" LastName = 'Griffin:

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("DELETE FROM Persons WHERE LastName='Griffin'"); mysql_close($con); ?>
Sau khi xa, bng s nh th ny:

Page 94 of 413

FirstName Glenn

LastName Bai ly

Tui 33

To mt kt ni ODBC
Vi mt kt ni ODBC, bn c th kt ni vo c s d liu no, trn bt k my tnh no trong mng ca bn, min l c mt kt ni ODBC. y l cch to ra mt kt ni ODBC mt c s d liu MS Access: 1. 2. 3. 4. 5. 6. 7. 8. M biu tng Administrative Tools trong Control Panel ca bn. Double-click vo Data Sources (ODBC) biu tng bn trong. Chn tab System DSN . Nhp vo Thm trong tab System DSN. Chn Microsoft Access Driver . Nhp vo Finish. Trong mn hnh k tip, nhp vo Chn xc nh v tr cc c s d liu. Cung cp cho cc c s d liu Data Source Name (DSN) . Nhp vo OK .

Lu rng cu hnh ny c thc hin trn my tnh, ni trang web ca bn nm. Nu bn ang chy Internet Information Server (IIS) trn my tnh ca ring ca bn, hng dn trn s lm vic, nhng nu trang web ca bn nm trn mt my ch t xa, bn phi c quyn truy cp vt l vo my ch , hoc yu cu my ch web ca bn n thit lp mt DSN cho bn s dng.

Kt ni n mt ODBC
Odbc_connect () c s dng kt ni vi mt ngun d liu ODBC. Chc nng c bn thng s: ngun d liu tn, tn ngi dng, mt khu, v con tr mt kiu ty chn. Odbc_exec () chc nng c s dng thc thi mt cu lnh SQL.

V d
V d sau y to ra mt kt ni n mt DSN gi l northwind, khng c tn ngi dng v mt khu khng. Sau to ra mt cu lnh SQL v thc hin n:

$conn=odbc_connect('northwind','',''); $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql);

Ly h s
Chc nng odbc_fetch_row () c s dng tr li h s t tp kt qu. Chc nng ny tr v true nu n c th tr li hng, nu khng sai.

Page 95 of 413

Chc nng ny c hai tham s: nh danh kt qu ODBC v hng mt s ty chn:

odbc_fetch_row($rs)

Ly Fields t mc k lc
Chc nng odbc_result () c s dng c cc lnh vc t mc k lc. Chc nng ny c hai tham s: nh danh kt qu ODBC v mt s tn trng. Cc dng m di y tr v gi tr ca lnh vc u tin t cc h s:

$compname=odbc_result($rs,1);
Cc dng m di y tr v gi tr ca mt lnh vc c gi l "CompanyName":

$compname=odbc_result($rs,"CompanyName");

ng mt kt ni ODBC
Chc nng odbc_close () c s dng ng mt kt ni ODBC.

odbc_close($conn);

V d ODBC
V d sau y cho thy lm th no ln u tin to ra mt kt ni c s d liu, sau thit lp mt kt qu, v sau hin th cc d liu trong mt bng HTML.

<html> <body> <?php $conn=odbc_connect('northwind','',''); if (!$conn) {exit("Connection Failed: " . $conn);} $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql); if (!$rs) {exit("Error in SQL");} echo "<table><tr>"; echo "<th>Companyname</th>"; echo "<th>Contactname</th></tr>"; while (odbc_fetch_row($rs)) { $compname=odbc_result($rs,"CompanyName");

Page 96 of 413

$conname=odbc_result($rs,"ContactName"); echo "<tr><td>$compname</td>"; echo "<td>$conname</td></tr>"; } odbc_close($conn); echo "</table>"; ?> </body> </html>

Chapter 28 : PHP XML Expat Parser


Phn tch c php nc ngoi c xy dng trong lm cho n c th x l cc ti liu XML trong PHP.

XML l g?
XML c s dng m t d liu v tp trung vo d liu l g. Mt tp tin XML m t cu trc ca d liu. Trong XML, khng c th c nh ngha trc. Bn phi xc nh cc th ring ca mnh. Nu bn mun tm hiu thm v XML, vui lng truy cp ca chng ti hng dn XML .

Ngi nc ngoi l g?
c v cp nht - to ra v thao tc mt ti liu XML, bn s cn mt phn tch c php XML. C hai loi c bn ca phn tch c php XML:

Da trn cy phn tch c php: phn tch c php ny bin i mt ti liu XML vo mt cu trc cy. N phn tch ton b ti liu, v cung cp truy cp n cc yu t cy. v d nh Document Object Model (DOM) Phn tch c php da trn s kin: Xem mt ti liu XML nh l mt lot cc s kin. Khi mt s kin c th xy ra, n gi mt chc nng x l n

Cc phn tch c php nc ngoi l mt b phn tch da trn s kin.

Page 97 of 413

Da trn s kin phn tch c php tp trung vo ni dung ca cc ti liu XML, cu trc ca chng. Bi v iu ny, phn tch c php da trn s kin c th truy cp d liu nhanh hn so vi cc phn tch c php da trn cy. Nhn vo cc phn XML sau y:

<from>Jani</from>
Mt phn tch c php da trn s kin bo co XML trn l mt lot cc ba s kin:

Yu t: t Bt u CDATA phn gi tr: Jani ng yu t: t

V d XML trn cha tt c hnh thnh XML. Tuy nhin, v d ny l khng hp l XML, v khng c nh ngha kiu ti liu (DTD) lin kt vi n. Tuy nhin, iu ny lm cho khng c s khc bit khi s dng cc phn tch c php nc ngoi. Ngi nc ngoi l mt phn tch c php khng kim duyt, v b qua bt k cc DTD. L mt s kin, khng kim duyt phn tch c php XML, Ngi nc ngoi l nhanh chng v nh, v mt trn u hon ho cho cc ng dng web PHP. Lu : cc ti liu XML phi c hnh thnh hoc nc ngoi s to ra mt li.

Ci t
Cc chc nng phn tch c php XML Expat l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

Mt file XML
Cc tp tin XML di y s c s dng trong v d ca chng ti:

<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Khi to phn tch c php XML


Page 98 of 413

Chng ti mun khi to phn tch c php XML trong PHP, xc nh mt s x l cho cc s kin khc nhau XML, v sau phn tch cc tp tin XML.

V d
<?php //Initialize the XML parser $parser=xml_parser_create(); //Function to use at the start of an element function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br>"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } //Function to use at the end of an element function stop($parser,$element_name) { echo "<br>"; } //Function to use when finding character data function char($parser,$data) { echo $data; } //Specify element handler xml_set_element_handler($parser,"start","stop"); //Specify data handler xml_set_character_data_handler($parser,"char"); //Open XML file $fp=fopen("test.xml","r"); //Read data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d",

Page 99 of 413

xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //Free the XML parser xml_parser_free($parser); ?>


u ra ca cc m trn s l:

-- Note -To: Tove From: Jani Heading: Reminder Message: Don't forget me this weekend!
Lm th no n hot ng: 1. Khi to phn tch c php XML vi xml_parser_create () chc nng 2. To cc chc nng s dng vi cc x l s kin khc nhau 3. Thm xml_set_element_handler () chc nng xc nh c chc nng s c thc hin khi phn tch c php gp cc th m v ng 4. Thm xml_set_character_data_handler () chc nng xc nh cc chc nng s thc hin khi phn tch c php gp d liu k t 5. Phn tch cc tp tin "test.xml" vi xml_parse () chc nng 6. Trong trng hp c li, thm xml_error_string () chc nng chuyn i mt li XML vi mt m t vn bn 7. Gi xml_parser_free () chc nng gii phng b nh c cp pht bng xml_parser_create () chc nng

Thm nc ngoi PHP Parser


bit thm thng tin v cc chc nng nc ngoi PHP, hy truy cp ca chng ti tham kho PHP Parser XML.

Vic xy dng trong DOM phn tch c php lm cho n c th x l cc ti liu XML trong PHP.

DOM l g?
W3C DOM cung cp mt b tiu chun ca cc i tng cho ti liu HTML v XML, v mt giao din tiu chun cho vic truy cp v thao tc chng. W3C DOM c chia thnh cc phn khc nhau (Core, XML, HTML) v cc mc khc nhau (DOM Level 1/2 / 3): * Core DOM nh ngha mt tp hp cc i tng cho bt k ti liu c cu trc * XML DOM - nh ngha mt b tiu chun ca cc i tng cho cc ti liu XML * HTML DOM - nh ngha mt b tiu chun ca cc i tng cho cc ti liu HTML Nu bn mun tm hiu thm v DOM XML, vui lng truy cp ca chng ti hng dn XML DOM .

Page 100 of 413

XML Parsing
c v cp nht - to ra v thao tc mt ti liu XML, bn s cn mt phn tch c php XML. C hai loi c bn ca phn tch c php XML:

Da trn cy phn tch c php: phn tch c php ny bin i mt ti liu XML vo mt cu trc cy. N phn tch ton b ti liu, v cung cp truy cp n cc yu t cy Phn tch c php da trn s kin: Xem mt ti liu XML nh l mt lot cc s kin. Khi mt s kin c th xy ra, n gi mt chc nng x l n

Cc phn tch c php DOM l mt phn tch c php da trn cy. Nhn vo phn ti liu XML sau:

<?xml version="1.0" encoding="ISO-8859-1"?> <from>Jani</from>


XML DOM XML nhn thy trn l mt cu trc cy:

Level 1: XML Document Level 2: Root yu t: <from> Level 3: Tiu yu t: "Jani"

Ci t
DOM XML chc nng phn tch c php l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

Mt file XML
Cc tp tin XML di y s c s dng trong v d ca chng ti:

Page 101 of 413

<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Ti v u ra XML
Chng ti mun khi to phn tch c php XML, ti xml, v u ra n:

V d
<?php $xmlDoc = new DOMDocument(); $xmlDoc->load("note.xml"); print $xmlDoc->saveXML(); ?>
u ra ca cc m trn s l:

Tove Jani Reminder Don't forget me this weekend!


Nu bn chn "Xem m ngun" trong ca s trnh duyt, bn s thy m HTML sau:

<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
V d trn to ra mt DOMDocument i tng v ti XML t "note.xml" vo n. Sau , saveXML () chc nng t cc ti liu ni b XML thnh mt chui, v vy chng ti c th sn xut n.

Looping thng qua XML


Chng ti mun khi to phn tch c php XML, np XML, v vng lp thng qua tt c cc yu t ca phn t <note>:

V d
<?php $xmlDoc = new DOMDocument();

Page 102 of 413

$xmlDoc->load("note.xml"); $x = $xmlDoc->documentElement; foreach ($x->childNodes AS $item) { print $item->nodeName . " = " . $item->nodeValue . "<br>"; } ?>
u ra ca cc m trn s l:

#text = to = Tove #text = from = Jani #text = heading = Reminder #text = body = Don't forget me this weekend! #text =
Trong v d trn, bn thy rng c cc nt vn bn trng gia mi phn t. Khi XML to ra, n thng c mu trng khng gian gia cc nt. XML DOM phn tch c php x l cc yu t ny l ngi bnh thng, v nu bn khng nhn thc ca h, i khi h gy ra vn .

Nu bn mun tm hiu thm v XML DOM, vui lng truy cp ca chng ti hng dn XML DOM .

SimpleXML l g?
SimpleXML l mi trong PHP 5. l mt cch d dng nhn c cc thuc tnh ca mt nguyn t v vn bn, nu bn bit b tr cc ti liu XML. So vi DOM hoc phn tch c php nc ngoi, SimpleXML ch mt mt vi dng m c d liu vn bn t mt phn t. SimpleXML chuyn i cc ti liu XML vo mt i tng, nh th ny:

Elements - chuyn i cc thuc tnh duy nht ca cc i tng SimpleXMLElement. Khi c nhiu hn mt phn t mt mc , h ang t bn trong mt mng Thuc tnh - truy cp bng cch s dng mng kt hp, ni m ch mc tng ng vi tn thuc tnh Yu t d liu - d liu vn bn t cc yu t c chuyn i thnh chui. Nu mt phn t c nhiu hn mt nt vn bn, h s c sp xp theo th t chng c tm thy

Page 103 of 413

SimpleXML l nhanh chng v d dng s dng khi thc hin nhim v c bn nh:

c cc tp tin XML Nn d liu t chui XML Chnh sa cc nt vn bn hoc cc thuc tnh

Tuy nhin, khi i ph vi XML tin tin, nh khng gian tn, bn tt hn bng cch s dng cc phn tch c php nc ngoi hoc DOM XML.

Ci t
PHP 5.0, cc chc nng SimpleXML l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

S dng SimpleXML
Di y l mt tp tin XML:

<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
Chng ti mun sn xut cc tn phn t v d liu t tp tin XML trn. Di y l nhng vic cn lm: 1. 2. 3. 4. V d Ti cc tp tin XML Ly tn ca cc yu t u tin To mt vng lp m s kch hot trn mi nt con, s dng con ci () chc nng Sn xut cc tn phn t v d liu cho mi nt con

<?php $xml = simplexml_load_file("test.xml"); echo $xml->getName() . "<br>"; foreach($xml->children() as $child) { echo $child->getName() . ": " . $child . "<br>"; } ?>

Page 104 of 413

u ra ca cc m trn s l:

note to: Tove from: Jani heading: Reminder body: Don't forget me this weekend!

More PHP SimpleXML


bit thm thng tin v cc chc nng PHP SimpleXML, hy truy cp ca chng ti tham kho PHP SimpleXML.

Chapter 29 : Gii thiu AJAX


AJAX l v vic cp nht cc b phn ca mt trang web, m khng cn ti li ton b trang.

AJAX l g?
AJAX = Asynchronous JavaScript v XML. AJAX l mt k thut to ra cc trang web nhanh chng v nng ng. AJAX cho php cc trang web c cp nht khng ng b bng cch trao i mt lng nh d liu vi my ch ng sau hu trng. iu ny c ngha rng n c th cp nht cc phn ca mt trang web, m khng cn ti li ton b trang. Cc trang web c in, (m khng s dng AJAX) phi ti li ton b trang nu cc ni dung cn thay i. V d v cc ng dng bng cch s dng AJAX: Google Maps, Gmail, Youtube, v Facebook tab.

Lm th no AJAX Hot ng

Page 105 of 413

AJAX Da trn cc tiu chun Internet


AJAX da trn cc tiu chun internet, v s dng mt s kt hp ca:

i tng XMLHttpRequest (trao i d liu khng ng b vi mt my ch) JavaScript / DOM ( hin th / tng tc vi thng tin) CSS (kiu d liu) XML (thng c s dng nh l nh dng chuyn d liu)

Cc ng dng AJAX l trnh duyt v nn tng c lp!

Google Suggest
AJAX c thc hin ph bin vo nm 2005 bi Google, vi Google Suggest. Google Suggest ang s dng AJAX to ra mt giao din web rt nng ng: Khi bn bt u g vo hp tm kim ca Google, JavaScript mt gi cc k t vo mt my ch v my ch tr v mt danh sch gi .

Bt u S dng AJAX Hm nay

Page 106 of 413

Trong hng dn PHP ca chng ti, chng ti s chng minh lm th no AJAX c th cp nht cc phn ca mt trang web, m khng cn ti li ton b trang. Cc kch bn my ch s c vit bng PHP. Nu bn mun tm hiu thm v AJAX, hy truy cp ca chng ti hng dn AJAX .

AJAX PHP V d
V d sau y s chng minh lm th no mt trang web c th giao tip vi mt my ch web trong khi mt ngi s dng loi nhn vt trong mt lnh vc u vo:

V d
Start typing a name in the input field below:

First name: Suggestions:

V d Gii thch - Trang HTML


Khi ngi dng g mt k t trong lnh vc u vo trn, chc nng "showHint ()" c thc hin. Chc nng ny c kch hot bi s kin "onkeyup":

<html> <head> <script> function showHint(str) { if (str.length==0) { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText;

Page 107 of 413

} } xmlhttp.open("GET","gethint.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <p><b>Start typing a name in the input field below:</b></p> <form> First name: <input type="text" onkeyup="showHint(this.value)"> </form> <p>Suggestions: <span id="txtHint"></span></p> </body> </html>
M ngun gii thch: Nu trng u vo l rng (str.length == 0), chc nng xa ni dung gi ch txtHint ra khi chc nng. Nu trng u vo khng phi l trng rng, showHint () thc hin cc chc nng sau y:

To mt i tng XMLHttpRequest To ra cc chc nng c thc hin khi p ng my ch sn sng Gi yu cu vo mt tp tin trn my ch Ch rng mt tham s (q) c thm vo URL (vi ni dung ca lnh vc u vo)

File PHP
Cc trang web trn my ch c gi bi JavaScript trn l mt file PHP gi l "gethint.php". M ngun trong "gethint.php" kim tra mt lot cc tn, v tr v tn tng ng (s) cho trnh duyt:

<?php // Fill up array with names $a[]="Anna"; $a[]="Brittany"; $a[]="Cinderella"; $a[]="Diana"; $a[]="Eva"; $a[]="Fiona"; $a[]="Gunda"; $a[]="Hege"; $a[]="Inga"; $a[]="Johanna"; $a[]="Kitty"; $a[]="Linda"; $a[]="Nina";

Page 108 of 413

$a[]="Ophelia"; $a[]="Petunia"; $a[]="Amanda"; $a[]="Raquel"; $a[]="Cindy"; $a[]="Doris"; $a[]="Eve"; $a[]="Evita"; $a[]="Sunniva"; $a[]="Tove"; $a[]="Unni"; $a[]="Violet"; $a[]="Liza"; $a[]="Elizabeth"; $a[]="Ellen"; $a[]="Wenche"; $a[]="Vicky"; //get the q parameter from URL $q=$_GET["q"]; //lookup all hints from array if length of q>0 if (strlen($q) > 0) { $hint=""; for($i=0; $i<count($a); $i++) { if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) { if ($hint=="") { $hint=$a[$i]; } else { $hint=$hint." , ".$a[$i]; } } } } // Set output to "no suggestion" if no hint were found // or to the correct values if ($hint == "") { $response="no suggestion"; } else { $response=$hint; } //output the response echo $response; ?>

Page 109 of 413

Gii thch: Nu c bt k vn bn c gi t JavaScript (strlen ($ q)> 0), sau y xy ra: 1. Tm mt ci tn ph hp vi cc k t c gi t JavaScript 2. Nu khng ph hp c tm thy, thit lp cc chui phn ng " ngh khng" 3. Nu mt hoc nhiu tn ph hp c tm thy, thit lp cc chui phn ng cho tt c cc tn ny 4. p ng c gi n gi ch "txtHint"

AJAX C s d liu V d
V d sau y s chng minh lm th no mt trang web c th ly thng tin t mt c s d liu vi AJAX:

V d
Lois Griff in

Person info will be listed here...

V d Gii thch - C s d liu MySQL


Bng c s d liu chng ti s dng trong v d trn trng nh th ny: id 1 2 3 4 FirstName Peter Lois Ngi an ng chay tnh Glenn LastName Tin mach ming Tin mach ming Swanson Bai ly Tui 41 40 39 41 Qu hng Quahog Newport Quahog Quahog Vic Ch lam ru bia Piano Teacher Cnh sat vin Phi cng

V d Gii thch - Trang HTML


Khi ngi dng chn mt ngi s dng trong danh sch th xung trn, mt chc nng c gi l "showUser ()" c thc thi. Chc nng ny c kch hot bi s kin "onchange":

<html> <head> <script> function showUser(str) { if (str=="") { document.getElementById("txtHint").innerHTML="";

Page 110 of 413

return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","getuser.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <form> <select name="users" onchange="showUser(this.value)"> <option value="">Select a person:</option> <option value="1">Peter Griffin</option> <option value="2">Lois Griffin</option> <option value="3">Glenn Quagmire</option> <option value="4">Joseph Swanson</option> </select> </form> <br> <div id="txtHint"><b>Person info will be listed here.</b></div> </body> </html>
ShowUser () chc nng no sau y:

Kim tra nu mt ngi c chn To mt i tng XMLHttpRequest To ra cc chc nng c thc hin khi p ng my ch sn sng Gi yu cu vo mt tp tin trn my ch Ch rng mt tham s (q) c thm vo URL (vi ni dung ca danh sch th xung)

File PHP
Cc trang web trn my ch c gi bi JavaScript trn l mt file PHP gi l "getuser.php".

Page 111 of 413

M ngun trong "getuser.php" chy mt truy vn i vi mt c s d liu MySQL, v tr v kt qu trong mt bng HTML:

<?php $q=$_GET["q"]; $con = mysql_connect('localhost', 'peter', 'abc123'); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("ajax_demo", $con); $sql="SELECT * FROM user WHERE id = '".$q."'"; $result = mysql_query($sql); echo "<table border='1'> <tr> <th>Firstname</th> <th>Lastname</th> <th>Age</th> <th>Hometown</th> <th>Job</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['FirstName'] . "</td>"; echo "<td>" . $row['LastName'] . "</td>"; echo "<td>" . $row['Age'] . "</td>"; echo "<td>" . $row['Hometown'] . "</td>"; echo "<td>" . $row['Job'] . "</td>"; echo "</tr>"; } echo "</table>"; mysql_close($con); ?>
Gii thch: Khi truy vn c gi t JavaScript file PHP, sau y xy ra: 1. PHP m mt kt ni n mt my ch MySQL 2. Ngi c tm thy ng 3. Mt bng HTML c to ra, cha y d liu, v gi li cho gi ch "txtHint"

AJAX XML V d
V d sau y s chng minh lm th no mt trang web c th ly thng tin t mt file XML vi AJAX:

V d

Page 112 of 413

CD info will be listed here...

V d Gii thch - Trang HTML


Khi ngi dng chn mt a CD trong danh sch th xung trn, mt chc nng c gi l "showCD ()" c thc thi. Chc nng ny c kch hot bi s kin "onchange":

<html> <head> <script> function showCD(str) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","getcd.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <form> Select a CD: <select name="cds" onchange="showCD(this.value)"> <option value="">Select a CD:</option> <option value="Bob Dylan">Bob Dylan</option> <option value="Bonnie Tyler">Bonnie Tyler</option> <option value="Dolly Parton">Dolly Parton</option> </select> </form> <div id="txtHint"><b>CD info will be listed here...</b></div>

Page 113 of 413

</body> </html>
ShowCD () chc nng no sau y:

Kim tra xem nu a CD c chn To mt i tng XMLHttpRequest To ra cc chc nng c thc hin khi p ng my ch sn sng Gi yu cu vo mt tp tin trn my ch Ch rng mt tham s (q) c thm vo URL (vi ni dung ca danh sch th xung)

File PHP
Cc trang web trn my ch c gi bi JavaScript trn l mt file PHP gi l "getcd.php". Cc kch bn PHP ti mt ti liu XML, " cd_catalog.xml ", chy mt truy vn i vi cc tp tin XML, v tr v kt qu di dng HTML:

<?php $q=$_GET["q"]; $xmlDoc = new DOMDocument(); $xmlDoc->load("cd_catalog.xml"); $x=$xmlDoc->getElementsByTagName('ARTIST'); for ($i=0; $i<=$x->length-1; $i++) { //Process only element nodes if ($x->item($i)->nodeType==1) { if ($x->item($i)->childNodes->item(0)->nodeValue == $q) { $y=($x->item($i)->parentNode); } } } $cd=($y->childNodes); for ($i=0;$i<$cd->length;$i++) { //Process only element nodes if ($cd->item($i)->nodeType==1) { echo("<b>" . $cd->item($i)->nodeName . ":</b> "); echo($cd->item($i)->childNodes->item(0)->nodeValue); echo("<br>"); } } ?>

Page 114 of 413

Khi truy vn CD c gi t JavaScript trang PHP, sau y s xy ra: 1. PHP to ra mt i tng XML DOM 2. Tm tt c cc yu t <artist> ph hp vi tn c gi t JavaScript 3. u ra cc thng tin album (gi cho gi ch "txtHint")

AJAX Live Search


V d sau y s chng minh mt tm kim trc tip, ni bn s c c kt qu tm kim trong khi bn g. Live tm kim c nhiu li ch so vi tm kim truyn thng:

Kt qu c hin th khi bn g Thu hp kt qu nh bn tip tc g Nu kt qu tr nn qu hp, loi b cc k t nhn thy mt kt qu rng ln hn

Tm kim mt trang W3Schools trong lnh vc u vo di y:

Cc kt qu trong v d trn c tm thy trong mt tp tin XML ( links.xml ). lm v d ny nh v n gin, ch c su kt qu c sn.

V d Gii thch - Trang HTML


Khi ngi dng g mt k t trong lnh vc u vo trn, chc nng "showResult ()" c thc hin. Chc nng ny c kch hot bi s kin "onkeyup":

<html> <head> <script> function showResult(str) { if (str.length==0) { document.getElementById("livesearch").innerHTML=""; document.getElementById("livesearch").style.border="0px"; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function()

Page 115 of 413

{ if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("livesearch").innerHTML=xmlhttp.responseText; document.getElementById("livesearch").style.border="1px solid #A5ACB2"; } } xmlhttp.open("GET","livesearch.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <form> <input type="text" size="30" onkeyup="showResult(this.value)"> <div id="livesearch"></div> </form> </body> </html>
M ngun gii thch: Nu trng u vo l rng (str.length == 0), chc nng xa ni dung gi ch livesearch v thot khi chc nng. Nu trng u vo khng phi l trng rng, showResult () chc nng thc hin nhng iu sau y:

To mt i tng XMLHttpRequest To ra cc chc nng c thc hin khi p ng my ch sn sng Gi yu cu vo mt tp tin trn my ch Ch rng mt tham s (q) c thm vo URL (vi ni dung ca lnh vc u vo)

File PHP
Cc trang web trn my ch c gi bi JavaScript trn l mt file PHP gi l "livesearch.php". M ngun trong "livesearch.php" tm kim mt tp tin XML cho cc chc danh ph hp vi chui tm kim v tr v kt qu:

<?php $xmlDoc=new DOMDocument(); $xmlDoc->load("links.xml"); $x=$xmlDoc->getElementsByTagName('link');

Page 116 of 413

//get the q parameter from URL $q=$_GET["q"]; //lookup all links from the xml file if length of q>0 if (strlen($q)>0) { $hint=""; for($i=0; $i<($x->length); $i++) { $y=$x->item($i)->getElementsByTagName('title'); $z=$x->item($i)->getElementsByTagName('url'); if ($y->item(0)->nodeType==1) { //find a link matching the search text if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) { if ($hint=="") { $hint="<a href='" . $z->item(0)->childNodes->item(0)->nodeValue . "' target='_blank'>" . $y->item(0)->childNodes->item(0)->nodeValue . "</a>"; } else { $hint=$hint . "<br /><a href='" . $z->item(0)->childNodes->item(0)->nodeValue . "' target='_blank'>" . $y->item(0)->childNodes->item(0)->nodeValue . "</a>"; } } } } } // Set output to "no suggestion" if no hint were found // or to the correct values if ($hint=="") { $response="no suggestion"; } else { $response=$hint; } //output the response echo $response; ?>
Nu c bt k vn bn c gi t JavaScript (strlen ($ q)> 0), sau y s xy ra:

Ti mt tp tin XML vo mt i tng mi DOM XML Lp qua tt c cc yu t <title> tm thy kt qu ph hp t vn bn c gi t JavaScript

Page 117 of 413

Thit lp a ch chnh xc v tiu trong "phn ng" bin. Nu trn u nhiu hn mt c tm thy, tt c cc trn u c thm vo bin Nu khng ph hp c tm thy, bin phn ng c thit lp " ngh khng"

AJAX RSS Reader


V d sau y s chng minh mt trnh c RSS, RSS-ngun cp d liu c np vo mt trang web m khng cn np:

RSS-ngun cp d liu s c lit k y ...

V d Gii thch - Trang HTML


Khi ngi dng chn mt RSS-ngun cp d liu trong danh sch th xung trn, mt chc nng c gi l "showResult ()" c thc thi. Chc nng ny c kch hot bi s kin "onchange":

<html> <head> <script> function showRSS(str) { if (str.length==0) { document.getElementById("rssOutput").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("rssOutput").innerHTML=xmlhttp.responseText ; } } xmlhttp.open("GET","getrss.php?q="+str,true); xmlhttp.send(); } </script> </head> <body>

Page 118 of 413

<form> <select onchange="showRSS(this.value)"> <option value="">Select an RSS-feed:</option> <option value="Google">Google News</option> <option value="MSNBC">MSNBC News</option> </select> </form> <br> <div id="rssOutput">RSS-feed will be listed here...</div> </body> </html>
Cc showResult () chc nng no sau y:

Kim tra nu mt RSS-ngun cp d liu c chn To mt i tng XMLHttpRequest To ra cc chc nng c thc hin khi p ng my ch sn sng Gi yu cu vo mt tp tin trn my ch Ch rng mt tham s (q) c thm vo URL (vi ni dung ca danh sch th xung)

File PHP
Cc trang web trn my ch c gi bi JavaScript trn l mt tp tin PHP gi l "getrss.php":

<?php //get the q parameter from URL $q=$_GET["q"]; //find out which feed was selected if($q=="Google") { $xml=("http://news.google.com/news?ned=us&topic=h&output=rss"); } elseif($q=="MSNBC") { $xml=("http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml"); } $xmlDoc = new DOMDocument(); $xmlDoc->load($xml); //get elements from "<channel>" $channel=$xmlDoc->getElementsByTagName('channel')->item(0); $channel_title = $channel->getElementsByTagName('title') ->item(0)->childNodes->item(0)->nodeValue; $channel_link = $channel->getElementsByTagName('link') ->item(0)->childNodes->item(0)->nodeValue; $channel_desc = $channel->getElementsByTagName('description') ->item(0)->childNodes->item(0)->nodeValue;

Page 119 of 413

//output elements from "<channel>" echo("<p><a href='" . $channel_link . "'>" . $channel_title . "</a>"); echo("<br>"); echo($channel_desc . "</p>"); //get and output "<item>" elements $x=$xmlDoc->getElementsByTagName('item'); for ($i=0; $i<=2; $i++) { $item_title=$x->item($i)->getElementsByTagName('title') ->item(0)->childNodes->item(0)->nodeValue; $item_link=$x->item($i)->getElementsByTagName('link') ->item(0)->childNodes->item(0)->nodeValue; $item_desc=$x->item($i)->getElementsByTagName('description') ->item(0)->childNodes->item(0)->nodeValue; echo ("<p><a href='" . $item_link . "'>" . $item_title . "</a>"); echo ("<br>"); echo ($item_desc . "</p>"); } ?>
Khi mt yu cu cho mt ngun cp d liu RSS c gi t cc JavaScript, sau y s xy ra:

Kim tra thc n chn nui c la chn To mt i tng DOM XML mi Np ti liu RSS trong bin xml Trch xut v cc yu t u ra t cc yu t knh Trch xut v cc yu t u ra t cc yu t mc

V d sau y s chng minh mt cuc thm d m kt qu c hin th m khng cn np.

Bn c thch PHP v AJAX cho n nay?


C: No:

V d Gii thch - Trang HTML


Khi ngi dng chn mt ty chn trn, mt chc nng c gi l "getVote ()" c thc thi. Chc nng ny c kch hot bi s kin "onclick":

<html> <head> <script> function getVote(int) { if (window.XMLHttpRequest)

Page 120 of 413

{// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("poll").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","poll_vote.php?vote="+int,true); xmlhttp.send(); } </script> </head> <body> <div id="poll"> <h3>Do you like PHP and AJAX so far?</h3> <form> Yes: <input type="radio" name="vote" value="0" onclick="getVote(this.value)"> <br>No: <input type="radio" name="vote" value="1" onclick="getVote(this.value)"> </form> </div> </body> </html>
GetVote () chc nng no sau y:

To mt i tng XMLHttpRequest To ra cc chc nng c thc hin khi p ng my ch sn sng Gi yu cu vo mt tp tin trn my ch Ch rng mt tham s (vote) c thm vo URL (vi gi tr c hoc khng c ty chn)

File PHP
Cc trang web trn my ch c gi bi JavaScript trn l mt tp tin PHP gi l "poll_vote.php":

<?php $vote = $_REQUEST['vote'];

Page 121 of 413

//get content of textfile $filename = "poll_result.txt"; $content = file($filename); //put content in array $array = explode("||", $content[0]); $yes = $array[0]; $no = $array[1]; if ($vote == 0) { $yes = $yes + 1; } if ($vote == 1) { $no = $no + 1; } //insert votes to txt file $insertvote = $yes."||".$no; $fp = fopen($filename,"w"); fputs($fp,$insertvote); fclose($fp); ?> <h2>Result:</h2> <table> <tr> <td>Yes:</td> <td> <img src="poll.gif" width='<?php echo(100*round($yes/($no+$yes),2)); ?>' height='20'> <?php echo(100*round($yes/($no+$yes),2)); ?>% </td> </tr> <tr> <td>No:</td> <td> <img src="poll.gif" width='<?php echo(100*round($no/($no+$yes),2)); ?>' height='20'> <?php echo(100*round($no/($no+$yes),2)); ?>% </td> </tr> </table>
Gi tr c gi t JavaScript, v sau y xy ra: 1. 2. 3. 4. Ly ni dung ca tp tin "poll_result.txt" a ni dung ca cc tp tin trong cc bin v thm mt bin c chn Vit kt qu cc tp tin "poll_result.txt" Sn xut mt i din ha ca cc kt qu thm d kin

Page 122 of 413

Text File
Cc tp tin vn bn (poll_result.txt) l ni chng ti lu tr cc d liu t cc cuc thm d. N c lu tr nh th ny:

0||0
S u tin i din cho "Yes" phiu, s th hai i din cho phiu "Khng". Lu : nh cho php my ch web ca bn chnh sa cc tp tin vn bn. Cung cp cho truy cp tt c mi ngi, ch cn cc my ch web (PHP).

Chapter Ngoi : 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 v 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.
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, 4 username VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, level CHAR(1) NOT NULL, PRIMARY KEY(id)); 5 mysql>insert into user(username,password,level) values ("admin","12345","2") ("abc","12345","1");

Vy l chng ta c c s d liu nh m hnh trn. Tip n chng ta to file login.php v thit k Form HTML c mn hnh ng nhp khi ngi dng truy cp.

Page 123 of 413

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


01 <?php 02 if(isset($_POST['ok'])) 03 { 04 $u=$p=""; 05 if($_POST['username'] == NULL) 06 { 07 echo "Please enter your username<br />"; 08 } 09 else 10 { 11 $u=$_POST['username']; 12 } 13 if($_POST['password'] == NULL) 14 { 15 echo "Please enter your password<br />"; 16 } 17 else 18 { 19 $p=$_POST['password']; 20 } 21 } 22 ?>

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. V phin bn PHP 5.3 tr ln s yu cu ta khai bo bin trc khi s dng. V th mc nh ban u ta khi to 2 bin $u v $p mang gi tr l rng.

Page 124 of 413

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).
1 <?php $conn=mysql_connect("localhost","root","root") or die("can't connect 2 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).
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); $sql="select * from user where username='".$u."' and 06 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 16 session_start(); $_SESSION['userid'] = $row['id'];

17 $_SESSION['level'] = $row['level']; 18 } 19 } 20 ?>

Nh vy code hon chnh cho ng dng (file login.php) ny l nh sau:


01 <?php 02 if(isset($_POST['ok'])) 03 {

Page 125 of 413

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

Page 126 of 413

45 <input type='submit' name='ok' value='Dang Nhap' /> 46 </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.
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, ta to trang add_user.php v t on code trn, ng thi vit thm 1 form thc thi cng vic thm thnh vin.

Page 127 of 413

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 /> Re-Password: <input type='password' name='re-password' size='25' /><br 08 /> 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 khai bo 2 bin $u v $p, mc nh ban u ta cho 2 bin ny l rng. K ti ta 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)
01 <?php 02 if(isset($_POST['adduser'])) 03 { 04 $u=$p=""; 05 if($_POST['username'] == NULL) 06 { 07 echo "Vui long nhap username<br />"; 08 } 09 else 10 { 11 $u=$_POST['username']; 12 } 13 if($_POST['password'] != $_POST['re-password']) 14 { 15 echo "Password va re-password khong chinh xac<br />"; 16 }

Page 128 of 413

17 else 18 { 19 20 21 22 23 24 25 26 if($_POST['password'] == NULL ) { echo "Vui long nhap password<br />"; } else { $p=$_POST['password']; }

27 } 28 $l=$_POST['level']; 29 } 30 ?>

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.
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 15 16 17 } 18 } 19 ?> $sql2="insert into user(username,password,level) values('".$u."','".$p."','".$l."')"; $query2=mysql_query($sql2); echo "Da them thanh vien moi thanh cong";

Page 129 of 413

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.
01 <?php 02 session_start(); 03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2) 04 { 05 if(isset($_POST['adduser'])) 06 { 07 $u = $p =""; 08 if($_POST['username'] == NULL) 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 } $l=$_POST['level']; if($u & $p & $l) { $conn=mysql_connect("localhost","root","root") or die("can't connect this database"); mysql_select_db("project",$conn); $sql="select * from user where username='".$u."'"; $query=mysql_query($sql); if(mysql_num_rows($query) != "" ) { { echo "Vui long nhap username<br />"; } else { $u=$_POST['username']; } if($_POST['password'] != $_POST['re-password']) { echo "Password va re-password khong chinh xac<br />"; } else { if($_POST['password'] == NULL) { echo "Vui long nhap password<br />"; } else { $p=$_POST['password']; }

Page 130 of 413

40 41 42 43 44 45 46 47 48 49 } 50 } } }

echo "Username nay da ton tai roi<br />"; } else { $sql2="insert into user(username,password,level) values('".$u."','".$p."','".$l."')"; $query2=mysql_query($sql2); echo "Da them thanh vien moi thanh cong";

51 ?> 52 <form action='add_user.php' method='POST'> 53 Level: <select name='level'> 54 <option value='1'>Member</option> 55 <option value='2'>Admin </option> 56 </select><br /> 57 Username: <input type='text' name='username' size='25' /><br /> 58 Password: <input type='password' name='password' size='25' /> <br /> Re-Password: <input type='password' name='re-password' size='25' /><br /> 60 <input type='submit' name='adduser' value='Add New User' /> 59 61 </form> 62 <?php 63 } 64 else 65 { 66 header("location: login.php"); 67 exit(); 68 } 69 ?>

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 Page 131 of 413

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.
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.
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.


01 <?php 02 $conn=mysql_connect("localhost","root","root") or die("can't connect

Page 132 of 413

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 { echo "<tr><td colspan='5' align='center'>Chua co username 08 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:
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.

Page 133 of 413

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.
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 <? $conn=mysql_connect("localhost","root","root") or die("can't connect this database"); 16 mysql_select_db("project",$conn); 15 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 {

Page 134 of 413

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.

Page 135 of 413

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.
01 <?php 02 $sql="select * from user where id='".$id."'"; 03 $query=mysql_query($sql); 04 $row=mysql_fetch_array($query); 05 ?>

Page 136 of 413

06 <form action="edit_user.php?userid=<?=$id?>" method=post> 07 Level: <select name=level> <option value=1 <? if($row[level] == 1) echo "selected"; ?>) 08 >Member</option> <option value=2 <? if($row[level] == 2) echo "selected"; ?>>Administrator</option> 10 </select><br /> 09 Username: <input type=text name=user size=20 value="<?=$row[username]?>" /><br /> 12 Password: <input type=password name=pass size=20 /> <br /> 11 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.

Page 137 of 413

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:
01 <?php 02 if($_POST['pass'] != $_POST['repass']) 03 { 04 echo "Password and re-password is not correct"; 05 } 06 else 07 { 08 if($_POST['pass'] != NULL) 09 { 10 $p=$_POST['pass']; 11 } 12 } 13 ?>

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.

Page 138 of 413

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.
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 { $sql="update user set username='".$u."', level='".$l."' where id='".$id."'"; 14 mysql_query($sql); 13 15 16 17 } 18 } 19 ?> header("location:mana_user.php"); exit();

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:


01 <?php $conn=mysql_connect("localhost","root","root") or die("can't connect 02 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 }

Page 139 of 413

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 22 23 24 if($_POST['pass'] != NULL) { $p=$_POST['pass']; }

25 } 26 $l = $_POST['level']; 27 if($u && $p && $l ) 28 { $sql="update user set username='".$u."', password='".$p."', level='".$l."' where id='".$id."'"; 30 mysql_query($sql); 29 31 32 header("location:mana_user.php"); exit();

33 } 34 else 35 { 36 if($u && $l) 37 38 39 40 41 42 43 } 44 } 45 $sql="select * from user where id='".$id."'"; 46 $query=mysql_query($sql); 47 $row=mysql_fetch_array($query); 48 ?> 49 <form action="edit_user.php?userid=<?=$id?>" method=post> 50 Level: <select name=level> 51 <option value=1 <? if($row[level] == 1) echo "selected"; ?>) } { $sql="update user set username='".$u."', level='".$l."' where id='".$id."'"; mysql_query($sql); header("location:mana_user.php"); exit();

Page 140 of 413

>Member</option> <option value=2 <? if($row[level] == 2) echo "selected"; 52 ?>>Administrator</option> 53 </select><br /> Username: <input type=text name=user size=20 54 value="<?=$row[username]?>" /><br /> 55 Password: <input type=password name=pass size=20 /> <br /> 56 Re-password: <input type=password name=repass size=20 /><br /> 57 <input type=submit name=ok value="Edit User" /> 58 </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.


1 <?php $conn=mysql_connect("localhost","root","root") or die("can't connect 2 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:

Page 141 of 413

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:
01 <form action="form.php" method=post> 02 <table> 03 <tr> 04 <td align="left"> 05 06 07 08 09 10 11 12 <label for="captcha">Captcha</label> </td> <td> <input type="text" name="txtCaptcha" maxlength="10" size="32" /> </td> <td> <img src="random_image.php" /> </td>

13 </tr> 14 <tr> 15 16 <td> </td> <td>

Page 142 of 413

17 18

<input type=submit name=ok value="Check" /> </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.


1 <?php 2 $md5_hash = md5(rand(0,999)); 3 $security_code = substr($md5_hash, 15, 5); 4 $_SESSION["security_code"] = $security_code; 5 ?>

Page 143 of 413

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.


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 ?>

Page 144 of 413

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:
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.
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)

Page 145 of 413

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


01 <?php 02 session_start(); 03 if(isset($_POST['ok'])) 04 { 05 if($_POST['txtCaptcha'] == NULL) 06 { 07 echo "Please enter your code"; 08 } 09 else 10 { 11 12 13 14 15 16 17 18 19 } 20 } 21 ?> 22 <form action="form.php" method=post> 23 <table> 24 <tr> 25 26 27 28 29 30 31 32 <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" /> if($_POST['txtCaptcha'] == $_SESSION['security_code']) { echo "ma lenh hop le"; } else { echo "Ma lenh khong hop le"; }

33 </td> 34 </tr> 35 <tr> 36 <td> </td> 37 38 <td> <input type=submit name=ok value="Check" />

39 </td> 40 </tr> 41 </table>

Page 146 of 413

42 </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)
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 .

Page 147 of 413

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.
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.

Page 148 of 413

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


1 <?php $conn=mysql_connect("localhost","root","root") or die("can't 2 connect"); 3 mysql_select_db("online",$conn); 4 ?>

Sau ta tin hnh ghi nhn thng tin ngi dng vo CSDL.
1 <?php $sql="insert into useronline(tgtmp,ip,local) 2 values('$tg','$REMOTE_ADDR','$PHP_SELF')"; 3 $query=mysql_query($sql); 4 ?>

$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.
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.
1 <?php 2 $sql="SELECT DISTINCT ip FROM useronline WHERE local='$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.

Page 149 of 413

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


01 <?php 02 $tg=time(); 03 $tgout=900; 04 $tgnew=$tg - $tgout; $conn=mysql_connect("localhost","root","root") or die("can't connect"); 06 mysql_select_db("online",$conn); 05 $sql="insert into useronline(tgtmp,ip,local) values('$tg','$REMOTE_ADDR','$PHP_SELF')"; 08 $query=mysql_query($sql); 07 09 $sql="delete from useronline where tgtmp < $tgnew"; 10 $query=mysql_query($sql); 11 $sql="SELECT DISTINCT ip FROM useronline WHERE local='$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:


Page 150 of 413

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)


mysql> create table question(qid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 2 -> qtitle VARCHAR(255) NOT NULL, 1 3 -> qdate DATE NOT NULL DEFAULT '0000-00-00',

Page 151 of 413

4 -> PRIMARY KEY(qid));

Bng cu tr li (anwser)
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: 1 mysql> Insert into question(qtitle,qdate) values("Ban thay qhonline the nao ?"," 2 2009-10-10"); 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); 3 mysql> Insert into answer(qid,atitle,acount) values("1","Nhin Cung duoc",0); mysql> Insert into answer(qid,atitle,acount) values("1","Nhin qua 6 xau",0); 5

B- Xy dng trang bnh chn poll.php

Kt ni c s d liu:
1 <?php $conn=mysql_connect("localhost","root","root") or die("can not connect 2 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.
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];

Page 152 of 413

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)){ echo "<input type=radio name=answer value=$row2[aid]>$row2[atitle]<br />"; 16 } 15 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.

Page 153 of 413

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.
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.


01 <?php $conn=mysql_connect("localhost","root","root") or die("can not 02 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";

Page 154 of 413

22 $query2=mysql_query($sql2); 23 if(mysql_num_rows($query2) > 0) 24 { 25 while($row2=mysql_fetch_array($query2)){ echo "<input type=radio name=answer 26 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 .
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.

Page 155 of 413

1 <?php $sql2="select qid, SUM(acount) as total from answer group by qid 2 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 lt bnh chn 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. V d cu 1 l: (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:


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] : 08 $row3[acount] ($percent %)</h4>"; 09 }

Page 156 of 413

10 } 11 ?>

Kt qu khi xut ra s c hnh nh sau:

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


01 <?php $conn=mysql_connect("localhost","root","root") or die("can not 02 connect database"); 03 mysql_select_db("poll_exam",$conn); 04 if(isset($_GET['questionid'])) 05 { 06 $qid=$_GET['questionid']; 07 $sql="select * from question where qid='".$qid."'"; 08 $query=mysql_query($sql); 09 $row=mysql_fetch_array($query); 10 echo "<h2>$row[qtitle]</h2>"; $sql2="select qid, SUM(acount) as total from answer group by qid having qid='".$qid."'"; 12 $query2=mysql_query($sql2); 11 13 $row2=mysql_fetch_array($query2); 14 $total=$row2[total]; 15 $sql3="select * from answer where qid='".$qid."' order by aid"; 16 $query3=mysql_query($sql3); 17 if(mysql_num_rows($query3) > 0){ 18 while($row3=mysql_fetch_array($query3)){ 19 $percent=round(($row3[acount]/$total)*100,2); echo "<h4 style='color:red; font:12px verdana; '>$row3[atitle] : 20 $row3[acount] ($percent %)</h4>";

Page 157 of 413

21 } 22 } 23 } 24 ?>

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).
1 CREATE TABLE `images` ( 2 `img_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 3 `img_url` VARCHAR( 255 ) NOT NULL , `img_name` VARCHAR( 150 ) NOT 4 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:
1 <form action="upload.php" method="post"> Enter your Image: <input type="text" name="txtnum" value="<?php echo 2 $_POST['txtnum']; ?>" size="10" />

Page 158 of 413

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).
01 <?php 02 if(isset($_POST['ok_num'])) 03 { 04 05 06 07 $num=$_POST['txtnum']; echo "<hr />"; echo "Ban dang chon $num file upload<br />";

echo "<form action='doupload.php?file=$num' method='post' enctype='multipart/form-data'>"; 08 for($i=1; $i <= $num; $i++) 09 10 11 { echo "<input type='file' name='img[]' /><br />";

} echo "<input type='submit' name='ok_upload' 12 value='Upload' />"; 13 14 } 15 ?> echo "</form>";

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).

Page 159 of 413

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


01 <form action="upload.php" method="post"> Enter your Image: <input type="text" name="txtnum" value="<?php echo 02 $_POST['txtnum']; ?>" size="10" /> 03 <input type="submit" name="ok_num" value="Accept" /> 04 </form> 05 <?php 06 if(isset($_POST['ok_num'])) 07 { 08 09 10 11 $num=$_POST['txtnum']; echo "<hr />"; echo "Ban dang chon $num file upload<br />";

echo "<form action='doupload.php?file=$num' method='post' enctype='multipart/form-data'>"; 12 for($i=1; $i <= $num; $i++) 13 14 15 { echo "<input type='file' name='img[]' /><br />";

} echo "<input type='submit' name='ok_upload' 16 value='Upload' />"; 17 18 } 19 ?> echo "</form>";

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.
01 <<?php 02 if(isset($_POST['ok_upload'])) 03 { 04 05 } 06 else //thc thi upload

Page 160 of 413

07 { 08 09 } 10 ?>

echo "Vui long chon hinh truoc khi truy cap vao trang nay";

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:
1 <?php 2 for($i=0; $i< $num; $i++) 3 { move_uploaded_file($_FILES['img']['tmp_name'][$i],"data/".$_FILES['im 4 g']['name'][$i]); 5 $url="data/".$_FILES['img']['name'][$i]; 6 $name=$_FILES['img']['name'][$i]; 7} 8 ?>

Page 161 of 413

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).
1 <?php $conn=mysql_connect("localhost","root","root") or die("can't connect 2 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:
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.

Page 162 of 413

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


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>"; $conn=mysql_connect("localhost","root","root") or die("can't connect your database"); 08 mysql_select_db("images",$conn); 07 09 for($i=0; $i< $num; $i++) 10 { 1 move_uploaded_file($_FILES['img']['tmp_name'][$i],"data/".$_FILES[' 1 img']['name'][$i]); 12 $url="data/".$_FILES['img']['name'][$i]; 13 14 15 16 17 18 $name=$_FILES['img']['name'][$i]; $sql="insert into images(img_url,img_name) values('$url','$name')"; mysql_query($sql); echo "Upload Thanh cong file <b>$name</b><br />"; echo "<img src='$url' width='120' /><br />"; echo "Images URL: <input type='text' name='link' value='$site/$url'

Page 163 of 413

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 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)
1 CREATE TABLE `books` ( 2 `id` int(10) unsigned NOT NULL auto_increment, 3 4 5 6 7 ); `title` varchar(255) NOT NULL, `author` varchar(100) NOT NULL, `price` int(30) NOT NULL, PRIMARY KEY (`id`)

Page 164 of 413

trn l mt bng lu thng tin ca cc quyn sch vi tn, tc gi, gi tin ca cc quyn sch.
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


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).
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:


01 <?php 02 $sql="select * from books order by id desc";

Page 165 of 413

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>"; echo "Tac Gia: $row[author] - Gia: ".number_format($row[price],3)." 10 VND<br />"; echo "<p align='right'><a href='addcart.php?item=$row[id]'>Mua Sach Nay</a></p>"; 12 echo "</div>"; 11 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)

Page 166 of 413

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.php ny s nh sau:
01 <?php 02 session_start(); 03 $id=$_GET['item']; 04 if(isset($_SESSION['cart'][$id])) 05 { 06 $qty = $_SESSION['cart'][$id] + 1; 07 } 08 else 09 { 10 $qty=1; 11 } 12 $_SESSION['cart'][$id]=$qty; 13 header("location:cart.php"); 14 exit(); 15 ?>

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.

Page 167 of 413

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.
01 <?php 02 $ok=1; 03 if(isset($_SESSION['cart'])) 04 { 05 06 07 08 09 10 11 } 12 } 13 if ($ok != 2) 14 { 15 echo '<p>Ban khong co mon hang nao trong gio hang</p>'; 16 } else { 17 $items = $_SESSION['cart']; echo '<p>Ban dang co <a href="cart.php">'.count($items).' mon hang 18 trong gio hang</a></p>'; 19 } 20 ?> foreach($_SESSION['cart'] as $k=>$v) { if(isset($k)) { $ok=2; }

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:
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>

Page 168 of 413

10 <h1>Demo Shopping Cart</h1> 11 <div id='cart'> 12 <?php 13 $ok=1; 14 if(isset($_SESSION['cart'])) 15 { 16 foreach($_SESSION['cart'] as $k=>$v) 17 18 19 20 21 22 } { if(isset($v)) { $ok=2; }

23 } 24 if ($ok != 2) 25 26 { echo '<p>Ban khong co mon hang nao trong gio hang</p>';

27 } else { 28 $items = $_SESSION['cart']; echo '<p>Ban dang co <a href="cart.php">'.count($items).' mon hang trong gio hang</a></p>'; 30 } 29 31 ?> 32 </div> 33 <?php 34 $connect=mysql_connect("localhost","root","root") 35 or die("Can not connect database"); 36 mysql_select_db("shop",$connect); 37 $sql="select * from books order by id desc"; 38 $query=mysql_query($sql); 39 if(mysql_num_rows($query) > 0) 40 { 41 while($row=mysql_fetch_array($query)) 42 { 43 44 45 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 46 Nay</a></p>"; 47 echo "</div>"; 48 } 49 }

Page 169 of 413

50 51 ?> 52 </body> 53 </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.

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

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().
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:
1 <?php 2 $sql="select * from books where id in ('$str') order by id desc";

Page 170 of 413

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.
1 <?php echo "<p align='right'>So Luong: <input type='text' 2 name='qty[$row[id]]' size='5' 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.
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']).
1 <?php echo "<p align='right'> Gia tien cho mon hang: ". 2 number_format($_SESSION['cart'][$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.
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.


1 <?php echo "<b>Tong tien cho cac mon hang: <font color='red'>". 2 number_format($total,3)." 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.
1 <?php echo "<input type='submit' name='submit' value='Cap Nhat Gio Hang' 2 />";

Page 171 of 413

3 echo "<div class='pro' align='center'>"; echo "<b><a href='index.php'>Mua Sach Tiep</a> - <a 4 href='delcart.php?productid=0'>Xoa Bo Gio Hang</a></b>"; 5 ?>

Nh vy, code y s l:
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); $connect=mysql_connect("localhost","root","root") or die("Can not 08 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>"; echo "Tac gia: $row[author] - Gia: ".number_format($row[price],3)." 16 VND<br />"; echo "<p align='right'>So Luong: <input type='text' 17 name='qty[$row[id]]' size='5' value='{$_SESSION['cart'][$row[id]]}'> - "; echo "<a href='delcart.php?productid=$row[id]'>Xoa Sach 18 Nay</a></p>"; echo "<p align='right'> Gia tien cho mon hang: ". number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND</p>"; 20 echo "</div>"; 19 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'>". 24 number_format($total,3)." VND</font></b>"; 25 echo "</div>"; echo "<input type='submit' name='submit' value='Cap Nhat Gio Hang' 26 />"; 27 echo "<div class='pro' align='center'>"; echo "<b><a href='index.php'>Mua Sach Tiep</a> - <a 28 href='delcart.php?productid=0'>Xoa Bo Gio Hang</a></b>"; 29 echo "</div>"; 30 ?>

Page 172 of 413

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.
01 <?php 02 $ok=1; 03 if(isset($_SESSION['cart'])) 04 { 05 foreach($_SESSION['cart'] as $k => $v) 06 { 07 if(isset($k))

Page 173 of 413

08 09 10 11 } 12 }

{ $ok=2; }

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.
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 09 10 11 12 { unset ($_SESSION['cart'][$key]); } elseif(($value > 0) and (is_numeric($value))) { $_SESSION['cart'][$key]=$value;

13 } 14 } 15 header("location:cart.php"); 16 } 17 ?>

Page 174 of 413

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:
01 <?php 02 session_start(); 03 if(isset($_POST['submit'])) 04 { 05 foreach($_POST['qty'] as $key=>$value) 06 { 07 08 09 10 11 12 13 14 if( ($value == 0) and (is_numeric($value))) { unset ($_SESSION['cart'][$key]); } elseif(($value > 0) and (is_numeric($value))) { $_SESSION['cart'][$key]=$value; }

15 } 16 header("location:cart.php"); 17 } 18 ?> 19 <html> 20 <head> 21 <title>Demo Shopping Cart - Created By My Kenny</title> 22 <link rel="stylesheet" href="style.css" /> 23 </head> 24 <body> 25 <h1>Demo Shopping Cart</h1> 26 <? 27 $ok=1; 28 if(isset($_SESSION['cart'])) 29 { 30 foreach($_SESSION['cart'] as $k => $v) 31 { 32 if(isset($k)) 33 34 { $ok=2;

35 } 36 } 37 } 38 if($ok == 2)

Page 175 of 413

39 { 40 41 42 43 44 45 46 47 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"); 48 mysql_select_db("shop",$connect); 49 50 51 52 53 54 55 $sql="select * from books where id in ($str)"; $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' 56 name='qty[$row[id]]' size='5' value='{$_SESSION['cart'][$row[id]]}'> - "; echo "<a href='delcart.php?productid=$row[id]'>Xoa Sach Nay</a></p>"; echo "<p align='right'> Gia tien cho mon hang: ". 58 number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND</p>"; 57 59 60 61 62 63 echo "</div>"; $total+=$_SESSION['cart'][$row[id]]*$row[price]; } echo "<div class='pro' align='right'>";

echo "<b>Tong tien cho cac mon hang: <font color='red'>". number_format($total,3)." VND</font></b>"; 64 echo "</div>"; echo "<input type='submit' name='submit' value='Cap Nhat Gio Hang'>"; 66 echo "<div class='pro' align='center'>"; 65 echo "<b><a href='index.php'>Mua Sach Tiep</a> - <a href='delcart.php?productid=0'>Xoa Bo Gio Hang</a></b>"; 68 echo "</div>"; 67 69 } 70 else 71 { 72 echo "<div class='pro'>"; 73 echo "<p align='center'>Ban khong co mon hang nao trong gio hang<br /><a href='index.php'>Buy Ebook</a></p>";

Page 176 of 413

74 75 } 76 ?>

echo "</div>";

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:
01 <?php 02 session_start(); 03 $cart=$_SESSION['cart']; 04 $id=$_GET['productid']; 05 if($id == 0) 06 { 07 unset($_SESSION['cart']); 08 } 09 else 10 { 11 unset($_SESSION['cart'][$id]); 12 } 13 header("location:cart.php"); 14 exit(); 15 ?>

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.

Page 177 of 413

Chapter 30 : Cc hm
PHP 5 mng chc nng
Cc mng chc nng PHP l mt phn ca li PHP. Khng cn ci t s dng cc chc nng ny. Chc nng array () array_change_key_case () array_chunk () array_combine () M t To ra mt mng Thay i tt c cc phm trong mt mng ch thng hoc ch hoa Chia mt mng thnh nhiu phn ca mng

To ra mt mng bng cch s dng cc yu t t mt mng "cha kha" v m mng "gi tr" Tr v mt mng vi s ln xut hin cho mi gi tr So snh gi tr mng, v tr v s khc bit So snh mng v gi tr, v tr li s khc bit So snh trong mng, v tr li s khc bit

array_count_values () array_diff () array_diff_assoc () array_diff_key () array_diff_uassoc ()

So snh mng v gi tr, vi mt kim tra chc nng b sung ngi dng to, v tr li s khc bit

array_diff_ukey ()

So snh cc kha mng, vi mt kim tra chc nng b sung ngi dng to, v tr li s khc bit in vo mt mng vi gi tr in vo mt mng vi gi tr, ch nh phm

array_fill () array_fill_keys () array_filter ()

B lc cc yu t ca mt mng bng cch s dng mt chc nng ngi dng to ra Trao i tt c cc phm vi cc gi tr lin quan ca h trong mt mng So snh gi tr mng, v tr v cc trn u So snh mng v gi tr, v tr v cc trn u So snh trong mng, v tr v cc trn u

array_flip () array_intersect () array_intersect_assoc () array_intersect_key ()

Page 178 of 413

array_intersect_uassoc ()

So snh mng v gi tr, vi mt kim tra chc nng b sung ngi dng to, v tr v cc trn u

array_intersect_ukey ()

So snh cc kha mng, vi mt kim tra chc nng b sung ngi dng to, v tr v cc trn u Kim tra nu phm quy nh tn ti trong mng Tr v tt c cc phm ca mt mng

array_key_exists () array_keys () array_map ()

Gi mi gi tr ca mt mng mt chc nng ngi s dng thc hin, trong tr v cc gi tr mi Kt hp mt hoc nhiu mng thnh mt mng Kt hp mt hoc nhiu mng thnh mt mng Sp xp nhiu hoc mng a chiu Chn mt s quy nh ca cc mc, vi mt gi tr ch nh, vo mt mng Xa phn t cui cng ca mng Tnh sn phm ca cc gi tr trong mt mng Chn mt hoc nhiu yu t kt thc ca mt mng Tr v mt hoc nhiu phm ngu nhin t mt mng

array_merge () array_merge_recursive () array_multisort () array_pad () array_pop () array_product () array_push () array_rand () array_reduce ()

Tr v mt mng nh mt chui, bng cch s dng mt chc nng ngi dng nh ngha Thay th cc yu t t mng thng qua vo mng u tin Thay th cc yu t t cc mng thng qua vo mng u tin quy Tr v mt mng theo th t o ngc Tm kim mt mng cho mt gi tr nht nh v tr li cha kha

array_replace () array_replace_recursive () array_reverse () array_search () array_shift () array_slice () array_splice () array_sum () array_udiff ()

Loi b cc yu t u tin t mt mng v tr v gi tr ca phn t b loi b Tr v la chn cc b phn ca mt mng Loi b v thay th cc yu t quy nh ca mt mng Tr v tng cc gi tr trong mt mng

So snh cc gi tr mng trong mt chc nng ngi s dng to v tr v mt mng

array_udiff_assoc ()

So snh cc kha mng, so snh gi tr mng trong mt chc nng ngi dng to, v tr v mt mng

Page 179 of 413

array_udiff_uassoc ()

So snh mng v gi tr mng trong cc chc nng do ngi s dng to ra, v tr v mt mng

array_uintersect ()

So snh cc gi tr mng trong mt chc nng ngi s dng to v tr v mt mng

array_uintersect_assoc ()

So snh cc kha mng, so snh gi tr mng trong mt chc nng ngi dng to, v tr v mt mng

array_uintersect_uassoc ()

So snh mng v gi tr mng trong cc chc nng do ngi s dng to ra, v tr v mt mng Loi b cc gi tr nhn bn t mt mng Thm mt hoc nhiu yu t bt u ca mt mng Tr v tt c cc gi tr ca mt mng p dng mt chc nng ngi s dng tt c cc thnh vin ca mt mng p dng mt chc nng ngi dng quy tt c cc thnh vin ca mt mng Sp xp mt mng kt hp th t gim dn theo gi tr Sp xp mt mng kt hp theo th t tng dn theo gi tr To ra cc bin mng c cha v cc gi tr ca h Tr v s phn t trong mt mng Tr v phn t hin ti trong mt mng Tr v cc kha hin ti v cp gi tr t mt mng t con tr ni b ca mt mng phn t cui cng ca n Nhp khu cc bin vo bng biu tng hin ti t mt mng Kim tra nu mt gi tr c ch nh tn ti trong mt mng Ly mt cha kha t mt mng Sp xp mt mng kt hp th t gim dn, theo cha kha Sp xp mt mng kt hp trong th t tng dn, theo cha kha Gn bin nh th h l mt mng Sp xp mt mng bng cch s dng mt trng hp insensitive "trt t t nhin" thut ton Sp xp mt mng bng cch s dng mt thut ton "trt t t nhin"

array_unique () array_unshift () array_values () array_walk () array_walk_recursive ()

arsort () asort () compact () count () current () each () end () extract () in_array () key () krsort () ksort () list () natcasesort ()

natsort ()

Page 180 of 413

next () pos () prev () range () reset () rsort () shuffle () sizeof () sort () uasort ()

Trc con tr mng ni b ca mt mng B danh hin nay () Tua li con tr mng ni b To ra mt mng c cha mt lot cc yu t t con tr ni b ca mt mng phn t u tin ca n Sp xp mt mng lp ch mc th t gim dn Shuffles mt mng B danh ca count () Sp xp mt mng lp ch mc theo th t tng dn

Sp xp mt mng gi tr bng cch s dng ngi dng xc nh chc nng so snh

uksort ()

Sp xp mt mng cc phm bng cch s dng ngi dng xc nh chc nng so snh Sp xp mt mng bng cch s dng ngi dng xc nh chc nng so snh

usort ()

PHP Lch Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng cal_days_in_month () cal_from_jd () cal_info () cal_to_jd () easter_date () M t Tr v s ngy trong mt thng cho mt nm quy nh v lch Chuyn i mt s ngy Julian thnh mt ngy lch quy nh Tr v thng tin v mt lch nht nh Chuyn i mt ngy m Julian ngy Tr v du thi gian Unix na m ngy l Phc sinh ca mt nm quy nh Tr v s ngy sau ngy 21 thng ba, L Phc Sinh ri cho mt nm quy nh Chuyn i mt ngy ca ng Cng ha Php mt s ngy Julian Chuyn i mt ngy Gregorian mt s ngy Julian Tr v ngy mt tun

PH 4 4 4 4 3

easter_days ()

FrenchToJD () GregorianToJD () JDDayOfWeek ()

3 3 3

Page 181 of 413

JDMonthName () JDToFrench () JDToGregorian () jdtojewish () JDToJulian () jdtounix () JewishToJD () JulianToJD () unixtojd ()

Tr v mt tn thng Chuyn i mt s ngy Julian n mt ngy ng Cng ha Php Chuyn i mt s ngy Julian n mt ngy dng lch Chuyn i mt s ngy Julian n mt ngy ngi Do Thi Chuyn i mt s ngy Julian n mt ngy Julian Chuyn i mt s ngy Julian mt du thi gian Unix Chuyn i mt ngy ca ngi Do Thi mt s ngy Julian Chuyn i mt ngy Julian mt s ngy Julian Chuyn i mt du thi gian Unix mt s ngy Julian

3 3 3 3 3 4 3 3 4

PHP Lch hng s


PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc CAL_GREGORIAN CAL_JULIAN CAL_JEWISH CAL_FRENCH CAL_NUM_CALS CAL_DOW_DAYNO CAL_DOW_SHORT CAL_DOW_LONG CAL_MONTH_GREGORIAN_SHORT CAL_MONTH_GREGORIAN_LONG CAL_MONTH_JULIAN_SHORT CAL_MONTH_JULIAN_LONG CAL_MONTH_JEWISH CAL_MONTH_FRENCH M t Lch Gregory Lch Julian Do Thi lch Cng ha lch Php

PH 3 3 3 3 3 3 3 3 3 3 3 3 3 3

Page 182 of 413

CAL_EASTER_DEFAULT CAL_EASTER_ROMAN CAL_EASTER_ALWAYS_GREGORIAN CAL_EASTER_ALWAYS_JULIAN CAL_JEWISH_ADD_ALAFIM_GERESH CAL_JEWISH_ADD_ALAFIM CAL_JEWISH_ADD_GERESHAYIM

4 4 4 4 5 5 5

Thi gian chy cu hnh


Cc hnh vi ca cc chc nng ngy / thi gian b nh hng bi cc thit lp trong php.ini. Ngy / Thi gian ty chn cu hnh: Tn date.default_latitude Mc nh "31,7667" M t Ch nh v mc nh (c sn t PHP 5).Ty chn ny c s dng bi date_sunrise () v date_sunset () Ch nh kinh mc nh (c sn t PHP 5).Ty chn ny c s dng bi date_sunrise () v date_sunset () Ch nh nh cao ca mt tri mc mc nh (c sn t PHP 5). Ty chn ny c s dng bi date_sunrise () v date_sunset () Ch nh mc nh hong hn nh cao (c sn t PHP 5). Ty chn ny c s dng bi date_sunrise () v date_sunset () Ch nh mi gi mc nh (c sn t PHP 5.1) Thay i PHP_INI_ALL

date.default_longitude "35,2333"

PHP_INI_ALL

date.sunrise_zenith

"90,83"

PHP_INI_ALL

date.sunset_zenith

"90,83"

PHP_INI_ALL

date.timezone

""

PHP_INI_ALL

PHP Ngy / Gi Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng checkdate () date_default_timezone_get () M t Xc nhn mt ngy dng lch Tr v mi gi mc nh

PH 3 5

Page 183 of 413

date_default_timezone_set () date_sunrise () date_sunset () date () getdate ()

Thit lp mi gi mc nh Tr v thi gian mt tri mc cho mt ngy nht nh / v tr Tr v thi gian ca hong hn cho mt ngy nht / v tr nh dng thi gian a phng / ngy Tr v mt mng cha thng tin ngy thng v thi gian cho mt du thi gian Unix Tr v mt mng cha thng tin thi gian hin ti nh dng mt ngy / gi GMT / UTC Tr v du thi gian Unix cho mt ngy GMT nh dng mt thi gian GMT / UTC / ngy theo lp min a phng nh dng mt thi gian a phng / ngy l s nguyn Tr v mt mng c cha cc thnh phn thi gian ca mt du thi gian Unix Tr v micro giy cho thi gian hin ti Tr v du thi gian Unix cho mt ngy nh dng thi gian a phng / ngy theo lp min a phng Phn tch mt ngy thi gian / to ra vi strftime () Phn tch mt vn bn ting Anh ngy hoc thi gian vo mt du thi gian Unix Tr v thi gian hin ti nh l mt du thi gian Unix

5 5 5 3 3

gettimeofday () gmdate () gmmktime () gmstrftime ()

3 3 3 3

Idate () localtime ()

5 4

microtime () mktime () strftime () strptime () strtotime ()

3 3 3 5 3

thi gian ()

PHP Ngy / Gi hng s


PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc DATE_ATOM DATE_COOKIE DATE_ISO8601 M t Atom (v d: 2005-08-15T16: 13:03 0000) HTTP Cookies: (v d: Sun, 14 Aug 2005 16:13:03 UTC) ISO-8601 (v d: 2005-08-14T16: 13:03 0000)

PH

Page 184 of 413

DATE_RFC822 DATE_RFC850 DATE_RFC1036 DATE_RFC1123 DATE_RFC2822 DATE_RSS DATE_W3C

RFC 822 (v d: Sun, 14 Aug 2005 16:13:03 UTC) RFC 850 (v d: Ch nht, 14-Aug-05 16:13:03 UTC) RFC 1036 (v d: Ch nht, 14-Aug-05 16:13:03 UTC) RFC 1123 (v d: Sun, 14 Aug 2005 16:13:03 UTC) RFC 2822 (Sun, 14 Aug 2005 16:13:03 0000) RSS (Sun, 14 Aug 2005 16:13:03 UTC) World Wide Web Consortium (v d: 2005-08-14T16: 13:03 0000)

PHP mc Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng chdir () chroot () dir () closedir () getcwd () opendir () readdir () rewinddir () scandir () M t Thay i th mc hin ti Thay i th mc gc ca qu trnh hin ti M mt x l th mc v tr v mt i tng ng mt x l th mc Tr v th mc hin hnh M mt x l th mc Tr v mt mc t mt x l th mc t li mt x l th mc Danh sch cc tp tin v th mc bn trong mt ng dn c th

PH 3 4 3 3 4 3 3 3 5

PHP mc hng s
PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc DIRECTORY_SEPARATOR M t

PH 3

Page 185 of 413

PATH_SEPARATOR

PHP Li v chc nng ng nhp


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng debug_backtrace () debug_print_backtrace () error_get_last () error_log () M t To ra mt backtrace In mt backtrace c cc li xy ra ln cui Gi mt li li my ch ng nhp vo mt tp tin hoc n mt a im t xa Xc nh li c bo co Phc hi x l li trc Phc hi x l ngoi l trc Thit lp mt chc nng c xc nh s dng x l cc li Thit lp mt chc nng c xc nh s dng x l cc trng hp ngoi l To ra mt thng bo li do ngi dng nh ngha B danh ca trigger_error ()

PH 4 5 5 4

error_reporting () restore_error_handler () restore_exception_handler () set_error_handler () set_exception_handler ()

4 4 5 4 5

trigger_error () user_error ()

4 4

PHP Li v hng s ng nhp


PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Gi tr 1 Lin tc E_ERROR M t Fatal li thi gian chy. Li m khng th c phc hi t.Thc thi kch bn phi dng li Li thi gian chy khng gy t vong. Thc thi kch bn khng dng li Thi gian bin dch li phn tch c php. Li c php ch nn c to ra bi cc c php

E_WARNING

E_PARSE

Page 186 of 413

E_NOTICE

Thng bo thi gian chy. Cc kch bn tm thy mt ci g c th l mt li, nhng cng c th xy ra khi chy mt kch bn bnh thng Fatal li khi ng ti PHP. iu ny ging nh mt E_ERROR trong li PHP Li khng gy t vong ti PHP khi ng. iu ny ging nh mt E_WARNING trong li PHP Fatal li thi gian bin dch. iu ny ging nh mt E_ERROR to ra bi Zend Engine Scripting Li thi gian bin dch khng gy t vong. iu ny ging nh mt E_WARNING to ra bi Zend Engine Scripting Fatal ngi dng to ra li. iu ny ging nh mt b E_ERROR bng cch lp trnh bng cch s dng trigger_error chc nng PHP () Khng gy t vong ngi dng to ra cnh bo. iu ny ging nh mt E_WARNING c thit lp bi cc lp trnh vin s dng PHP chc nng trigger_error () Ngi s dng to thng bo. iu ny ging nh mt E_NOTICE c thit lp bi cc lp trnh vin s dng PHP chc nng trigger_error () Thng bo thi gian chy. PHP ngh thay i m ca bn gip kh nng tng tc v kh nng tng thch ca m Li catchable gy t vong. y l nh E_ERROR mt nhng c th c nh bt bi mt x l ngi dng nh ngha (xem thm set_error_handler ()) Tt c cc li v cnh bo, ngoi tr mc E_STRICT

16

E_CORE_ERROR

32

E_CORE_WARNING

64

E_COMPILE_ERROR

128

E_COMPILE_WARNING

256

E_USER_ERROR

512

E_USER_WARNING

1024

E_USER_NOTICE

2048

E_STRICT

4096

E_RECOVERABLE_ERROR

6143

E_ALL

Gii thiu PHP h thng tp tin


Cc chc nng h thng tp tin cho php bn truy cp v thao tc cc h thng tp tin.

Ci t
Cc chc nng h thng tp tin l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

Page 187 of 413

Thi gian chy cu hnh


Cc hnh vi ca cc chc nng h thng tp tin b nh hng bi cc thit lp trong php.ini. H thng tp tin cu hnh ty chn: Tn allow_url_fopen Mc nh "1" M t Cho php fopen ()-loi chc nng lm vic vi cc URL (c sn t PHP 4.0.4) Xc nh i din ngi s dng cho PHP gi (c sn t PHP 4.3) Thit lp thi gian ch mc nh, trong vi giy, cho dng cm da trn (c sn t PHP 4.3) Xc nh mt khu FTP n danh (a ch email ca bn) Khi thit lp "1", PHP s xem xt cc d liu c bi fgets () v tp tin () xem nu n c s dng Unix, MS-Dos hoc Mac dng k t kt thc (c sn t PHP 4.3) Thay i PHP_INI_SYSTEM

user_agent

NULL

PHP_INI_ALL

default_socket_timeout

"60"

PHP_INI_ALL

""

PHP_INI_ALL

auto_detect_line_endings "0"

PHP_INI_ALL

Unix / Windows Kh nng tng thch


Khi xc nh mt con ng trn cc nn tng Unix, du gch cho (/) c s dng nh l du phn cch th mc. Tuy nhin, trn nn tng Windows, c hai du gch cho (/) v du gch cho ngc (\) c th c s dng.

PHP h thng tp tin Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng basename () chgrp () chmod () chown () M t Tr v thnh phn tn tp tin ca mt con ng Thay i cc nhm tp tin Thay i ch tp tin Thay i ch s hu tp tin

PHP 3 3 3 3

Page 188 of 413

clearstatcache () copy () delete () dirname () disk_free_space () disk_total_space () diskfreespace () fclose () feof () fflush () fgetc () fgetcsv () fgets () fgetss () file () file_exists () file_get_contents () file_put_contents fileatime () filectime () filegroup () fileinode () filemtime () fileowner () fileperms () filesize () filetype ()

Xa b nh cache tnh trng tp tin Sao chp mt tp tin Xem b lin kt () hoc unset () Tr v thnh phn tn th mc ca mt con ng Tr v khng gian min ph ca mt th mc Tr v tng kch thc ca mt th mc B danh ca disk_free_space () ng mt tp tin m Cc th nghim v cui tp tin vo mt tp tin m Flushes m u ra vo mt tp tin m Tr v mt nhn vt t mt tp tin m Phn tch mt dng t mt tp tin m, kim tra cc lnh vc CSV Tr v mt dng t mt tp tin m Tr v mt dng, vi cc th HTML v PHP loi b, t mt tp tin m c mt tp tin vo mt mng Kim tra c hay khng mt tp tin hoc th mc tn ti c mt tp tin vo mt chui Ghi mt chui vo mt tp tin Tr v thi gian truy cp cui cng ca mt tp tin Tr v thi gian thay i cui cng ca mt tp tin Tr v ID nhm ca mt tp tin Tr v s inode ca mt tp tin Tr v thi gian sa i cui cng ca mt tp tin Tr v ID ngi dng (ch s hu) ca mt tp tin Tr v quyn truy cp ca mt tp tin Tr v kch thc tp tin Tr v cc loi tp tin

3 3

3 4 4 3 3 3 4 3 3 3 3 3 3 4 5 3 3 3 3 3 3 3 3 3

Page 189 of 413

flock () fnmatch () fopen () fpassthru ()

Kha hoc pht hnh mt tp tin Kt qu cc trn u mt tn tp tin hoc chui vi mt m hnh c th M mt tp tin hoc URL

3 4 3

c t mt tp tin m, cho n khi kt thc tp tin, v ghi kt qu vo b 3 m u ra nh dng mt dng nh CSV v vit n vo mt tp tin m B danh ca fwrite () c t mt tp tin m Phn tch u vo t mt tp tin m theo mt nh dng c ch nh Tm kim trong mt tp tin m Tr v thng tin v mt tp tin m Tr v v tr hin ti trong mt tp tin m Ct ct mt tp tin m vi mt chiu di quy nh Vit cho mt tp tin m 5 3 3 4 3 4 3 4 3

fputcsv () fputs () fread () fscanf () fseek () fstat () ftell () ftruncate () fwrite () glob () is_dir () is_executable () is_file () is_link () is_readable () is_uploaded_file () is_writable () is_writeable () link () linkinfo () lstat () mkdir () move_uploaded_file ()

Tr v mt mng cc tn tp tin / th mc ph hp vi mt mu quy nh 4 Kim tra xem mt tp tin l mt th mc Kim tra xem mt tp tin thc thi Kim tra xem mt tp tin l mt tp tin thng xuyn Kim tra xem mt tp tin l mt lin kt Kim tra xem mt tp tin c th c c Kim tra xem mt tp tin c ti ln qua HTTP POST Kim tra xem mt tp tin l ghi c B danh ca is_writable () To mt lin kt cng Tr v thng tin v mt lin kt cng Tr v thng tin v mt tp tin hoc lin kt tng trng To mt th mc Di chuyn mt tp tin c ti ln mt v tr mi 3 3 3 3 3 3 4 3 3 3 3 3 4

Page 190 of 413

parse_ini_file () pathinfo () pclose () popen () readfile () readlink () realpath () rename () rewind () rmdir () set_file_buffer () stat () symlink () tempnam () tmpfile () touch () umask () unlink ()

Phn tch mt tp tin cu hnh Tr v thng tin v mt ng dn tp tin ng ca mt ng ng c m bi popen () M mt ng ng c mt tp tin v vit n vo b m u ra Tr v mc tiu ca mt lin kt mm Tr v tn ng dn tuyt i i tn mt tp tin hoc th mc Tua li mt con tr tp tin Loi b mt th mc rng Thit lp kch thc b m ca mt tp tin m Tr v thng tin v mt tp tin To mt lin kt tng trng To ra mt tp tin duy nht tm thi To ra mt tp tin duy nht tm thi Thit lp thi gian truy cp v sa i ca mt tp tin Thay i quyn truy cp tp tin cho cc tp tin Xa mt tp tin

4 4 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 3

PHP h thng tp tin hng s


PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc GLOB_BRACE GLOB_ONLYDIR GLOB_MARK GLOB_NOSORT GLOB_NOCHECK M t

PH

Page 191 of 413

GLOB_NOESCAPE PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION FILE_USE_INCLUDE_PATH FILE_APPEND FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES

PHP lc Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng filter_has_var () filter_id () filter_input () filter_input_array () filter_list () filter_var_array () filter_var () M t Kim tra nu mt bin ca mt loi u vo quy nh tn ti Tr v s ID ca mt b lc xc nh C c u vo t bn ngoi kch bn v lc n Nhn nhiu u vo t bn ngoi kch bn v lc chng Tr v mt mng ca tt c cc b lc c h tr Nhn nhiu bin s v lc chng Mt bin v lc n

PH 5 5 5 5 5 5 5

PHP b lc
ID Name FILTER_CALLBACK FILTER_SANITIZE_STRING M t

Gi mt chc nng ngi dng nh ngha lc d liu Th Strip, ty chn tc b hoc m ha cc k t c bit B danh ca b lc "chui"

FILTER_SANITIZE_STRIPPED FILTER_SANITIZE_ENCODED

URL m ha chui, ty chn tc b hoc m ha cc k t c bit

Page 192 of 413

FILTER_SANITIZE_SPECIAL_CHARS

HTML-escape "<> & v cc k t c gi tr ASCII t hn 32 Hy b tt c cc k t, ngoi tr ch ci, ch s v # $% & '* + - / = ^ _ `?. {|} ~ @ []

FILTER_SANITIZE_EMAIL

FILTER_SANITIZE_URL

Hy b tt c cc k t, ngoi tr ch ci, ch s v $+ * '(), {} | \ \ ^ ~ [] `<> #%";: @ & = Hy b tt c cc k t, ngoi tr ch s v + Hy b tt c cc k t, ngoi tr ch s, + -, v ty chn, eE. p dng addslashes () Khng lm g c, ty chn tc b hoc m ha cc k c bit Xc nhn gi tr l s nguyn, ty chn t phm vi ch nh Tr v TRUE "1", "true", "trn" v "c", FALSE cho "0", "false", "tt", "khng", v "", NULL nu khng Xc nhn gi tr nh phao

FILTER_SANITIZE_NUMBER_INT FILTER_SANITIZE_NUMBER_FLOAT

FILTER_SANITIZE_MAGIC_QUOTES FILTER_UNSAFE_RAW

FILTER_VALIDATE_INT

FILTER_VALIDATE_BOOLEAN

FILTER_VALIDATE_FLOAT FILTER_VALIDATE_REGEXP

Xc nhn gi tr so vi regexp, mt biu thc chnh quy tng thch vi PerlXc nhn gi tr nh URL, ty chn vi cc thnh phn cn thit Xc nhn gi tr nh e-mail

FILTER_VALIDATE_URL

FILTER_VALIDATE_EMAIL FILTER_VALIDATE_IP

Xc nhn gi tr nh a ch IP, ty chn ch IPv4 hoc IPv6 hay khng phi t phm vi t nhn hoc dnh rin

PHP FTP Gii thiu


Cc chc nng FTP cung cp cho khch hng truy cp vo tp tin my ch thng qua File Transfer Protocol (FTP). Cc chc nng FTP c s dng m, ng nhp v kt ni cht ch, cng nh ti ln, ti v, i tn, xa, v nhn c thng tin v cc tp tin t cc my ch tp tin. Khng phi tt c cc chc nng FTP s lm vic vi tt c cc my ch hoc tr li kt qu tng t. Cc chc nng FTP tr thnh c sn vi PHP 3. Cc chc nng ny c ngha l truy cp chi tit n mt my ch FTP. Nu bn ch mun c t hay ghi vo mt tp tin trn mt my ch FTP, xem xt vic s dng wrapper ftp:// vi cc chc nng h thng tp tin.

Page 193 of 413

Ci t
Phin bn ca s ca PHP c xy dng trong h tr cho cc phn m rng FTP. V vy, cc chc nng FTP s lm vic t ng. Tuy nhin, nu bn ang chy phin bn Linux ca PHP, bn s c bin dch PHP vi enable-ftp (PHP 4 +) hoc- with-ftp (PHP 3) c c cc chc nng FTP lm vic.

PHP FTP Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng ftp_alloc () ftp_cdup () ftp_chdir () ftp_chmod () ftp_close () ftp_connect () ftp_delete () ftp_exec () ftp_fget () ftp_fput () ftp_get_option () ftp_get () ftp_login () ftp_mdtm () ftp_mkdir () ftp_nb_continue () ftp_nb_fget () M t Phn b khng gian cho mt tp tin c ti ln my ch FTP Thay i th mc hin hnh n th mc cha trn my ch FTP Thay i th mc hin hnh trn my ch FTP B quyn truy cp vo mt tp tin thng qua FTP ng mt kt ni FTP M mt kt ni FTP Xa mt tp tin trn my ch FTP Thc thi mt chng trnh / lnh trn my ch FTP Ti v mt tp tin t my ch FTP v lu n vo mt tp tin m Cp nht t mt tp tin m v lu n vo mt tp tin trn my ch FTP Tr v hnh vi thi gian chy ca cc kt ni FTP Ti mt tp tin t my ch FTP Bn ghi trn mt kt ni FTP Tr v thi gian sa i cui cng ca mt tp tin c ch nh To mt th mc mi trn my ch FTP Tip tc ly / gi mt tp tin (non-blocking) Ti mt tp tin t my ch FTP v lu n vo mt tp tin m (nonblocking)

PH 5 3 3 5 4 3 3 4 3 3 4 3 3 3 3 4 4

Page 194 of 413

ftp_nb_fput ()

Cp nht t mt tp tin m v lu n vo mt tp tin trn my ch FTP (non-blocking) Ti mt tp tin t my ch FTP (non-blocking) Ti ln mt tp tin n my ch FTP (non-blocking) Danh sch cc tp tin trong mt th mc c ch nh trn my ch FTP Bt ch th ng hoc tt Ti ln mt tp tin n my ch FTP Tr v tn th mc hin hnh B danh ca ftp_close () Gi mt lnh liu n my ch FTP Tr v mt danh sch chi tit ca cc tp tin trong th mc ch nh t li tn mt tp tin hoc th mc trn my ch FTP Loi b mt th mc trn my ch FTP Thit lp cc ty chn thi gian chy cho kt ni FTP Gi mt lnh SITE n my ch Tr v kch thc ca cc tp tin c ch nh M mt kt ni an ton SSL FTP Tr v nh danh kiu h thng ca my ch FTP

ftp_nb_get () ftp_nb_put () ftp_nlist () ftp_pasv () ftp_put () ftp_pwd () ftp_quit () ftp_raw () ftp_rawlist () ftp_rename () ftp_rmdir () ftp_set_option () ftp_site () ftp_size () ftp_ssl_connect () ftp_systype ()

4 4 3 3 3 3 3 5 3 3 3 4 3 3 4 3

PHP FTP hng s


PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc FTP_ASCII FTP_TEXT FTP_BINARY FTP_IMAGE FTP_TIMEOUT_SEC M t

PH 3 3 3 3 3

Page 195 of 413

FTP_AUTOSEEK FTP_AUTORESUME FTP_FAILED FTP_FINISHED FTP_MOREDATA Xc nh tip tc v tr v tr v bt u nhn v t yu cu t ng Khng ng b chuyn giao tht bi Khng ng b chuyn giao hon thnh Vn cn hot ng khng ng b chuyn giao

4 4 4 4 4

PHP HTTP Gii thiu


Cc chc nng HTTP cho php bn thao tc thng tin c gi n trnh duyt bi cc my ch Web, trc khi bt k sn lng khc c gi.

Ci t
Cc chc nng th mc l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

PHP HTTP Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng header () headers_list () M t S gi mt header HTTP liu cho mt khch hng

PH 3

Tr v mt danh sch cc tiu phn ng gi (hoc sn sng 5 gi) Kim tra nu / ni cc tiu HTTP c gi Gi mt cookie HTTP vi mt khch hng Gi mt cookie HTTP m khng c URL m ha cc gi tr cookie 3 3 5

headers_sent () setcookie () setrawcookie ()

Gii thiu PHP libxml


Cc chc nng v hng s libxml c s dng cng vi cc chc nng SimpleXML, XSLT v DOM.

Page 196 of 413

Ci t
Cc chc nng ny yu cu cc gi libxml Ti v ti xmlsoft.org

PHP libxml Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng libxml_clear_errors () libxml_get_errors () libxml_get_last_error () libxml_set_streams_context () libxml_use_internal_errors () M t R rng libxml li b m Ly mng li Ly li cui cng t libxml t bi cnh sui ti ti liu libxml tip theo hoc vit V hiu ho li libxml v cho php ngi s dng ly thng tin li khi cn thit

PH 5 5 5 5 5

PHP libxml hng s


Chc nng LIBXML_COMPACT M t Thit lp ti u ha phn b cc nt nh. iu ny c th ci thin hiu sut ng dng Thit lp mc nh DTD thuc tnh Ti tp hp con bn ngoi Xc nhn vi cc DTD Loi b cc nt trng t CDATA nh cc nt vn bn Thay i th rng (v d nh <br/> <br> </ br>), ch c sn trong lu DOMDocument-> () v DOMDocument-> saveXML () chc nng Thay th cc thc th Khng hin th cc bo co li Ngn chn truy cp mng trong khi ti ti liu 5

PH

LIBXML_DTDATTR LIBXML_DTDLOAD LIBXML_DTDVALID LIBXML_NOBLANKS LIBXML_NOCDATA LIBXML_NOEMPTYTAG

5 5 5 5 5 5

LIBXML_NOENT LIBXML_NOERROR LIBXML_NONET

5 5 5

Page 197 of 413

LIBXML_NOWARNING LIBXML_NOXMLDECL LIBXML_NSCLEAN LIBXML_XINCLUDE LIBXML_ERR_ERROR LIBXML_ERR_FATAL LIBXML_ERR_NONE LIBXML_ERR_WARNING LIBXML_VERSION LIBXML_DOTTED_VERSION

Khng hin th bo co cnh bo Th khai bo XML khi tit kim mt ti liu Hy b cc t khai khng gian tn d tha S dng XInclude thay th Nhn c li thu hi Nhn li nghim trng Khng c li Nhn c cnh bo n gin Nhn libxml phin bn (v d nh 20.605 hoc 20.617) Chm libxml phin bn (v d nh 2.6.5 hoc 2.6.17)

5 5 5 5 5 5 5 5 5 5

PHP Th Gii thiu


Hm mail () cho php bn gi email trc tip t mt kch bn.

Yu cu
i vi cc chc nng mail s c sn, PHP i hi mt h thng email c ci t v hot. Chng trnh c s dng c xc nh bi cc thit lp cu hnh trong file php.ini.

Ci t
Cc chc nng mail ny l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

Thi gian chy cu hnh


Cc hnh vi ca cc chc nng th b nh hng bi cc thit lp trong file php.ini. Th cu hnh ty chn: Tn Mc nh M t Thay i

Page 198 of 413

SMTP

"Localhost"

Windows ch: Tn DNS hoc a ch IP ca my ch SMTP Windows ch: s cng SMTP. C sn t PHP 4.3

PHP_INI_ALL

smtp_port sendmail_from

"25" NULL

PHP_INI_ALL

Windows ch: Ch nh a ch "t" c s dng PHP_INI_ALL trong email gi t PHP Cc h thng Unix: Xc nh ni m chng PHP_INI_SYSTEM trnh sendmail c th c tm thy (thng l / usr / sbin / sendmail hoc / usr / lib / sendmail)

sendmail_path

NULL

PHP Th Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng ezmlm_hash () mail () M t Tnh gi tr bm cn thit bi h thng danh sch gi th EZMLM Cho php bn gi email trc tip t mt kch bn

PH 3 3

PHP Ton Gii thiu


Cc chc nng ton hc c th x l cc gi tr trong phm vi ca cc s nguyn v cc loi phao.

Ci t
Cc chc nng ton hc l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

PHP Math Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng abs () acos () M t Tr v gi tr tuyt i ca mt s Tr v arccosine ca mt s

PH 3 3

Page 199 of 413

acosh () asin () asinh () atan ()

Tr v cosin hyperbol nghch o ca mt s Tr v arcsine ca mt s Tr v sin hyperbol nghch o ca mt s Tr v arctangent ca mt s nh l mt gi tr s gia-PI / 2 v PI / 2 radian Tr v theta gc ca mt im (x, y) nh l mt gi tr s gia-PI v PI radian Tr v tang hyperbol nghch o ca mt s Chuyn i mt s t mt c s khc Chuyn i mt s nh phn cho mt s thp phn Tr v gi tr ca mt s c lm trn ln n s nguyn gn nht Tr v cosin ca mt s Tr v cosin hyperbol ca mt s Chuyn i mt s thp phn mt s nh phn Chuyn i mt s thp phn cho mt s thp lc phn Chuyn i mt s thp phn mt s bt phn Chuyn i mt mc mt s radian Tr v gi tr ca E Tr v gi tr ca
x x

4 3 4 3

atan2 ()

atanh () base_convert () bindec () ceil () cos () cosh () decbin () dechex () decoct () deg2rad () exp () expm1 () floor () fmod () getrandmax ()

4 3 3 3 3 4 3 3 3 3 3 4 3 4 3

E-1

Tr v gi tr ca mt s c lm trn xung s nguyn gn nht Tr v cn li (modulo) ca s phn chia ca cc i s Tr v s lng ti a ngu nhin m c th c tr li bi mt cuc gi n cc rand () chc nng Chuyn i mt s thp lc phn cho mt s thp phn Tr v di ca cnh huyn ca mt tam gic vung gc Tr v true nu gi tr l mt s hu hn Tr v true nu gi tr l mt s lng v hn Tr v true nu mt gi tr khng phi l s Tr v mt s ngu nhin trong khong (0,1)

hexdec () hypot () is_finite () is_infinite () is_nan () lcg_value ()

3 4 4 4 4 4

Page 200 of 413

log () log10 () log1p () max () min () mt_getrandmax () mt_rand ()

Tr v logarit t nhin (c s E) ca mt s Tr v logarit c s-10 ca mt s Tr v log (1 + s) Tr v s lng vi gi tr cao nht ca hai s xc nh Tr v s lng vi gi tr thp nht ca hai s xc nh Tr v gi tr ln nht c th c th c tr li bi mt_rand () Tr v mt s nguyn ngu nhin bng cch s dng thut ton Mersenne Twister Ht ging Mersenne Twister ngu nhin s my pht in Chuyn i mt s bt phn cho mt s thp phn Tr v gi tr ca PI Tr v gi tr ca x sc mnh ca y Chuyn i mt s radian n mt mc Tr v mt s nguyn ngu nhin Trn mt s n s nguyn gn nht Tr v sin ca mt s Tr v sin hyperbol ca mt s Tr v cn bc hai ca mt s Ht ging my pht in s ngu nhin Tr v tang ca mt gc Tr v tang hyperbol ca mt gc

3 3 4 3 3 3 3

mt_srand () octdec () pi () pow () rad2deg () rand () round () sin () sinh () sqrt () srand () tan () tanh ()

3 3 3 3 3 3 3 3 4 3 3 3 4

PHP Math hng s


PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc M_E M_EULER M t Tr v e (khong 2,718) Tr v hng s Euler (khong 0,577)

PH 4 4

Page 201 of 413

M_LNPI M_LN2 M_LN10 M_LOG2E M_LOG10E M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_SQRTPI M_2_SQRTPI M_SQRT1_2 M_SQRT2 M_SQRT3

Tr v logarit t nhin ca PI (khong 1,144) Tr v logarit t nhin ca 2 (khong 0,693) Tr v logarit t nhin ca 10 (khong 2,302) Tr v logarit c s-2 ca E (khong 1,442) Tr v logarit c s-10 E (khong 0,434) Tr v PI (khong 3,14159) Tr v PI / 2 (khong 1,570) Tr v PI / 4 (khong 0,785) Tr v 1/PI (khong 0,318) Tr v 2/PI (khong 0,636) Tr v cn bc hai ca PI (khong 1,772) Tr v 2/square gc ca PI (khong 1,128) Tr v cn bc hai ca 1/2 (khong 0,707) Tr v cn bc hai ca 2 (khong 1,414) Tr v cn bc hai ca 3 (khong 1,732)

4 4 4 4 4 3 4 4 4 4 4 4 4 4 4

Gii thiu PHP Miscellaneous


Misc. chc nng ch c t y bi v khng ai trong s cc loi khc dng nh ph hp vi.

Ci t
Cc chc nng misc l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

Thi gian chy cu hnh


Cc hnh vi ca cc chc nng misc b nh hng bi cc thit lp trong file php.ini. Misc. ty chn cu hnh:

Page 202 of 413

Tn ignore_user_abort

Mc nh "0"

M t FALSE ch ra rng cc kch bn s c chm dt ngay sau khi h c gng sn xut mt ci g sau khi khch hng hy b kt ni ca h Mu sc lm ni bt mt chui trong PHP c php Mu sc lm ni bt kin PHP Mu sc cho cc t kha ni bt c php PHP (v d nh du ngoc n v du chm phy) Mu sc cho nn Mc nh mu sc cho PHP c php Mu sc cho HTML code

Thay i PHP_INI_ALL

highlight.string

"# DD0000"

PHP_INI_ALL

highlight.comment highlight.keyword

"# FF8000" "007.700"

PHP_INI_ALL PHP_INI_ALL

highlight.bg highlight.default highlight.html browscap

"# FFFFFF" "# 0000BB" "# 000000" NULL

PHP_INI_ALL PHP_INI_ALL PHP_INI_ALL

Tn v v tr ca trnh duyt kh nng tp tin (v PHP_INI_SYSTEM d nh browscap.ini)

PHP Misc. Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng connection_aborted () connection_status () connection_timeout () constant () define () defined () die () eval () exit () get_browser () highlight_file () M t Kim tra xem khch hng b ngt kt ni Tr v tnh trng kt ni hin ti Phn i trong PHP 4.0.5 Tr v gi tr ca mt hng s nh ngha mt hng s Kim tra xem mt hng s tn ti In mt tin nhn v thot khi kch bn hin ti nh gi mt chui nh l m PHP In mt tin nhn v thot khi kch bn hin ti Tr v kh nng ca trnh duyt ca ngi dng Kt qu u ra mt tp tin vi c php PHP nhn mnh

PH 3 3 3 4 3 3 3 3 3 3 4

Page 203 of 413

highlight_string () ignore_user_abort ()

Kt qu u ra mt chui vi c php PHP nhn mnh B xem mt khch hng t xa c th hy b cc hot ng ca mt kch bn Gi d liu vo mt chui nh phn Phn i trong PHP 5.0.5 Tr v m ngun ca mt tp tin vi kin, PHP v khong trng xa B danh ca highlight_file () S chm tr thc thi m cho mt s giy S chm tr thc thi m cho mt s giy v nano giy S chm tr m thc thi cho n khi mt thi gian quy nh To ra mt ID duy nht Gii nn d liu t mt chui nh phn S chm tr thc thi m cho mt s micro giy

4 3

pack () php_check_syntax () php_strip_whitespace () show_source () sleep () time_nanosleep () time_sleep_until () uniqid () unpack () usleep ()

3 5 5 4 3 5 5 3 3 3

PHP Misc. Hng s


PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc CONNECTION_ABORTED CONNECTION_NORMAL CONNECTION_TIMEOUT __COMPILER_HALT_OFFSET__ 5 M t

PH

PHP MySQL Gii thiu


Cc chc nng MySQL cho php bn truy cp vo cc my ch c s d liu MySQL.

Ci t
i vi cc chc nng MySQL s c sn, bn phi bin dch PHP vi MySQL h tr.

Page 204 of 413

bin dch, s dng - with-mysql = DIR (DIR ty chn im n th mc MySQL). Lu : i vi y chc nng ca MySQL phin bn ln hn trn 4,1, s dng phn m rng MySQLi thay th.Nu bn mun ci t c phn m rng mysql v m rng mysqli bn nn s dng cng mt th vin khch hng trnh bt k xung t. Ci t trn h thng Linux PHP 5 +: MySQL v th vin MySQL khng c kch hot theo mc nh. S dng - withmysql = DIR cu hnh ty chn bao gm MySQL h tr v ti v tiu v th vin t www.mysql.com . Cc h thng ci t trn PHP 5 + MySQL khng c kch hot theo mc nh, v vy php_mysql.dll phi c kch hot bn trong php.ini.Ngoi ra, PHP cn truy cp vo th vin khch MySQL. Mt tp tin c tn libmysql.dll c bao gm trong phn phi Windows PHP, v cho PHP ni chuyn vi MySQL tp tin ny cn phi c sn PATH h thng Windows. kch hot bt k phn m rng PHP, PHP extension_dir thit lp (trong file php.ini) nn c t vo th mc ni m cc phn m rng PHP c t. Mt gi tr extension_dir v d l c: \ php \ ext. Lu : Nu bn nhn c cc li sau khi bt u cc my ch web: "Khng th ti th vin nng ng '/ php_mysql.dll", iu ny l bi v php_mysql.dll hoc libmysql.dll khng c th c tm thy bi h thng.

Thi gian chy cu hnh


Cc hnh vi ca cc chc nng MySQL b nh hng bi cc thit lp trong file php.ini. MySQL cu hnh ty chn: Tn mysql.allow_persistent mysql.max_persistent Mc nh "1" "-1" M t C hay khng cho php cc kt ni lin tc Thay i PHP_INI_SYSTEM

S lng ti a cc kt ni lin tc cho mi qu PHP_INI_SYSTEM trnh S lng ti a cc kt ni cho mi qu trnh (kt ni lin tc bao gm) Theo di ch . Khi thit lp "1", cnh bo v SQL-li s c hin th. C sn t PHP 4.3 Cc s cng TCP mc nh s dng PHP_INI_SYSTEM

mysql.max_links

"-1"

mysql.trace_mode

"0"

PHP_INI_ALL

mysql.default_port mysql.default_socket

NULL NULL

PHP_INI_ALL

Tn cm mc nh s dng. C sn t PHP PHP_INI_ALL

Page 205 of 413

4.0.1 mysql.default_host NULL Cc my ch lu tr my ch mc nh s dng (khng p dng trong ch an ton SQL) Tn ngi s dng mc nh s dng (khng p dng trong ch an ton SQL) Mt khu mc nh s dng (khng p dng trong ch an ton SQL) Kt ni thi gian ch trong vi giy PHP_INI_ALL

mysql.default_user

NULL

PHP_INI_ALL

mysql.default_password NULL

PHP_INI_ALL

mysql.connect_timeout

"60"

PHP_INI_ALL

Loi ti nguyn
C hai loi ti nguyn c s dng trong phn m rng MySQL. Ngi u tin l link_identifier cho mt kt ni c s d liu, th hai l mt ngun ti nguyn m gi kt qu ca mt truy vn. Lu : Hu ht cc MySQL chc nng chp nhn link_identifier nh l cc tham s ty chn cui cng. Nu n khng c cung cp, kt ni m cui cng c s dng.

PHP MySQL chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng mysql_affected_rows () mysql_change_user () mysql_client_encoding () mysql_close () mysql_connect () mysql_create_db () M t Tr v s hng b nh hng trong hot ng MySQL trc Phn i. Thay i ngi s dng kt ni MySQL hin ti Tr v tn cc b k t cho cc kt ni hin ti ng kt ni MySQL khng lin tc M mt kt ni khng lin tc MySQL Phn i. To ra mt c s d liu MySQL mi. S dng mysql_query () thay th Di chuyn con tr k lc Tr v mt tn c s d liu t mt cuc gi n mysql_list_dbs () Phn i. Gi mt truy vn MySQL. S dng mysql_select_db () v

PH 3 3 4 3 3 3

mysql_data_seek () mysql_db_name () mysql_db_query ()

3 3 3

Page 206 of 413

mysql_query () thay th mysql_drop_db () Phn i. Xa mt c s d liu MySQL. S dng mysql_query () thay th Tr v s li ca cc hot ng mi nht ca MySQL Tr v m t li ca cc hot ng mi nht ca MySQL Phn i. Escapes mt chui s dng trong mt mysql_query.S dng mysql_real_escape_string () thay th Tr v mt hng t mt recordset nh l mt mng kt hp v / hoc mt mng s Tr v mt hng t mt recordset nh l mt mng kt hp Tr v thng tin ct t mt recordset nh mt i tng Tr v di ca ni dung ca tng lnh vc trong mt hng kt qu Tr v mt hng t mt recordset nh mt i tng Tr v mt hng t mt recordset nh l mt mng s Tr v c kt hp vi mt lnh vc trong mt recordset Tr v di ti a ca mt trng trong mt recordset Tr v tn ca mt trng trong mt recordset Di chuyn con tr kt qu cho mt lnh vc quy nh Tr v tn ca bng lnh vc c ch nh trong Tr v kiu ca mt trng trong mt recordset B nh min ph kt qu Tr v thng tin khch hng MySQL Tr v thng tin my ch MySQL Tr v MySQL giao thc thng tin Tr v thng tin my ch MySQL Tr v thng tin v cc truy vn cui cng Tr v ID AUTO_INCREMENT to ra t hot ng INSERT trc Danh sch cc c s d liu c sn trn mt my ch MySQL Phn i. Danh sch cc lnh vc MySQL bng. S dng mysql_query 3

mysql_errno () mysql_error () mysql_escape_string ()

3 3 4

mysql_fetch_array ()

mysql_fetch_assoc () mysql_fetch_field () mysql_fetch_lengths () mysql_fetch_object () mysql_fetch_row () mysql_field_flags () mysql_field_len () mysql_field_name () mysql_field_seek () mysql_field_table () mysql_field_type () mysql_free_result () mysql_get_client_info () mysql_get_host_info () mysql_get_proto_info () mysql_get_server_info () mysql_info () mysql_insert_id () mysql_list_dbs () mysql_list_fields ()

4 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 3 3 3

Page 207 of 413

() thay th mysql_list_processes () mysql_list_tables () Danh sch MySQL qu trnh Phn i. Danh sch cc bng trong mt c s d liu MySQL. S dng mysql_query () thay th Tr v s lnh vc trong mt recordset Tr v s hng trong mt recordset M mt kt ni MySQL dai dng Ping mt kt ni my ch hoc kt ni li nu khng c kt ni Thc thi mt truy vn trn mt c s d liu MySQL Thot khi mt chui s dng trong cc cu lnh SQL Tr v gi tr ca mt trng trong mt recordset Thit lp c s d liu MySQL hot ng Tr v tnh trng h thng hin ti ca my ch MySQL Phn i. Tr v tn bng ca trng. S dng mysql_query () thay th Tr v ID thread hin hnh Thc thi mt truy vn trn mt c s d liu MySQL (m khng cn ly / m cc kt qu) 4 3

mysql_num_fields () mysql_num_rows () mysql_pconnect () mysql_ping () mysql_query () mysql_real_escape_string () mysql_result () mysql_select_db () mysql_stat () mysql_tablename ()

3 3 3 4 3 4 3 3 4 3

mysql_thread_id () mysql_unbuffered_query ()

4 4

PHP MySQL hng s


K t PHP 4.3 c th xc nh c b sung cho cc chc nng mysql_connect () v mysql_pconnect (): PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc MYSQL_CLIENT_COMPRESS MYSQL_CLIENT_IGNORE_SPACE MYSQL_CLIENT_INTERACTIVE M t S dng giao thc nn Cho php khng gian sau khi tn hm Cho php tng tc thi gian ch giy khng hot ng trc khi ng kt ni S dng m ha SSL (ch c sn vi phin bn 4 + ca

PH

4,

4,

4,

MYSQL_CLIENT_SSL

4,

Page 208 of 413

th vin MySQL client) Cc mysql_fetch_array () chc nng s dng mt hng s cho cc loi khc nhau ca cc mng kt qu. Cc hng s sau y c nh ngha: Lin tc MYSQL_ASSOC MYSQL_BOTH MYSQL_NUM M t Ct c tr v vo mng vi cc fieldname nh ch s mng Ct c tr v vo cc mng c ch s mt s v fieldname nh ch s mng Ct c tr v vo cc mng c ch s s (ch s bt u t 0)

PH

PHP SimpleXML Gii thiu


Cc chc nng SimpleXML cho php bn chuyn i XML vo mt i tng. i tng ny c th c x l, ging nh bt k i tng khc, vi selectors s hu bnh thng v vng lp mng. Mt s cc chc nng ny i hi PHP mi nht xy dng.

Ci t
Cc chc nng SimpleXML l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

PHP SimpleXML chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng __construct () addAttribute () addChild () asXML () attributes () M t To mt i tng SimpleXMLElement mi Thm mt thuc tnh n cc yu t SimpleXML Thm mt phn t con cc yu t SimpleXML Nhn c mt chui XML t mt yu t SimpleXML c cc thuc tnh ca mt yu t SimpleXML

PH 5 5 5 5 5

Page 209 of 413

children () getDocNamespaces () getName () getNamespace () registerXPathNamespace () simplexml_import_dom () simplexml_load_file () simplexml_load_string () xpath ()

c cc con ca mt nt xc nh c cc khng gian tn ca mt ti liu XML Nhn c tn ca mt nguyn t SimpleXML c cc khng gian tn t d liu XML To ra mt bi cnh khng gian tn cho cc truy vn XPath tip theo c mt i tng SimpleXMLElement t mt nt DOM c mt i tng SimpleXMLElement t mt ti liu XML c mt i tng SimpleXMLElement t mt chui XML Chy mt truy vn XPath trn d liu XML

5 5 5 5 5 5 5 5 5

PHP chui Gii thiu


Chui cc chc nng cho php bn thao tc chui.

Ci t
Cc chc nng chui l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

PHP chui Chc nng


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng addcslashes () M t Tr v mt chui vi du gch cho ngc pha trc ca cc nhn vt c ch nh Tr v mt chui vi du gch cho ngc pha trc ca cc nhn vt c xc nh trc Chuyn i mt chui k t ASCII vi cc gi tr thp lc phn B danh ca rtrim () Tr v mt nhn vt t mt gi tr ASCII quy nh Tch mt chui thnh mt lot cc phn nh hn

PH 4

addslashes ()

bin2hex () chop () chr () chunk_split ()

3 3 3 3

Page 210 of 413

convert_cyr_string () convert_uudecode () convert_uuencode () count_chars ()

Chuyn i mt chui t mt b k t Cyrillic khc Gii m mt chui uuencoded M ha mt chui bng cch s dng cc thut ton uuencode Tr bao nhiu ln mt k t ASCII xy ra trong vng mt chui v tr v thng tin Tnh ton CRC 32-bit cho mt chui Chui m ha mt chiu (bm) Kt qu u ra chui Ph v mt chui thnh mt mng Vit mt chui nh dng cho mt dng sn lng quy nh Tr v bng dch c s dng bi htmlspecialchars () v htmlentities () Chuyn i vn bn ting Do Thi, vn bn trc quan Chuyn i vn bn ting Do Thi, vn bn hnh nh v dng mi (\ n) vo <br /> Chuyn i cc thc th HTML k t Chuyn i cc k t cc thc th HTML Chuyn i mt s cc thc th HTML c xc nh trc vi cc nhn vt Chuyn i mt s k t c xc nh trc cc thc th HTML Tr v mt chui t cc yu t ca mt mng B danh ca implode () Tr v khong cch Levenshtein gia hai dy Tr v min a phng s v thng tin nh dng tin t Strips khong trng t pha bn tri ca mt chui Tnh MD5 ca mt chui Tnh MD5 ca mt tp tin Tnh phm metaphone ca mt chui Tr v mt chui c nh dng nh l mt chui tin t

3 5 5 4

crc32 () crypt () echo () explode () fprintf () get_html_translation_table ()

4 3 3 3 5 4

hebrev () hebrevc ()

3 3

html_entity_decode () htmlentities () htmlspecialchars_decode ()

4 3 5

htmlspecialchars ()

implode () join () Levenshtein () localeconv () LTRIM () md5 () md5_file () metaphone () money_format ()

3 3 3 4 3 3 4 4 4

Page 211 of 413

nl_langinfo () nl2br ()

Tr v thng tin a phng c th Chn HTML ngt dng pha trc ca mi dng mi trong mt chui nh dng mt s vi hng ngn nhm Tr v gi tr ASCII ca k t u tin ca mt chui Phn tch mt chui truy vn vo cc bin Kt qu u ra mt chui u ra mt chui nh dng Gii m mt chui trch dn-in Du ngoc kp meta k t Strips khong trng t pha bn phi ca mt chui Thit lp thng tin ngn ng Tnh SHA-1 hash ca mt chui Tnh SHA-1 hash ca mt tp tin Tnh tng ng gia hai chui Tnh phm Soundex ca mt chui Ghi mt chui nh dng cho mt bin Phn tch u vo t mt chui theo mt nh dng Thay th mt s k t trong mt chui (trng hp-insensitive) m mt chui vi di mi Lp li mt chui mt s quy nh ca thi gian Thay th mt s k t trong mt chui (trng hp nhy cm) Thc hin m ha ROT13 trn mt si dy Ngu nhin shuffles tt c cc k t trong mt chui Chia tch mt chui thnh mt mng m s t trong mt chui So snh hai chui (trng hp-insensitive) Tm s xut hin u tin ca mt chui bn trong mt chui

4 3

number_format () ord () parse_str () print () printf () quoted_printable_decode () quotemeta () rtrim () setlocale () sha1 () sha1_file () similar_text () Soundex () sprintf () sscanf () str_ireplace () str_pad () str_repeat () str_replace () str_rot13 () str_shuffle () str_split () str_word_count () strcasecmp () strchr ()

3 3 3 3 3 3 3 3 3 4 4 3 3 3 4 5 4 4 3 4 4 5 4 3 3

Page 212 of 413

khc (b danh ca strstr ()) strcmp () strcoll () strcspn () So snh hai chui (trng hp nhy cm) Locale da trn chui so snh 3 4

Tr v s ca cc nhn vt c tm thy trong mt chui trc 3 khi bt k mt phn ca mt s k t c ch nh c tm thy Strips th HTML v PHP t mt chui Unquotes mt chui trch dn vi addcslashes () Unquotes mt chui trch dn vi addslashes () 3 4 3

strip_tags () stripcslashes () stripslashes () stripos ()

Tr v v tr xut hin u tin ca mt chui bn trong mt chui 5 khc (trng hp-insensitive) Tm s xut hin u tin ca mt chui bn trong mt chui khc (trng hp-insensitive) Tr v di ca mt chui So snh hai chui bng cch s dng mt thut ton "trt t t nhin" (trng hp-insensitive) So snh hai chui bng cch s dng mt thut ton "trt t t nhin" (trng hp nhy cm) Chui so snh n k t u tin (trng hp-insensitive) Chui so snh n k t u tin (trng hp nhy cm) Tm kim mt chui cho bt k mt tp hp cc k t 3

stristr ()

strlen () strnatcasecmp ()

3 4

strnatcmp ()

strncasecmp () strncmp () strpbrk () strpos ()

4 4 5

Tr v v tr xut hin u tin ca mt chui bn trong mt chui 3 khc (trng hp nhy cm) Tm s xut hin cui cng ca mt chui bn trong mt chui khc o ngc mt chui 3

strrchr ()

strrev () strripos ()

Tm v tr ca s xut hin cui cng ca mt chui bn trong mt 5 chui khc (trng hp-insensitive) Tm v tr ca s xut hin cui cng ca mt chui bn trong mt 3 chui khc (trng hp nhy cm) Tr v s ca cc nhn vt c tm thy trong mt chui ch cha cc k t t mt charlist quy nh Tm s xut hin u tin ca mt chui bn trong mt chui khc (trng hp nhy cm) 3

strrpos ()

strspn ()

strstr ()

Page 213 of 413

strtok () strtolower () strtoupper () strtr () substr () substr_compare ()

Chia tch mt chui thnh chui nh hn Chuyn i mt chui thnh ch thng ch Chuyn i mt chui ch hoa ch Dch mt s k t trong mt chui Tr v mt phn ca mt chui So snh hai chui t mt v tr bt u quy nh (nh phn an ton, v ty chn trng hp nhy cm) m s ln xy ra mt xu con trong mt chui Thay th mt phn ca mt chui vi chui khc Strips khong trng t c hai mt ca mt chui Chuyn i k t u tin ca mt chui thnh ch hoa Chuyn i k t u tin ca mi t trong mt chui thnh ch hoa Vit mt chui nh dng cho mt dng sn lng quy nh u ra mt chui nh dng Ghi mt chui nh dng cho mt bin Kt thc tt p mt chui n mt s lng nht nh cc k t

3 3 3 3 3 5

substr_count () substr_replace () trim () ucfirst () ucwords ()

4 4 3 3 3

vfprintf () vprintf () vsprintf () WordWrap ()

5 4 4 4

PHP chui hng s


PHP : cho bit phin bn u tin ca PHP h tr cc hng s. Lin tc CRYPT_SALT_LENGTH M t Cha chiu di ca phng php m ha mc nh cho h thng. m ha tiu chun DES, chiu di l 2 Thit lp 1 nu tiu chun m ha DES-vi mt mui k t 2 c h tr, 0 nu ngc li Thit lp 1 nu DES-m ha m rng da trn vi mt mui k t 9 c h tr, 0 nu ngc li Thit lp 1 nu m ha MD5 vi mui k t 12 bt u vi $ 1 $ c h tr, 0 nu ngc li

PH

CRYPT_STD_DES

CRYPT_EXT_DES

CRYPT_MD5

Page 214 of 413

CRYPT_BLOWFISH

Thit lp 1 nu m ha Blowfish vi mui k t 16 bt u vi $ 2 $ hoc $ 2a $ c h tr, 0 otherwise0

HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES CHAR_MAX LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES STR_PAD_LEFT STR_PAD_RIGHT STR_PAD_BOTH

PHP XML Parser Gii thiu


Cc chc nng XML cho php bn phn tch, nhng khng xc nhn, cc ti liu XML. XML l mt nh dng d liu trao i ti liu c cu trc c tiu chun ha. Thng tin thm v XML c th c tm thy trong Hng dn ca chng ti XML . Phn m rng ny s dng phn tch c php XML Expat. Ngi nc ngoi l mt b phn tch da trn s kin, xem mt ti liu XML nh l mt lot cc s kin. Khi mt s kin xy ra, n gi mt chc nng c th x l n. Ngi nc ngoi l mt phn tch c php khng kim duyt, v b qua bt k cc DTD c lin kt n mt ti liu. Tuy nhin, nu ti liu c khng cng c hnh thnh, n s kt thc vi mt thng bo li.

Page 215 of 413

Bi v n l da trn s kin, phn tch c php xc nhn khng, Ngi nc ngoi l nhanh chng v thch hp cho cc ng dng web. Cc chc nng phn tch c php XML cho php bn to ra cc phn tch c php XML v xc nh x l cho cc s kin XML.

Ci t
Cc chc nng XML l mt phn ca li PHP. Khng c ci t cn thit s dng cc chc nng ny.

Chc nng phn tch c php XML PHP


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng utf8_decode () utf8_encode () xml_error_string () xml_get_current_byte_index () M t Gii m UTF-8 chui ISO-8859-1 M ha mt chui ISO-8859-1 sang UTF-8 c mt chui li t cc phn tch c php XML Ly cc ch mc byte hin ti t cc phn tch c php XML c s ct hin ti t cc phn tch c php XML c s dng hin ti t cc phn tch c php XML Nhn c mt m li t cc phn tch c php XML Phn tch mt ti liu XML Phn tch c php XML d liu vo mt mng To ra mt phn tch c php XML vi s h tr khng gian tn To mt phn tch c php XML Min ph mt phn tch c php XML C c la chn t mt phn tch c php XML

xml_get_current_column_number ()

xml_get_current_line_number ()

xml_get_error_code ()

xml_parse () xml_parse_into_struct () xml_parser_create_ns ()

xml_parser_create () xml_parser_free () xml_parser_get_option ()

Page 216 of 413

xml_parser_set_option ()

Thit lp cc ty chn trong mt phn tch c php XML Thit lp chc nng x l d liu nhn vt Thit lp mc nh chc nng x l t chc nng x l cho phn t ca cc nguyn t bt u v kt thc Thit lp chc nng x l cho n cui t khai khng gian tn t chc nng x l cho cc thc th bn ngoi Thit lp chc nng x l cho cc t khai k hiu S dng phn tch c php XML trong mt i tng Thit lp chc nng x l c hng dn x l Thit lp chc nng x l cho s khi u ca vic k khai khng gian tn Thit lp chc nng x l cho cc t khai thc th khng c phn tch

xml_set_character_data_handler () xml_set_default_handler () xml_set_element_handler ()

xml_set_end_namespace_decl_handler ()

xml_set_external_entity_ref_handler () xml_set_notation_decl_handler () xml_set_object ()

xml_set_processing_instruction_handler ()

xml_set_start_namespace_decl_handler ()

xml_set_unparsed_entity_decl_handler ()

Hng s phn tch c php XML PHP


Lin tc XML_ERROR_NONE (s nguyn) XML_ERROR_NO_MEMORY (s nguyn) XML_ERROR_SYNTAX (s nguyn) XML_ERROR_NO_ELEMENTS (s nguyn) XML_ERROR_INVALID_TOKEN (s nguyn) XML_ERROR_UNCLOSED_TOKEN (s nguyn) XML_ERROR_PARTIAL_CHAR (s nguyn) XML_ERROR_TAG_MISMATCH (s nguyn) XML_ERROR_DUPLICATE_ATTRIBUTE (s nguyn)

Page 217 of 413

XML_ERROR_JUNK_AFTER_DOC_ELEMENT (s nguyn) XML_ERROR_PARAM_ENTITY_REF (s nguyn) XML_ERROR_UNDEFINED_ENTITY (s nguyn) XML_ERROR_RECURSIVE_ENTITY_REF (s nguyn) XML_ERROR_ASYNC_ENTITY (s nguyn) XML_ERROR_BAD_CHAR_REF (s nguyn) XML_ERROR_BINARY_ENTITY_REF (s nguyn) XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF (s nguyn) XML_ERROR_MISPLACED_XML_PI (s nguyn) XML_ERROR_UNKNOWN_ENCODING (s nguyn) XML_ERROR_INCORRECT_ENCODING (s nguyn) XML_ERROR_UNCLOSED_CDATA_SECTION (s nguyn) XML_ERROR_EXTERNAL_ENTITY_HANDLING (s nguyn) XML_OPTION_CASE_FOLDING (s nguyn) XML_OPTION_TARGET_ENCODING (s nguyn) XML_OPTION_SKIP_TAGSTART (s nguyn) XML_OPTION_SKIP_WHITE (s nguyn)

PHP Zip File Gii thiu


Zip cc tp tin chc nng cho php bn c cc tp tin ZIP.

Ci t
i vi cc chc nng tp tin Zip lm vic trn my ch ca bn phi c ci t, cc th vin:

Th vin ZZIPlib bi Guido Draheim: Ti v th vin ZZIPlib Zip PELC m rng: Ti v Zip PELC m rng

Ci t trn h thng Linux

Page 218 of 413

PHP 5 +: chc nng Zip v th vin Zip khng c kch hot theo mc nh v phi c ti v t cc lin kt trn. S dng - vi-zip = DIR cu hnh ty chn bao gm h tr Zip. Cc h thng ci t trn PHP 5 +: chc nng Zip khng c kch hot theo mc nh, v vy php_zip.dll v th vin ZZIPlib phi c ti v t lin kt trn. php_zip.dll phi c kch hot bn trong php.ini. kch hot bt k phn m rng PHP, PHP extension_dir thit lp (trong file php.ini) nn c t vo th mc ni m cc phn m rng PHP c t. Mt gi tr extension_dir v d l c: \ php \ ext.

Chc nng tp tin Zip PHP


PHP : cho bit phin bn u tin ca PHP h tr chc nng. Chc nng zip_close () zip_entry_close () zip_entry_compressedsize () zip_entry_compressionmethod () zip_entry_filesize () zip_entry_name () zip_entry_open () zip_entry_read () zip_open () zip_read () M t ng mt file ZIP ng mt mc trong cc file ZIP Tr li kch thc nn ca mt entry trong file ZIP Tr v phng php nn ca mt entry trong file ZIP Tr v kch thc tp tin thc t ca mt entry trong file ZIP Tr v tn ca mt entry trong file ZIP M mt mc nhp trong tp tin ZIP c c t mt mc m trong tp tin ZIP M mt tp tin ZIP c vo tip theo trong mt file ZIP

PH 4 4 4 4 4 4 4 4 4 4

Chapter 31 : Linh Tinh Cc Th Bn Ngoi Tng Hp c


Code style theo chun Zend
Page 219 of 413

Ti sao chng ta cn phi code theo chun ? Bi v chun c t ra l ti u ha code ca chng ta, gip code d c hn, sau ny d chnh sa v khi lm vic nhm th iu ny c bit quan trong ! PHP FILE FORMATTING Tng qut : Trong nhng file ch cha code PHP, tag ng code ?> nn c b qua . Bi v n hok phi l 1 yu cu bt buc phi c ca PHP v vic b n i gip hn ch nhng khong trng c th xut ra trnh duyt . Thc dng : Chng ta cn thc dng 4 khong trng , hok c c tab S k t maximum ca 1 dng: S k t ln nht ca 1 dng trong PHP nn l 80 , mc d s k t ln nht thc s c th ca 1 dng PHP l 120 K t xung hng Mi dng trong file phi c kt li bng k t \n theo kiu Unix ( tc l enter) . Khng c dng carriage return (\r) <<<Mac dng ci ny Khng c dng c \n v \r ( \r\n) <<< Window dng ci ny 1 dng khng nn c cc khong trng cui dng QUY TC T TN CLASS: tn ca class phi tr n th mc cha n VD: trong th mc tn Zend th c class tn Zend , trong th mc Zend/Db/Table.php c class tn Zend_Db_Table nm trong file tn Table.php, chng ta s bn v quy tc t tn file sau. Tn ca class c th cha s nhng khng c khuyn khch . V du dch di ( _ ) ch c dng khi cn chia ng dn, nh trng hp Zend_Db_Table trn Zend framework classes m c tc gi l Zend hoc cc cng ty hp tc vi Zend th phi c t di th mc Zend/ v tn class phi bt u vi Zend_ Lu : nu on m khng phi 1 phn ca framework, nh l m c vit bi ngi dng cui, v hok phi Zend hay cc cng ty hp tc vi Zend th khng c php t tn bt u vi : Zend_ Interfaces Quy c t tn Interface cng ging vi t tn class nhng cui tn phi thm

Page 220 of 413

_Interface VD: Zend_Db_Table_Interface Tn file : Ch nhng k t, s , du gch di ( _ ) v du gch ngang ( - ) c chp nhn. Cc file cha php code phi c extension l .php ( tr nhng file View c mc nh l .phtml ) Tn file phi tun th vic tr n cc tn class nh trn : VD: Zend/Db.php Zend/Controller/Front.php Hm v phng php : Tn hm ch nn dng k t, gch di ( _ ) khng c chp nhn . Trong tn hm c th c cc con s nhng khng c khuyn khch Tn hm phi lun lun bt u bi cc k t thng . Khi tn hm gm nhiu t, k t u tin ca t th 2 tr i phi c vit hoa Tn hm c th rm r, nhng n phi c ngha v d on c chc nng ca n VD: PHP Code:
filterInput() getElementById() widgetFactory()

Trong lp trnh hng i tng, cc hm truy cp vo i tng phi lun c t tin t l get hay set Mc d tn hm hok th dng du gch di, nhng cc method trong class c khai bo protected hay private, phi c bt u vi k t gch di ( _ ). VD: PHP Code:
class Zend_Foo { protected function _fooBar() { // Code y } }

Hm vi tm vc xuyn sut script, c th c s dng nhng khng khuyn khch . Cc hm ny nn c t trong 1 class ring bit v khai bo static Hm hay bin vi tm vc static (trong 1 lp) khng nn khai bo private , thay vo l protected . Dng final nu hm hok nn dc tha k .

Page 221 of 413

Cc tham s mc nh trong hm S dng NULL thay cho FALSE nu t mc nh VD: PHP Code:
Public function foo($required, $optional = NULL)

( ch khi tham s $optional hok c gi tr mc nh ban u ) Tuy nhin, nu tham s mc nh c tr v true hay false, th dng false hay true lc y mi c chp nhn Bin : Tn bin c th cha cc k t . K t gch di ( _ ) hok c s dng, tn bin c th s dng s nhng hok c khuyn khch . Vi nhng bin nm trong 1 class m c khai bo private hay protected, k t u tin ca bin phi l 1 du gch di ( _ ) . Ngc li, bin khai bo l public th khng c bt u bng 1 du gch di ( _ ). VD: PHP Code:
class Zend_foo { protected $_bar; $bar; public }

Tng t nh tn hm, tn bin phi lun c bt u bng 1 k t thng . VD: PHP Code:
$nameOfCustomers

Tn ca bin nn rm r, vi iu kin phi c ngha v on c chc nng ca bin . Khng nn t tn bin nh $i, $n dng lp cc vng lp d trong tnh hung lp t nht . Vi nhng vng lp trn 20 dng code, tn bin dng m s ln lp, phi c ngha . Hng : Tn hng c th cha k t v du gch di v s . Tn hng phi c t theo quy lut : tt c cc k t u vit hoa Tn hng phi dng du gch di ( _ ) cch cc ch c ngha VD : 'VALUES_OF_PI' thay v 'VALUESOFPI' Gi tr Bool v NULL Khng ging cc ti liu PHP, Zend quy nh k t thng cho c 'true', 'false', v 'null'. Page 222 of 413

Coding Style Tags : PHP code phi c bao trong <?php ?> . Khng c dng dng tt : <? ?> Chui : Chui literal: Khi chui hok c bin trong ( gi l literal) , th phi c khai bo vi nhy n ' ' . Chui Literals c bao gm nhy n bn trong : Khi chui c bao gm nhy n trong, chng ta phi khai bo n bng nhy i " " . Ni suy bin : 2 dng sau c chp nhn trong vic ni suy bin : PHP Code:
$greeting = "Hello $name, welcome back!"; $greeting = "Hello {$name}, welcome back!";

Nhng dng ny th khng : PHP Code:


$greeting = "Hello ${name}, welcome back!";

Lu : Du { } s hok c hin th ra browser Ni chui : Khi ni chui,1 khong trng phi c thm vo trc v sau k t "." . VD: PHP Code:
$string = "$string1" . "$string2"

Hok hp l: PHP Code:


$string = "$string1"."$string2"

Khi thc hin ni chui, nn break lines VD: PHP Code:


$sql = "SELECT 'id', 'name' FROM 'people' " . "WHERE 'name' = 'Susan' " . "ORDER BY 'name' ASC ";

Mng : Mng tun t : S m khng c chp nhn trong vic nh s th t phn t trong mng . Vic nh s th t ca tt c cc mng phi c bt u bi s 0 . Khi khi to mng, 1 khong trng cn phi c thm vo sau mi du ,. VD: PHP Code:

Page 223 of 413

$sampleArray = array('first', 'second', 'third');

Hok hp l: PHP Code:


$sampleArray = array('first','second','third');

Mng c th c khi to trn nhiu dng . V phi thm khong trng vo dng th 2 tr i ngang hng vi dng 1 VD: PHP Code:
$sampleArray = array('first', 'second', 'third' 'fourth', 'fifth' , 'sixth' 'seventh', 'eighth', 'ninth')

Mng khng tun t : Khi khi to mng tun t, nn khai bo trn nhiu dng , v mi dng phi c thm khong trng t dng th 2 ngang hng vi dng th nht VD: PHP Code:
$simpleArray = array('first' => 'Element1', 'second' => 'Element2');

Lp Khai bo lp K t m class ( { ) phi c t ngay sau dng khai bo tn class. Mi dng code bn trong class phi c thc dng 4 khong trng . Ch 1 class trong 1 file PHP Thm code vo trong 1 file cha class c th c nhng hok c khuyn khch PHP Code:
/** * class Docblock Here */ class Zend_Class { // entire content of class // must be indented four spaces }

Class member variables Tn bin trong class ngoi vic c quy nh theo cch t tn bin thng thng cn phi tun theo cc quy lut sau :

Mi bin c khai bo trong class phi c t trn top Construct var khng c dng . Bin trong class phi c khai bo vi cc construct sau : private, protected, public . Truy cp trc tip vo bin trong class bng cch set public khng c khuyt khch, v th chng ta cn c cc hm lm iu ny v cc hm ny phi c tin t l set hay get

Page 224 of 413

Hm v methods : Cc method phi c khai bo vi cc t : privated, protected, public. Khng c b trng Static method phi c khai bo vi theo u tin ca visibility trong script VD: PHP Code:
public static foo() { ... } private static bar() { ... } protected static goo() { ... }

Ging nh class, ki t m hm ( { ) phi c t ngay sau dng khai bo tn hm VD: PHP Code:
public function functionName() { //code y }

Bn cnh , khng c php c khong trng gia tn hm v du ( . Hok hp l: PHP Code:


public function functionName () { //Code y }

Gi tr tr v trong hm khng c bao trong ( ) . VD: PHP Code:


public function functionName() { return $this->varName; }

Hok hp l: PHP Code:


public function functionName() { return ($this->varName); }

Type hinting c khuyn khch s dng khi c th VD: PHP Code:


class Zend_Component { public function foo(SomeInterface $object) { ..... } public function bar(array $options) { .... } }

Page 225 of 413

Hm, method v s dng Tham s ca hm phi c cch bi 1 k t khong trng . V d sau gi hm 3 tham s VD: PHP Code:
threeArguments(1, 2, 3);

Nu mun truyn tham tr, th phi t & trc bin trong hn khai bo hm , khng c khi s dng hm mi thm du & . Khi tham s ca hm c th l mng, khi gi hm c th dng array construct v c th phn ct mng ra nhiu dng VD: PHP Code:
threeArguments(array(1, 2, 3), 2, 3); threeArguments(array(1, 2, 3, 'Zend', 'Studio', $a, $b, $c, 56.44, $d, 500), 2, 3);

Cu lnh iu khin If/ Else/ Elseif Cc cu iu kin phi c 1 khong trng gia t if, elseif v ngoc m ( . Thm 1 khong trng na gia ngoc ng ) v ngoc cong {. trong ngoc n (), gia 2 bn ca cc ton t so snh phi c khong trng d c . Ngoc cong m { phi vit chung hng vi lnh if . Ngoc cong ng phi hng ca ring n VD: PHP Code:
if ($a != 2){ $a = 2; }

Hok hp l: PHP Code:


if($a!=2) { $a=2;}

Vi nhng lnh if m c thm else, elseif th phi tun theo v d sau : PHP Code:
if ($a != 2) { $a = 2; } else { $a = 7; } if ($a != 2) { $a = 2; } else if ($a == 3) { $a = 4;

Page 226 of 413

} else { $a = 7; }

Tt c cc lnh if, elseif hay else phi c {} . Mc d trong vi trng hp hok c chy dc . Phi dng elseif , rt khng khuyn khch dng else if Switch Tng t, gia ch switch v ngoc m ( phi c 1 khong trng, v gia ngoc ng ) v { phi c 1 khong trng na . Ngoc cong m { phi nm chung hng vi if , v ngoc cong ng } phi nm hng ca ring n Tt c cc ni dung bn trog switch phi c thc dng 4 khong trng . V ni dung ca mi case phi c thc dng thm 4 khong trng na ! PHP Code:
switch ($numPeople) { case 1: break; case 2: break; default: break; }

V construct default hok c b qua trong cu lnh switch . Lu : Nu trong 1 trng hp no , bn c tnh b break code chy 2 trng hp tr ln, th hy comment ti case bo l b break c ch ch ch hok phi qun ! PHP Code:
// break intentionally omitted

Inline Documentation K t # hok nn dng comment trong code . Files: Trong mi file cha PHP code, chng ta phi c 1 block trn u file miu t v file . Bn c th lm nh sau : PHP Code:
/** * Short description for file * * Long description for file (if any)... * * LICENSE: Some license information * * @copyright 2006 Zend Technologies * @license [url]http://www.zend.com/license/3_0.txt[/url] ense 3.0

PHP Lic

Page 227 of 413

* @version * @link * @since */

$Id$ [url]http://dev.zend.com/package/PackageName[/url] File available since Release 1.2.0

Classes Tng t nh vy, cc class cng cn phi c PHP Code:


/** * Short description for class * * Long description for class (if any)... * * @copyright 2006 Zend Technologies * @license [url]http://www.zend.com/license/3_0.txt[/url] PHP Lic ense 3.0 * @version Release: @package_version@ * @link [url]http://dev.zend.com/package/PackageName[/url] * @since Class available since Release 1.2.0 */

Functions Vi mi hm, bao gm c cc hm dc nh ngha trong class, cn c 1 block gm:


Miu t c bn v hm Tt c cc bin ca hm Tt ca cc gi tr tr v ca hm Nu 1 hm hay 1 method trong class c throw exception th dng @throw

VD: PHP Code:


/** * Does something interesting * * @param Place $where Where something interesting takes place * @param integer $repeat How many times something interesting should happen * @throws Some_Exception_Class If something interesting cannot happen * @return Status */ public function doSomethingInteresting(Place $where, $repeat = 1) { // implementation... }

Require v include Include, include_once, require, require_once hok nn dng () . VD : PHP Code:
include 'header.php';

Hok hp l: PHP Code:


include ('header.php');

Page 228 of 413

Nhng iu cn bit v PHP 5.4


PHP 5.4 l 1 phin bn k tip k t PHP 5.3 ( hy chun b cho s ra i PHP 6(h tr full Unicode) ngay t by gi ). PHP 5.4 c tng cng g b nhng hm b phn i v tng 20% tc chy, cng vi vic gim b nh s dng !!! Tm hiu v 1 s tnh nng v ci tin : Mt vi tnh nng v ci ting quan trng nht m mnh s trnh by l : traits, c php gin n v mng, thit lp webserver s dng vi vi cu lnh n gin, s dng $this v truy cp cc thnh vin ca class, k hiu <?= v 1 s tnh nng khc s xut hin trong PHP 5.4 PHP 5.4 ci thin 1 cch ng k kh nng x l v sa hn 100 li . Nhng tnh nng c g b nh : register_globals, magic_quotes ( v thi gian) v safe_mode . V 1 ci tin gi tr khc l : kh nng h tr multibyte s c bt mc nh v default_charset s c thay i t ISO-8859-1 to UTF-8 Content-Type: text/html; charset=utf-8 s lun c bao hm . V th khng cn phi s dng n cng nh thm 1 s header c c s tng thch UTF-8. Traits Trait (horizontal reust/multible inheritance) l 1 b methods c cu trc nh class ( nhng hok th instantiate ). Trait gip cc nh pht trin s dng li 1 b methods t cc class c lp 1 cch t do . Bi v PHP l 1 ngn ng tha k n (single inheritance), 1 subclass c th tha k t ch 1 superclass, l ni Trait pht huy tc dng ! ng dng ln nht ca trait l khi nhiu class share cng 1 hm. V d, gi s bn ang build 1 website, v cn c 2 Facebook v Twitter APIs . Chng ta xy dng 2 class c chung 1 function/method tn l cURL . Thay v copy & paste n thun method ( c th s dng trong 2 class) , chng ta s s dng Trait ( copy & paste, theo cch ca compiler ). Bng cch ny, chng ta to ra 1 source code d s dng, v tun th nguyn tc DRY (Dont Repeat Yourself ). V d : PHP Code:
/** cURL wrapper trait */ trait cURL { public function curl($url) { $ch = curl_init();

Page 229 of 413

curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); return $output; } } /** Twitter API Class */ class Twitter_API { use cURL; // use trait here public function get($url) { return json_decode($this>curl('http://api.twitter.com/'.$url)); } } /** Facebook API Class */ class Facebook_API { use cURL; // and here public function get($url) { return json_decode($this>curl('http://graph.facebook.com/'.$url)); } } $facebook = new Facebook_API(); echo $facebook->get('500058753')->name; // Xut tn Rasmus Lerdorf /** By gi hy tm hiu v s tuyt vi ca c php PHP 5.4 */ echo (new Facebook_API)->get('500058753')>name; // Xt tn Rasmus Lerdorf $foo = 'get'; echo (new Facebook_API)->$foo('500058753')>name; // v li xut tn Rasmus Lerdorf echo (new Twitter_API)->get('1/users/show.json?screen_name=rasmus')>name; // v cng l xut Rasmus Lerdorf

Nu cm thy kh hiu, bn c th xem tip on code sau : PHP Code:


trait Net { public function net() { return 'Net'; } } trait Tuts { public function tuts() {

Page 230 of 413

return 'Tuts'; } } class NetTuts { use Net, Tuts; public function plus() { return '+'; } } $o = new NetTuts; echo $o->net(), $o->tuts(), $o->plus(); echo (new NetTuts)->net(), (new NetTuts)->tuts(), (new NetTuts)>plus();

Lu : magic constant trong trait l __TRAIT__ . Xy dng CLI Webserver Trong web development, ngi bn tt nht ca PHP l Apache HTTPD Server . Thnh thong, c th l qu mc cn thit khi ci t httpd.conf ch s dng n trong 1 mi trng pht trin web , khi bn ch cn 1 web server nh c bt u vi ch 1 dng lnh n gin ! V v th PHP 5.4 n vi chc nng CLI Web server Lu : PHP Web server c xy dng ch cho cc nh pht trin, hok c s dng trong mc ch thng mi ! Hng dn pha di dnh cho Window : Bc 1 : to Document root directory, router file v index file . n h thng ( v d C:\). To 1 folder tn public_html . To 1 file trong folder ny, t tn l router.php copy on code di y, v paste n vo file va to : PHP Code:
<?php // router.php if (preg_match('#\.php$#', $_SERVER['REQUEST_URI'])) { require basename($_SERVER['REQUEST_URI']); // serve php file } else if (strpos($_SERVER['REQUEST_URI'], '.') !== false) { return false; // serve file as-is } ?>

By gi to 1 file khc tn index.php . Copy on code sau v save vo file : PHP Code:

Page 231 of 413

<?php // index.php echo 'Hello Nettuts+ Readers!'; ?>

M file php.ini ( nm trong ng dn PHP , v d : C:\PHP ) Tm include_path ( nm dng th 708 ) . Thm C:\public_html vo cui chui gia nhy i, phn tch bi du chm phy (;) . Kt qu cui cng s nh th ny : PHP Code:
include_path = ".;C:\php\PEAR;C:\public_html"

Save file li v n bc 2 Bc 2 : chy web server . M command promt ( Window + R, g cmd, nhn enter ) . Bn s thy 1 ci g i loi nh : M:
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\nettuts>

i ng dn hin ti n file ci ng PHP bng c php sau : M:


C:\Documents and Settings\nettuts>cd C:\php C:\php>

n on quan trng nht : chy web server . Chp : M:


php -S 0.0.0.0:8080 -t C:\public_html router.php

v paste vo command promt ( click chut phi , chn paste ). Nhn enter . Nu tt c chy ng, bn s thy 1 ci g i loi nh bn di ^^ : ( lu hok c ng command promt, nu ng, web server s b tt ) M:
C:\php>php -S 0.0.0.0:8080 -t C:\public_html router.php PHP 5.4.0 Development Server started at Fri Mar 02 09:36:40 2012 Listening on 0.0.0.0:8080 Document root is C:\public_html Press Ctrl-C to quit.

M browser ln v type vo : M:
http://localhost:8080/index.php

bn s thy : Hello Nettuts+ Readers! Lu 1 : to 1 file php-server.bat vi ni dung sau M:


C:\php\php -S 0.0.0.0:8080 -t C:\public_html router.php.

Double click v chng ta s chy c web server . Lu 2 : S dng 0.0.0.0 thay v localhost nu bn d on server ca bn s c truy

Page 232 of 413

cp t internet ! C php mng ngn gn PHP 5.4 cung cp 1 c php mng ngn gn : PHP Code:
$fruits = array('apples', 'oranges', 'bananas'); // "old" way // Khai bo mng nh kiu Javascript $fruits = ['apples', 'oranges', 'bananas']; // Mng hok tun t $array = [ 'foo' => 'bar', 'bar' => 'foo' ];

Lu : hy nh rng phng php c s vn v mi c s dng, c php mng ngn gn ch l 1 s thay th khi cn n gin !!! Array dereference S hok cn bin tm khi x l vi mng . V d chng ta cn ly tn gia ca chui Alan Mathison Turing PHP Code:
echo explode(' ', 'Alan Mathison Turing')[1]; // Xut Mathison

Nhng trc bn 5.4, chng ta phi : PHP Code:


$tmp = explode(' ', 'Alan Mathison Turing'); echo $tmp[1]; // Xut Mathison

By gi, nu chng ta mun ly t Turing ? PHP Code:


echo end(explode(' ', 'Alan Mathison Turing')); // Xut Turing

Cu lnh trn s chy tt, nhng s hin ra 1 li E_STRICT (chun Strict : ch bin mi c truyn tham tr ) . Bi v n tr thnh 1 phn ca E_ALL trong error-reporting. Mt v d nng cao : PHP Code:
function foobar() { return ['foo' => ['bar' => 'Hello']]; } echo foobar()['foo']['bar']; // Hello

$this trong cc hm v danh Bn c th tr n cc i tng t cc hm v danh ( c bit vi tn closures ) bng cch s dng $this .

Page 233 of 413

PHP Code:
class Foo { function hello() { echo 'Hello Nettuts!'; } function anonymous() { return function() { $this>hello(); // $this kiu ny s hok chy c trong cc phin bn trc . }; } } class Bar { function __construct(Foo $o) // i tng ca class Foo typehint { $x = $o->anonymous(); // ly ra Foo::hello() $x(); // chy Foo::hello() } } new Bar(new Foo); // Xut Hello Nettuts!

Chng ta vn c th tip cn phng php ny trong cc phin bn trc nhng dng cu lnh qu mc cn thit : PHP Code:
function anonymous() { $that = $this; // $that is now $this return function() use ($that) { $that->hello(); }; }

Tag <?= Mc k setting trong php.ini, short_open_tag , <?= (open PHP tag v echo ) s lun lun available . C ngha l bn c th an ton dng : PHP Code:
<?=$title?>

Thay v PHP Code:


<?php echo $title ?>

Biu din s nh phn : K t bn ny, s nguyn c th l s thp phn (c s 10 ), s thp lc phn ( c s 16), s bt phn ( c s 8 ) hay nh phn ( c s 2) , c t cc k t + - pha trc . ng s bt phn, t trc con s vi 0 (zero). ng thp lc phn, t trc con s vi 0x. ng nh phn, t trc vi 0b.

Page 234 of 413

V d: din t s 31 chng ta c PHP Code:


echo echo echo echo 0b11111; // binary, introduced in PHP 5.4 31; // duh 0x1f; // hexadecimal 037; // octal

Callable Typehint Typehint c s dng tng cng sc mnh ca PHP . Typehint c th l array, l object t PHP 5.1 v l callable t PHP 5.4 . Cc kiu typehint truyn thng : int hay string s hok c h tr na !! PHP Code:
function my_function(callable $x) { return $x(); } function my_callback_function(){return 'Hello Nettuts!';} class Hello{static function hi(){return 'Hello Nettuts!';}} class Hi{function hello(){return 'Hello Nettuts!';}} echo my_function(function(){return 'Hello Nettuts!';}); // anonymous fu nction echo my_function('my_callback_function'); // callback function echo my_function(['Hello', 'hi']); // class name, static method echo my_function([(new Hi), 'hello']); // class object, method name

B m thi gian chnh xc cao $_SERVER[REQUEST_TIME_FLOAT] c thm vo, vi b m tnh ti micro giy ( theo kiu float ). iu ny rt quan trng cho cc bn khi mun tnh tg chy script . PHP Code:
echo 'Executed in ', round(microtime(true) $_SERVER['REQUEST_TIME_FLOAT'], 2), 's';

Li kt V mt tng th, PHP 5.4 cung cp 1 s lng ln ci tin . Bn ngh PHP 5.5 s mang ti cho chng ta ci tin no v bn mong i iu g ? NGUN: Dch t http://net.tutsplus.com/tutorials/ph...you-must-know/ !

Cc hm rt hu ch trong PHP bn cn bit !


1/ Hm c bao nhiu tham s cng c Page 235 of 413

Bn c th bit trong PHP chng ta c th to hm vi cc tham s c gi tr mc nh ban u . Nhng c 1 phng php cho php 1 hm chp nhn mi tham s ! V d u tin vi hm c tham s c gi tr mc nh : PHP Code:
// Hm c 2 tham s mc nh function foo($arg1 = '', $arg2 = '') { echo "arg1: $arg1\n"; echo "arg2: $arg2\n"; } foo('hello','world'); /* Xut arg1: hello arg2: world */ foo(); /* Xut arg1: arg2: */

By gi, hy cng xy dng 1 hm c th truyn vo mi tham s . func_get_args() s gip chng ta lm iu : PHP Code:
// Tham s rng nh function foo() { // returns an array of all passed arguments $args = func_get_args(); foreach ($args as $k => $v) { echo "arg".($k+1).": $v\n"; } } foo(); /* Khng xut g c */ foo('hello'); /* Xut arg1: hello */ foo('hello', 'world', 'again'); /* Xut arg1: hello arg2: world arg3: again */

Page 236 of 413

2/ S dng GLOB() tm files Nhiu hm trong PHP c tn di v c tnh m t chc nng ca n . Tuy nhin, tht kh ni hm glob() c nhim v g nu chng ta cha tng s dng qua . Tht ra, glob() c chc nng nh hm scandir() nhng l 1 phin bn cao cp hn ~~ PHP Code:
// Ly ht tt c cc file ui .php $files = glob('*.php'); print_r($files); /* Xut Array ( [0] => phptest.php [1] => pi.php [2] => post_output.php [3] => test.php ) */

Bn cnh , chng ta c th ly ra nhiu file : PHP Code:


// Ly tt c file c ui .php v .txt //GLOB_BRACE : trong {} s dc hiu l hoc << hoc php hoc txt th l y ra $files = glob('*.{php,txt}', GLOB_BRACE); print_r($files); /* Xut Array ( [0] => phptest.php [1] => pi.php [2] => post_output.php [3] => test.php [4] => log.txt [5] => test.txt ) */

File cng c th c ly ra vi ng dn : PHP Code:


$files = glob('../images/a*.jpg'); print_r($files); /* Xut Array ( [0] => ../images/apple.jpg [1] => ../images/art.jpg ) */

Cn nu bn mun ly ng dn y , ch cn dng realpath() :

Page 237 of 413

PHP Code:
$files = glob('../images/a*.jpg'); // s dng hm n mi phn t mng $files = array_map('realpath',$files); print_r($files); /* output looks like: Array ( [0] => C:\wamp\www\images\apple.jpg [1] => C:\wamp\www\images\art.jpg ) */

Tt nhin cc v d trn bn test s cho ra kt qu khc, v folder trong my ca tc gi hok ging vi folder ca bn . Ty c ng bin nh ^^ 3/ Thng tin b nh c s dng Nu bit c thi gian chy script, bn s ti u code tt hn ! PHP c 1 b x l b nh rt phc tp . S s dng b nh ca on script c th tng, gim trong khi n n chy . ly b nh hin ti ang c s dng, chng ta dng memory_get_usage() , ly b nh maximum c s dng trong c qu trnh, dng memory_get_peak_usage() : PHP Code:
echo "Ban u: ".memory_get_usage()." bytes \n"; /* prints Ban u: 361400 bytes */ // S dng b nh no for ($i = 0; $i < 100000; $i++) { $array []= md5($i); } // Loi b mng for ($i = 0; $i < 100000; $i++) { unset($array[$i]); } echo "Cui cng : ".memory_get_usage()." bytes \n"; /* Xut Cui cng: 885912 bytes */ echo "Cao nht: ".memory_get_peak_usage()." bytes \n"; /* Xut Cao nht: 13687072 bytes */

4/Magic Constants PHP cung cp mt s magic_constants hu ch nh :

Page 238 of 413

ly ra dng hin ti (__FILE__), ly ra ng dn hin ti (__FILE__), ly ra th mc (__DIR__), tn hm (__FUNCTION__), tn lp (__CLASS__), tn method ( __METHOD__) v namespace (__NAMESPACE__) Chng ta s hok i tng constant, m ch gii thiu 1 vi v d hu ch : PHP Code:
// y l ng dn tng i // C th bn s gp li nu chy script t th mc khc y nh require_once('config/database.php'); require_once(dirname(__FILE__) . '/config/database.php');

Bn hy chy script trn, ng to file database.php trong folder config nh, hiu __FILE__ c nhim v g, bn c vic copy->paste-> chy . Bn s thy li cha ? Nu thy ri, bn o th t ca 2 dng require_once() trn, bn chy li v s hiu ^^ Lu : nn s dng __FILE__ khi include script khc bn nh . S dng __LINE__ s gip chng ta debug d hn . Bn c th tm ra s th t ca dng : PHP Code:
// some code // ... my_debug("some debug message", __LINE__); /* Xut Line 4: some debug message */ // some more code // ... my_debug("another debug message", __LINE__); /* Xut Line 11: another debug message */ function my_debug($msg, $line) { echo "Line $line: $msg\n"; }

5/ To ID c bit : C 1 vi trng hp chng ta cn phi to ra nhng chui c bit ( khng trng lp ), ngi ta thng dng md5() lm iu ny, nhng md5() khng thc s sinh ra lm iu ! PHP Code:
// generate unique string echo md5(time() . mt_rand(1,1000000));

C 1 hm chuyn dng x l iu trong PHP tn l : uniqid() PHP Code:


// To chui c bit echo uniqid();

Page 239 of 413

/* Xut 4bd67c947233e */ // To 1 chui c bit khc echo uniqid(); /* Xut 4bd67c9472340 */

C th bn ang thc mc rng d hm to chui c bit nhng c 1 s k t u tin ging ht nhau mi khi chy ! Bi v vic to chui ny ph thuc vo thi gian server . gim c hi chng c th y chang nhau, chng ta thm prefix vo : PHP Code:
// vi prefix echo uniqid('foo_'); /* Xut foo_4bd67d6cd8b8f */ // vi nhiu k t hn echo uniqid('',true); /* Xut 4bd67d6cd8b926.12135106 */ // prefix v nhiu k t hn echo uniqid('bar_',true); /* Xut bar_4bd67da367b650.43684647 */

Hm ny s to chui vi s k t t hn md5(), s gip bn tit kim thi gian hn . 6/ Serialization Bn bao gi lu 1 bin phc tp vo database hay file ? Bn khng cn phi c nhng gii php ca mnh chuyn i mng v dng chui ri np vo, bi v PHP c vo hm dng vi mc ch ny ! Chng ta s tm hiu 2 hm : serialize() v unserialize() PHP Code:
// 1 mng phc tp $myvar = array( 'hello', 42, array(1,'two'), 'apple' ); // convert to a string $string = serialize($myvar);

Page 240 of 413

echo $string; /* Xut a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:" apple";} */ // Bn c th ly li mng ban u $newvar = unserialize($string); print_r($newvar); /* Xut Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple ) */

Tuy nhin, t khi JSON tr nn ph bin, h quyt nh thm s h tr vo PHP5.2 . By gi bn c th s dng json_encode() v json_decode() : PHP Code:
// Mng phc tp $myvar = array( 'hello', 42, array(1,'two'), 'apple' ); // Chuyn i mng thnh string $string = json_encode($myvar); echo $string; /* Xut ["hello",42,[1,"two"],"apple"] */ // Ly li mng ban u $newvar = json_decode($string); print_r($newvar); /* Xut Array ( [0] => hello [1] => 42 [2] => Array (

Page 241 of 413

[0] => 1 [1] => two ) [3] => apple ) */

C v 2 hm ny nh gn hn nh ^^ . Hn th na, chng tng thch vi javascript v 1 s ngn ng khc . Tuy nhin, cho nhng i tng phc tp qu, c th s b mt thng tin y ! 7/ Nn chui Khi ni v s nn, chng ta c ngh l nn file zip !! Nhng chng ta hon ton c th nn 1 chui phc tp trong PHP . v d sau y, chng ta s dng hm gzcompress() v gzuncompress() PHP Code:
$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales. "; $compressed = gzcompress($string); echo "Size ban u: ". strlen($string)."\n"; /* Xut Size ban u: 800 */ echo "Size sau khi nn: ". strlen($compressed)."\n"; /* Xut Size sau khi nn: 418 */ // Ly li chui ban u $original = gzuncompress($compressed);

Chng ta c th tit kim ti 50% tng kch thc y ! Bn cnh , 2 hm gzencode() v gzdecode() cng lm iu tng t nhng dng thut ton khc thi .

Page 242 of 413

8/ ng k 1 hm shutdown Vi hm register_shutdown_function(), chng ta c th lm 1 vi chuyn trc khi script ngng chy . V d m thi gian chy script n : PHP Code:
// Ly thi gian bt u chy $start_time = microtime(true); // Code y // ... // Xut code chy c bao lu ri echo "Thi gian chy script : ". (microtime(true) - $start_time). " seconds.";

Vi ci nhn u tin, c th bn thy tht tm thng !! on code trn ch l thm on code tnh thi gian cui script . Tuy nhin, nu bn gi hm exit() , on code trn s hok bao gi chy c . Thay vo , n s thng bo li , hoc l khi script bn b kt thc bi ngi dng, bng cch nhn nt stop trn trnh duyt chng hn !!! Khi bn s dng register_shutdown_function(), on code ca bn s chy bt k n b ngng t xut v l do g ! PHP Code:
$start_time = microtime(true); register_shutdown_function('my_shutdown'); // Code y // ... function my_shutdown() { global $start_time; echo "Thi gian chy script : ". (microtime(true) - $start_time). " seconds."; }

Ngun : dch t http://net.tutsplus.com/tutorials/ph...-need-to-know/ ( test ht ) + thm vo 1 vi kin ring P/s: c b qua s 5/ v n hok s dng cho h iu hnh WINDOW

iu g khin bn l 1 coder ti ?
Page 243 of 413

Tt c chng ta u c nhng thi quen xu, chng ta s tm hiu , cng nhau kim tra, nh gi li v sa ngay lp tc ! Bn hok c k hoch trc khi bt u code Trc khi bn bt u code, bn cn phi c 1 chin lc . iu ny s gip bn theo di c code, v trnh vic khng hiu code s khin bn nhc u, y l cha mn n nhng linh hn ti nghip khc c code ca bn =]]] Mt cch khc phc iu ny l vit mt on phc tho cc chc nng ca on script bng cch comment u file V d : PHP Code:
<?php // Include necessary data // Initialize the database connection // Include the common header markup // Determine the page variables from the POST data // Load the proper database info using the page vairiables // Loop through the loaded rows // Format the images for display // Create a permalink // Format the entry for display // Add the formatted entry to the entry array // Collapse the entry array into page-ready markup // Output the entries // Include the common footer markup

Nh bn thy, mc d cha vit dng code no, chng ta bit file ny s lm g v n s nh th no !! V khi 1 chc nng na c thm vo, bn ch cn sa comment trn . Chng ta cn phi thay i cch tip cn, n s gip k nng t chc code tt hn Lu : on comments trn ch l v d . Mt vi comments trn c th hok cn thit, 1 vi s b thay i, v 1 vi comments c cc chc nng khc c th s c thm vo file na .

Page 244 of 413

Bn khng comment g c Vn ti t nht l khi chng ta code, chng ta khng comment y , hoc thm ch khng comment . Khi chng ta cn phi chnh sa code, c th s gy hng c ng dng . Qu trnh comment code s din ra trong khong t 10 pht ti 6 gi ! V d : PHP Code:
$pieces = explode('.', $image_name); $extension = array_pop($pieces);

on code trn lm g ? C phi bn ang suy ngh hiu c nhim v g ? Bn vn ang hiu 1 cch hok chc chn $extension s cha g ? Vy chng ta th comment : PHP Code:
// Ly ra nh dng ca hnh nh $pieces = explode('.', $image_name); $extension = array_pop($pieces);

By gi th khng cn phi suy ngh g c : bn nhn comments, bn nhn tip code v hiu ngay on code c ngha g ! Comment nh trn c th ch gip bn tit kim thi gian 5 giy nhng nu trong 1 ng dng ln, s l 1 vn !
Vy, by gi hy tp vit comment trc khi code i nh !!!

Bn hi sinh s r rng i ly s ngn gn Mt vi v d in hnh cho vic hi sinh ny l khi bn dng cc bin vi tn hok r rng ( nh l $a --- vy $a cha g ? ) hay b qua ngoc cong { } . PHP Code:
<?php $foo = 8; if( $foo<10 ) if( $foo>5 ) echo "Ln hn 5!"; else echo "Nh hn 5!"; else echo "Ln hn 10!"; echo "<br />Another note.";

Vi ci nhn u tin, bn s ngh dng cui cng s xut ra nu $foo ln hn 10 ! Nhng bi v dng else v if nu hok c ngoc cong th ch nh hng ti dng ngay sau n, nn Page 245 of 413

Another note s b b qua . Bn c th nhn ra iu ch trong vi giy ? Tt nhin l c Nhng chng ta c nn lng ph nng lng lm iu ? Hon ton khng Thm ngoc cong vo ch lm code bn tng 1 vi dng, nhng n s gip code r rng hn nhiu PHP Code:
<?php $foo = 8; if( $foo<10 ) { if( $foo>5 ) { echo "Ln hn 5 5!"; } else { echo "Nh hn 5!"; } } else { echo "Ln hn 10!"; } echo "<br />Another note."; Vy hy c gng code tht r rng, ch vi vi dng code bn s gip ng khc khng phi cng no ra hiu bn ang code g .

Bn hok theo 1 chun code no c Vit code theo cch ca bn s gip bn tha mn, thy d chu nhng i vi ngi khc th hon ton khng .
V vy, hy vit code theo 1 chun v duy tr iu !! Mi ng s cm n bn ! ( C th bao gm c bn y )

Bn lp li code Khi bn quan st code ca bn, nu bn gp li , hy t hi , mnh c cn phi sa nhiu hn 1 file ? Nu bn tr li c, n lc nhn li cch bn code !!! Nu bn c nhiu on code cng chc nng , bn ang lm sai y ! Bn khng theo 1 m hnh no c Code ca bn cn phi c 1 m hnh .Ti khng ng bn nn dng m hnh MVC hay Page 246 of 413

i loi vy. ti l bn cn phi bit cch phn loi cc thnh phn, ni dung , v.v v nhng thnh phn, ni dung y s lm g Khi bn code theo 1 m hnh, nhiu quyt nh s tr nn t ng ha, v khi 1 ngi no xem code bn, h s hok phi on nhiu khi tm kim 1 chc nng no . Lm iu ny s hok mt nhiu thi gian, nhng s gip bn rt nhiu y !
Vy bn hy c gng code theo 1 m hnh nh !!!!

Bn qu thng minh cho cc sn phm ca bn C 1 t vn v gii php n gin v gii php phc tp Chng ta khng cn 1 cch tip cn phc tp vi nhng vn n gin !!! Vi 1 level c bn, gii php n gin lun c mong i . Bn ang i t im A n im B, bn i ng vng qua im C s th v hn, nhng chng gip ch c g c @@ Vi 1 cu tr li phc tp, bn s khin ngi khc khng hiu, khng phi l v ng khc hok thng minh nh bn, bi c th bn hc c t 1 bi bo m h cha c qua, v v th s dn n hiu sai hoc hok hiu .
ng lm gim gi tr ca mnh, nhng cng nh trnh nhng cch tip cn cc k phc tp vi nhng vn n gin nh !

Bn cnh , bn hok nn code theo kiu t cho mnh l 1 chuyn gia !! Vi 1 trit l i loi l : nu bn hok hiu code mnh, tt nht ng nn c n . y l 1 cch tip cn anti cng ng, v hok c tnh xy dng, hng dn . V 1 lp trnh vin nh vy s hok c s gip ca mi ng khi anh ta gp vn vi code .
V vy, trnh vic to code kh hiu di mi hnh thc nh . iu s hok khin bn thng minh hn hay nhn c nhiu s tn trng hn u .

Khng cp nht kin thc Bn cnh vic li bing comment, vit code kh hiu, v.v trn th vic hok cp nht kin thc cng khin bn tr thnh 1 coder ti . Cng ngh pht trin lien tc, cng ngh mi ra i gii quyt nhng vn ang tn ng, nu bn chn cch ng yn khng chu tin b th tht l sai lm trm trng . Di y l nhng vn khc bn nn tham kho Bn c gng lm tt c Bn khng th theo kp c cng ng . Nhng tht may mn, c 1 s ngi dnh thi gian ca h cp nht cng ngh mi, v vit tutorial v nhng g h hc c . Nu

Page 247 of 413

bn tm c trong nhng ngi ny 1 ngi c cch tip cn v phong cch vit code ging bn , bn c th hc hi h . Vic theo di bi vit ca vi ngi hp vi bn s tt hn nhiu so vi theo di mi blog cng ngh bn gh qua vi 1 vi l do sau :

Nu bn tin tng kin ca h, h s gip bn hc hi cng ngh Nu 1 cng ngh xut hin nhiu ln trn cc blog ny, bn hy dnh thi gian nm bt n, v n s l cng ngh ph bin sau ny Nhng tutorial ca blog s gip bn tit kim rt nhiu thi gian khi phi bt u t con s 0

Bn khng dm i mt vi th thch Nu bn khng dm i mt vi th thch, th bn c vn ri y . Hy tm 1 vi th thch trong d n bn ang lm ! T hi bn cc cu sau khi ang xem d n :

C cng ngh mi no gy thch th vi mnh c ng dng y ? Mnh hc thm c 1 cng ngh mi no k t ln cui cng mnh xem 1 d n nh th ny ? u l cch thc hin tt nht ti c th m bo rng ti s theo ui ti cng project ny ?

Lu : ti khng ni v vic lm 1 ci g rt phc tp y, c th n gin ch l thm Docblocks vo objects .


Hy c khng t thuyt phc bn thn rng mnh hc nhng g cn hc nh !

Bn hok chia s Hy ci thin bng cch trao i, tho lun vi cc ng nghip coders nh . lm c iu ny c nhiu cch : Nu bn hiu r 1 vn no , hy vit tutorial v n v cung cp m ngun . Nu bn hok thch nh th, bn c th lt qua vi din n v gip nhng ngi mi .
Bn s hi : Ti sao gip nhng ngi mi s gip ti tin b ?

Thng thng, nu bn post 1 gii php cn c ti u , s c nhng lp trnh vin chuyn nghip gip bn . Vy chia s l 1 mi tn trng 2 con nhn : bn khng ch gip ngi khc tin b, m cc k nng ca bn s sc bn hn vi s tr gip ca nhng cao th ! Bn hok c nhng d n th nghim Nu chng ta mun tham gia vo 1 d n ln v honh trng, cch tt nht l chng ta Page 248 of 413

hy th sc vi nhng d n th nghim trc vi cc cng ngh bit . Vi phng php , chng ta s tin b hn, v khng bao gi tr deadline hay lm sai c . Chng ta u c ti Theo logic, nu chung ta tin b vo thi im by gi, tc l trong qu kh chng ta rt ti . Ti bit l khi ti nhn li nhng on code ti vit trong qu kh, ti s cm thy kinh hong !

V vy.hy dng li
Chng ta u khng hon ho . Nhng chng ta c th lm mi th vi nng lc ca mnh cng gn ch chng ta mun cng tt ................

Cc li c bn trong lp trnh PHP


Trong lp trnh c 3 loi li xp theo th t tng dn kh ca vic sa li l : Li c php: li ny d mc phi nhng cng rt d sa, v khi PHP parse, li s c ch ra dng my , li g . Ch cn ch k lng hn th s trnh c li ny Li runtime Li ny l li v thi gian chy script, v d bn gi file : require('abc.php'). Nhng file abc.php li khng tn ti . Li logic y l loi li kh nut nht v au u nht, v khi chy khng h c 1 li no c, nhng n s hok chy nh cch m chng ta mun n chy @@ . Debug li ny l 1 qu trnh ....chy nc mt . V d n gin nh bn lm 1 php ton cng nhng thay v + bn li - => ra kt qu khng mong mun. Khi thut ton cng phc tp m b 1 li logic th c khi b c ngy tm xem n sai u . Di y l 1 s li hay thi quen hok tt hay gp : 1/ Nhy n, nhy i Chng ta thng hay s dng cho mi chui, d l chui c ni suy hay khng. iu ny s gy chm cho code v du nhy c nhim v truy xt xem c bin no cn c ni suy hay khng . Lu 1 : nhy i c th cha bin v nhy n, nhy n th c th cha nhy i nhng khng th xut gi tr ca bin . Lu 2 : bin mi trng khng th ni suy c nh $_POST, $_GET, $FILES, v.v 2/ Du chm phy sau vng lp Du chm phy l 1 tc nhn cc k quan trng v th nn n cng c kh nng gy ra

Page 249 of 413

nhng li logic rt rt kh pht hin . Vd : PHP Code:


for($i =0; $i<20; $i++) ;{ echo $i; } //Ch xut s 20 thay v xut t 0->19 nh bn mong mun . // V for($i=0; $i<20; $i++); <<<<Lp bn thn n tng $i cho n khi $ i=19 . // Sau $i s c tng ln 1 l 20 ri mi chy xung dng echo $i

Bn cht ca dng FOR: for($i = value1(1); $i < value2(2); $i++(3)){ code y(4) } Dng for trn s lm cng vic nh sau : bt u t $i = value 1, sau kim tra xem c value1 c b hn value2 hay khng, nu c, chy code --->tng $i ln 1. Nu khng -->dng li . S : (1) => (2) =>(4)=>(3)=>(1)=>....cho n khi bc (1)=>(2) khng tha na 3/ Thiu break sau switch Mi ngi dng switch thng rt hay qun break; sau mi trng hp . iu ny gy ra 1 li logic l code s chy nhiu hn 1 trng hp m mnh mong mun. 4/ Khng gii hn thi gian chy ca script Khi run 1 on script rt hay xy ra li runtime, tc l script chy gp li chy hoi chy hoi, hay cng c th l 1 vng lp n v cc VD: PHP Code:
$i =0; while($i <3){ echo "$i"; // Vng lp chy mi v khng tng gi tr $i ln, $i mi bng 0 v n mi <3 ... }

Nh vy s rt tn ti nguyn v thi gian, v th gii hn 1 khong thi gian chy script l 1 iu cn thit . Ta dng hm : set_time_limit($seconds) <<mc nh l 30s Hm set_time_limit khi c gi n s reset li b m, tc l nu script tn 2s chy n dng set_time_limit(1) th tng cng cn 3 giy script dng li . Bn c th chnh gi tr mc nh default 'max_execution_time' trong file php.ini . Tuy nhin 1 s host hok cho php lm iu ny . . . v d : PHP Code:
set_time_limit(1); $i =0; while($i<3){ echo 'a'; }

Page 250 of 413

5/ Tin tng vo ngi dng Chng ta thng n nhng trng hp ln m b qua cc mt xch nh . Chng ta thng qun xt trng hp gp ngi dng nguy him. V d ti field name ca form, ngi ta nhp 1 cc k t nh ' " $ ... Nu chng ta thao tc vi nhng gi tr th code s vn chy tt nhng khi validate th s c c trm li v HTML => nh hng nghim trng ti SEO . V th chng ta nn dng htmlentities() hay htmlspecialchars() escape characters . Cch dng : $name = htmlentities($_POST['name']); //Hm htmlentities() c nhim v chuyn i kh nhiu k t mc nh thnh m : http://www.w3schools.com/html/html_entities.asp //Hm htmlspecialchars() c nhim v ch chuyn i 5 k t : > < ' " & Ch khi click phi chn view source th mi thy s thay i ca n V d: ngi dng nhp vao field name : ABC ' s books & CD . Sau : $name = htmlentities($_POST['name']) echo "$name"; <<< Web vn hin th ABC 's books nhng khi view source th l ABC &#39; s books &amp; CD 6/S dng sai cc ton t Hy chc chn rng bn hiu =, ==, === s dng = ch c dng gn bin v dng trong query MySQL, == dng trong if, v.v , cn === th 2 gi tr phi bng nhau v phi cng kiu d liu . V d 1 : PHP Code:
$a = '5'; if($a ='6') { code y }

trn l nu gi tr ca $a l 6 th chy code trong if, nhng if($a = 'number') ng vi tt c cc gi tr number khc khng V d 2 : 5 ==5 l ng nhng 5===5 l sai

Trch dn: hc hi t 1 ti liu ting anh, v vit li theo phong cch ca mnh thm vo 1 vi v d

Code gi mail trong PHP


Page 251 of 413

Hm mail c php nh sau : mail(to,subject,message,options) Trong : + to:a ch ngi nhn + subject :tiu th + message :ni dung th + options:cc tu chn b sung V d : File sendmail.php PHP Code:
<?php if (isset($_POST['sendmail']) && $_POST['sendmail']=="send") { $from=$_POST['from']; $to=$_POST['to']; $subject=$_POST['subject']; $message=$_POST['message']; $options="Content-type:text/html;charset=utf-8\r\nFrom:$from\r\nReplyto:$from"; mail($to,$subject,$message,$options); echo" gi mail"; } ?> <form method="post" action="sentmail.php"> Ngi gi:<input type="text" name="from" size="70" /><br /> Gi ti : <input type="text" name="to" size="70"/><br /> Tiu :<input type="text" name="subject" size="70"/><br /> Ni dung :<br /> <textarea name="message" rows="10" cols="70"> </textarea><br /> <input type="submit" value="send" name="sendmail"/> </form>

Xong ! Chc thnh cng

T lm menu 2 cp n gin vi php v javascript


By gi bt u hn. database n gin cho menu. kh n gin nn cng khng cn gii thch g nhiu hn. parent=0 l cp cha. parent khc 0 chnh l cp cha ca n.

Page 252 of 413

Kt ni database PHP Code:


<?php //=============================Kt ni csdl =========================== ========== $host="localhost"; $u="root"; $p="root"; $db="demo_db"; $result=NULL; $conn=NULL; $conn=@mysql_connect($host,$u,$p) or die ("Ket noi server that bai" ); if($conn) { @mysql_select_db($db,$conn) or die("Ket noi database that bai") ; } mysql_query('SET CHARACTER SET utf8'); //===================================================================== ========== ?>

Sau menu t database ra ngoi (c cha ln con) PHP Code:


<?php $sql="select * from cate_news where parent='0' order by date ASC"; $result=mysql_query($sql); while($rows=mysql_fetch_array($result)) { ?> <!-- Main menu --> <div class="main_menu"> <a style="width:100%; height:100%;" href="index.php?cate=<?php echo $rows['id']; ?>"><div style="line-height:30px; paddingleft:10px; background:#006699; width:200px; borderbottom:1px solid #FFFFFF;"><?php echo $rows['name']; ?></div></a> </div> <!-- Ht main menu --> <!-- Sub menu --> <div style="marginleft:30px;" class="sub_menu" id="sub_<?php echo $rows['id']; ?>"> <?php $sql2="select * from cate_news where parent='".$rows['id']. "' order by date ASC"; $result2=mysql_query($sql2);

Page 253 of 413

while($rows2=mysql_fetch_array($result2)) { ?> <div><a href="index.php?cate=<?php echo $rows2['id']; ?>"> - <?php echo $rows2['name']; ?></a></div> <?php } ?> </div> <!-- Ht Sub menu --> <?php } ?>

Tip theo l n ht menu con i HTML Code:


.sub_menu { margin-top:5px; margin-bottom:5px; display:none; }

Cui cng l cho n bung sub menu ra theo iu kin. dng javascript HTML Code:
<!-- X sub menu --> <script> var id='<?php echo $_GET['cate']; ?>'; var sub_menu='sub_'+id; if(document.getElementById(sub_menu)) document.getElementById(sub_menu).style.display='block'; else { <?php $cate=$_GET['cate']; $sql="select * from cate_news where id='".$cate."'"; $result=mysql_query($sql); if(mysql_num_rows($result)>0) { $rows=mysql_fetch_array($result); ?> var id='<?php echo $rows['parent']; ?>'; var sub_menu='sub_'+id; if(document.getElementById(sub_menu)) document.getElementById(sub_menu).style.display='block'; <?php

Page 254 of 413

} ?> } </script>

T lm im sng vi javascript
ci ny trn mng c code sn v vit bng jquery, nhng m mnh t vit li v mnh vit mnh s hiu r v chnh sa d dng hn rt nhiu, v hiu r c mt s ci mi na. Tht s n ch l ci div ni ln trn m thi c cc c im sau: - Khi vo trang index hin ra 1 pop-up qung co nh, nm gia trang web. - T tt sau 5s. - C nt Close tt. - Lm m background trang web. DEMO u tin l nh dng HTML Code:
<style> #popup { position:fixed; z-index:99999; background:#FFFFFF; border:5px solid #003300; padding:5px 0px 5px 5px; display:none; } #bg_trans { position:fixed; z-index:99998; display:none; background-color:#000000; opacity:0.4;filter: alpha(opacity=40); -msfilter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; } </style>

t thuc tnh onload hoc l gi lm t cui trang web cng khng sao HTML Code:
<body topmargin="0" leftmargin="0" onload="show_popup();">

- ci popup v nn HTML Code:


<div id="popup" style="width:200px;">

Page 255 of 413

<!-- ////////////////////////////////////////////////// --> <!-- Nt close --> <!-- ////////////////////////////////////////////////// --> <div style="width:27px; right:0px; top:0px; height:18px; position:absolute; z-index:999999; background:url(x.jpg); cursor:pointer;" onclick="hide_popup();"></div> <!-- ht nt close //////////////////////////////////// --> <!-- Ni dung y --> <!-- ////////////////////////////////////////////////// --> ni dung popup ni dung pop-up <br /> ni dung popup ni dung pop-up<br /> ni dung popup ni dung pop-up<br /> ni dung popup ni dung pop-up<br /> ni dung popup ni dung pop-up<br /> ni dung popup ni dung pop-up<br /> ni dung popup ni dung pop-up<br /> ni dung popup ni dung pop-up<br /> ni dung popup ni dung pop-up<br /> <!-- ht ni dung ///////////////////////////////////// --> </div> <div id="bg_trans"> </div>

HTML Code:
<script> var time=5; // thi gian time=(time*10)-10; var count=0; var type; type=navigator.appName; function show_popup() { count++; if(type=="Microsoft Internet Explorer") { if(document.compatMode=="BackCompat") { var height=document.body.offsetHeight; } else { var height=document.documentElement.offsetHeight; } } else { var height=window.innerHeight; } if(document.compatMode=="BackCompat") var width=document.body.offsetWidth;

Page 256 of 413

else var width=document.documentElement.offsetWidth; document.getElementById('popup').style.display='block'; document.getElementById('bg_trans').style.display='block'; document.getElementById('bg_trans').style.width=width+'px'; document.getElementById('bg_trans').style.height=height+'px'; var t_width=document.getElementById('popup').offsetWidth; var t_height=document.getElementById('popup').offsetHeight; document.getElementById('bg_trans').style.top="0px"; document.getElementById('bg_trans').style.left="0px"; var mar_top=(height/2)-(t_height/2); var mar_left=(width/2)-(t_width/2); document.getElementById('popup').style.top=mar_top+"px"; document.getElementById('popup').style.left=mar_left+"px"; if(count<=time) { setTimeout("show_popup()",100); } else { document.getElementById('popup').style.display='none'; document.getElementById('bg_trans').style.display='none'; } } function hide_popup() { time=0; document.getElementById('popup').style.display='none'; document.getElementById('bg_trans').style.display='none'; } </script>

Mnh t hm setTimeout cho c khi x l pop-up v mnh mun nu ngi dng ko ca s thu nh hay m rng, pop-up t ng chy theo V l javascript nn cc bn ch cn view->source hoc save as trang web v l c ht code ri. Cc bn c th ng dng lm code qung co 2 bin trang web hoc lightbox, tt nhin l khng dng jquery nn hiu ng n khng mt nh dng jquery.

Page 257 of 413

Gii thiu - Ci t Smarty


Thng thng khi lp trnh PHP bn thng hay vit ln c phn HTML vi m lnh PHP trn mt trang. iu ny s dn n rt ri nht l khi bo tr. Hoc l 1 ngy p tri khch hng ca bn khng thch giao din ca website hin ti, h i hi phi thay giao din khc. Bn l ngi vit ra v cng l ngi bo tr th khng sao nhng nu bn vit ra sau ngi khc bo tr, vic c li source code l 1 iu ht sc kh khn. Hn na, vic chnh sa template theo cch vit thng thng rt mt thi gian.

Vy lm sao gii quyt vn trn: lm th no c lp m PHP v m HTML trn 1 website hay ni cch khc lm sao tch bit c vic thit k v lp trnh website? Mt website ra i l s kt hp gia thit k ha v lp trnh, lm sao vic thit k khng nh hng n lp trnh hay ni cch khc khi to ra 1 giao din mi th ngi lp trnh khng phi thay i phn chc nng bn lp trnh PHP ca mnh

V l nhiu do ny nhiu template ra i nh Smarty, PHP Savant, PHPlib, Yats, FastTemplate,... trong ni bt nht l Smarty v PHP Savant. Vy cc template enginer hot ng nh th no, bn hy xem topic sau: (link) Ti sao ta li chn template enginer Smarty? - Th nht v n d s dng, dung lng nh - H tr cache gip ti trang nhanh hn - c h tr ti liu d c - c xy dng trn kin trc 3 tng Presentation Logic Layer : Ni t b cc Website , trnh din d liu c ly ra t Business Logic Layer: +CSS +Image +JavaScript +XML +RSS Business Logic Layer : Cc Nghip V trn h Thng Data Access Layer : Cc Class tng tc vi Database Presentation Logic Layer <=> Business Logic Layer <=> Data Access Layer

Page 258 of 413

- H tr cc hm cho h thng ring trong template - Cung cp trnh debug console - Plugins: cung cp cho vic s dng li code - Filters, Smarty Internals,... Chng ta bt u lm ci t v lm 1 v d n gin nh! Bc 1: bn download library Smarty t a ch: http://www.smarty.net/download Hin ti version mi nht l 3.1.5 Sau khi download bn gii nn Bc 2: To cc th mc cho project - Bn to 4 th mc: templates, templates_c, cache, includes trong www/myWebsite/ - To th mc template: www/myWebsite/templates/default/ cha giao din - Bn copy th mc libs (Smarty va download) vo root/www/myWebsite/includes v rename thnh "smarty" nh! - Ta to file cu hnh "config.php" trong th mc /includes cho project, file ny khi to Smarty, cu hnh database,... - To file index.php trong www/myWebsite, v template ca n l index.html trong myWebsite/templates/default/ Nh vy cu trc cc th mc sau khi to nh sau:

Bc 3: Cu hnh khi to Smarty - Bn m includes/config.php v paste code cu hnh sau: Thay i $path_site nh PHP Code:
// Config pages $path_site = "/myWebiste/"; // ng dn th mc website, slash u v cui dng define('_BASE', $_SERVER['DOCUMENT_ROOT'].$path_site); // ng dn t uyt i E:/Wamp/www/myWebsite/ // Smarty config include _BASE.'includes/smarty/Smarty.class.php'; $smarty = new Smarty; $smarty>template_dir = _BASE.'/templates/default/'; // template folder $smarty->compile_dir = _BASE.'/templates_c'; // template cache $smarty->cache_dir = _BASE.'/cache'; // php cache $smarty->config_dir = _BASE.'/includes/smarty/config'; // smarty cache $smarty->compile = true; // end able compiler, debug

Page 259 of 413

Bc 4: Xong cu hnh, ta th to 1 template n gin nh! Template hin th: "Cho mng bn: Ph"; vi gi tr "Ph" l 1 gi tr c to ra t bin $name trong index.php - M myWebsite/index.php PHP Code:
// include file config require 'includes/config.php'; $name = "Ph"; // to bin $smarty>assign("person",$name); // np $name vo tempalate, to ra bin perso n cho template s dng $smarty->display("index.html"); // np template index.html ?>

- M myWebsite/templates/default/index.html v to ra 1 template n gin PHP Code:


<!DOCTYPE html PUBLIC "//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD /xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Hello World</title> </head> <body> <h1>Cho mng bn: {$person} !</h1> </body> </html>

- Chy http://localhost/myWebsite/index.php v xem kt qu

Smarty c bn [ Phn 1 ]
BI 1: HIN TH D LIU T MYSQL BNG SMARTY
1.Hinh nh bi tp

Page 260 of 413

:2.Hng dn ci t smarty:

Page 261 of 413

3. Hng dn gii quyt bi tp - Cng vic u tin ta s phi to 3 forder gm: + Cache: Dng lu d liu gip website truy xut nhanh hn + Tempalates: Dng lu cc file templates dng .tpl + Configs: Dng lu file .conf +Tempalates_c: Dng lu tr nhng pht sinh li ca h thng. - To c s d liu trong MySQL + Database: student +Cc trng: id_student: AI, Primary,INT. nick: Varchar 100. name: Varchar 100. ngaysinh: Varchar 100. nhom: Varchar 100. email: Varchar 100. - Vit code To file index.php Vi dng code nh sau PHP Code:
<?php require('../libs/Smarty.class.php'); // y l th vin ca h thng $smarty= new Smarty(); // Khi to Smarty $con=mysql_connect("localhost","root","mysql") or die ("Dont cant data base"); // Kt ni ti MYSQL ca bn mysql_select_db("student",$con) or die ("Dont cant database "); // Kt ni ti Database $result=mysql_query("SELECT * FROM student_database WHERE 1"); //Chn tt c cc trng trong ct student_database. $students=array(); //Khi to bin $student dng mng gn d liu while ($row=mysql_fetch_assoc($result)) // Ly tng bn ghi { $students[]=$row; // Gn bin mng vi tng d liu } $smarty>assign("students",$students);// Gn d liu cho bin mng Smarty $smarty>display("index.tpl"); // Hin th ra ngoi mn hnh vi file index.tpl ?>

Sau chng ta s to 1 file index.tpl trong th mc templates vi dng code nh sau: PHP Code:
<html> <title> THNG TIN HC SINH </title> <head> </head> <body> {section name=st loop=$students} // Khi to Section ly bin Smarty $s tudents khi chng ta gn $smarty->assign("students",$students); <table width="80%" border="1" cellspacing="4">

Page 262 of 413

<tr> <td width="38%" bgcolor="#CCCCCC"> <strong>Ti khon ca &nbsp;{$students[st].nick}</strong> // Ly d liu ca trng nick tng ng trong MYSQL </td> <td width="62%">&nbsp;</td> </tr> <tr> <td><font><b>Tn: </b></font></td> <td><font><b><bgcolor="#CCCCCC">{$students[st].name}</b></font></td> </tr> <tr> <td>Ngy sinh</td> <td>{$students[st].ngaysinh}</td <tr> <tr> <td>Nhm</td> <td>{$students[st].nhom}</td <tr> <tr> <td>Email</td> <td>{$students[st].email}</td <tr> </table> <br /> {/section} </body> </html>

Bc 4: Test khi chy Chng ta s chy th xem c li g khng: http:\\localhost\smarty\go Ch : y mnh to mt th mc tn go nm trong n c tt c forder v file trn.

Smarty c bn [ Phn 2 ]
Xin cho cc bn phn I cc bn c nm c cch ci t smarty v khi chy chng trnh vi bi tp show d liu ra bn ngoi trong phn II bi tp s kh hn mt cht, cc bn s phi to lin kt gia 3 bng v show n ra ngoi mn hnh, ngoi ra phn ny mnh s thm to style c bn cho cc bn. Bi tp:

Page 263 of 413

1.To lin kt 2 bng xut ra mn hnh v sa style c bn cho bng.

Page 264 of 413

2. Hng dncho bng.

Nh bi trc mnh hng dn cc bn ci t smarty, bn no cha hiu th c li bi trc nh. bi ny mnh s hng dn cc bn ni 2 bng vi nhau vi cu lnh INNER JOIN to s lin kt gia cc bn V qua style c bn mt t cho cc bn nm c thao tc c bn style giao din trn smarty Ok, lets go Bc 1: To c s d liu SQL Bc ny th ai cng lm c ri, cc bn to c s d liu nh sau: Database: daily_banhang Bng: Khuvuc: ten_khuvuc: Varchar 50 Id_khuvuc: int 11 Ten_daily: varchar 50 Mathang: id_mathang: int 11 Ten_mathang: varchar 500 Soluong: int 100 Ketqua: id_kv: int 11 Id_mathang: int11 Dongia: int Bc 2: Vit code no

Cc bn to mt file c tn daily_banhang.php on m nh sau: PHP Code:


<?php include("../libs/smarty.class.php"); $smarty = new smarty(); mysql_connect("localhost","root","mysql") or die ("Li khng th kt n i ti CSDL");//Dng ny l kt ni CSDL ca cc bn mysql_select_db("daily_banhang") or die ("Li khng th kt ni ti Dat abase"); // Dng ny l kt ni ti Database $sql=mysql_query("SELECT ten_khuvuc, ten_daily, ten_mathang, dongia, soluong, (dongia*soluong) as tong_tien FROM khuvuc INNER JOIN ketqua on khuvuc.id_khuvuc=ketqua.id_khuvuc

Page 265 of 413

INNER JOIN mathang on ketqua.id_mathang=mathang.id_mathang ORDER BY ten_khuvuc ASC"); // Chn CSDL kt ni 2 bng bng INNER JOIN $khuvuc=array(); $daily=array(); $mathang=array(); $soluong=array(); $dongia=array(); $tong=array(); while ($row=mysql_fetch_assoc($sql)) { $khuvuc[]=$row['ten_khuvuc'];//Gn trng tn khu vc vo bin khu vc $daily[]=$row['ten_daily']; $mathang[]=$row['ten_mathang']; $soluong[]=$row['soluong']; $dongia[]=$row['dongia']; $tong[]=$row['tong_tien']; } $tieude=array("Khu vc","Tn i l","Tn mt hng","S lng","n gi ","Tng tin");// Tiu ca bng $smarty->assign("khuvuc",$khuvuc); $smarty->assign("daily", $daily); $smarty->assign("mathang", $mathang); $smarty->assign("soluong", $soluong); $smarty->assign("dongia", $dongia); $smarty->assign("tong", $tong); $smarty->assign("tieude", $tieude); $smarty->display("daily_banhang.tpl");// In ra mn hnh mysql_free_result($sql); ?>

Tip theo ta to thm mt file tn daily_banhang.tpl trong th mc templates Code nh sau PHP Code:
<html> <title> DAI LY BAN HANG </title> <head> </head> <body> <table cellpadding="4" border="1" cellspacin="0"> <tr> {section name=id loop=$tieude } <th id="cottieude">{$tieude[id]}</th> {/section} </tr> {section name=data loop=$khuvuc} <tr id="cotbang"> <td>{$khuvuc[data]}</td> <td>{$daily[data]}</td> <td>{$mathang[data]}</td> <td>{$soluong[data]} <td>{$dongia[data]}</td> <td>{$tong[data]}</td> </tr> {/section} </table> </body>

Page 266 of 413

</html> <style> #cottieude{ text-transform: uppercase; background-color:#25510D; color: #EEEEEC; } #cotbang{ background-color:#ACABAB; text-weight:bold; text-align:center; </style>

Mnh gii thch thm on style y mnh c th to style bt c u bn ch cn chn vo PHP Code:
<th id="cottieude"></th>

Nhn th ny chc cc bn cng hiu. Chc cc bn thnh cng

K thut s dng lazy loading trong hng i tng


cc bi trc, chng ta tm hiu v cc kin thc c bn trong lp trnh hng i tng. Tip tc trong bi ny, chng ta s cng tm hiu v k thut s dng lazy loading trong ng dng. Lazy loading l k thut rt quan trng trong lp trnh hng i tng. V nh c n ta c th tit kim c rt nhiu thao tc gi np file khi s dng. Bn thn lazy loading s dng magic method (cc phng thc c bit trong PHP) triu gi d liu. C th l phng thc __autoload(). Phng thc ny s c t ng gi khi mt i tng c khi to. Cng v l do m chng ta s dng n require() mt file cha lp . V d: To 1 file tn test.php vi ni dung sau: PHP Code:
<?php function __autoload($url){ require("$url.php"); } $abc=new ABC;

Page 267 of 413

$abc->demo(); ?>

Tip tc ta to 1 file tn ABC.php vi ni dung sau: PHP Code:


<?php class ABC{ public function demo(){ echo "<h2>Welcome to QHOnline Tutorial</h2>"; } }

Khi chy file test.php th kt qu s hin th trn mn hnh l:

Welcome to QHOnline Tutorial


R rng trn file test.php ca chng ta trn khng h c class no tn ABC v cng khng c phng thc no tn l demo() c. Vy th v sao ta c th gi c chng ra bn ngoi ?. Bi v khi ta khi to lp ABC, lp tc s gi autoload(). V phng thc autoload() s ly tn lp ABC nh 1 tham s $url v dng lnh require() np file tn ABC.php vo. Khi , file ABC.php ca chng ta c lp tn ABC v cng c phng thc tn demo() nn file test.php ca chng ta mi xut gi tr ca phng thc demo() ra bn ngoi c. Bn thy y, thay v trc khi s dng 1 lp ta phi require() cc lp trn u rt nhiu. Th gi y vi lazy loading ta ch vic gi lp th t ng h thng s np file ng vi tn lp . iu ny gip ta bt nhiu thi gian v gim hao tn ti nguyn khi phi thc hin vic np load cc th vin trn u cc file rt nhiu. Tuy nhin, cn lu rng. Khi s dng c ch ny, thng ta phi ch ti tn lp v tn file. Chng cn phi c s lin quan nht nh. V d: Tn lp v tn file ging nhau. V nu khng ging nhau th qu trnh np load s tht bi. V d nhin ta khng th ly c cc lp, phng thc nh mong mun. K thut lazy loading cng l k thut c s dng rt nhiu trong cc PHP Framework hin nay. Chng hn nh zend framework, khi bn mun gi 1 lp thng th s gi nh sau: PHP Code:
$model=new Zend_Db_Table_Abstract;

C ngha l bn ang truy cp vo th mc Zend vo tip th mc Db, vo tip th mc Table v vo file Abstract.php. Zend/Db/Table/Abstract.php. V d nhin trong file Abstract.php phi c lp tn l Zend_Db_Table_Abstract: PHP Code:
class Zend_Db_Table_Abstract{ //code y }

autoload hiu iu ta c th nh ngha n gin nh sau: PHP Code: Page 268 of 413

function __autoload($url){ $url=str_replace("_","/",$url); require("$url.php"); }

Nh bn thy, ta tm kim tt c cc du gch di trong lp v thay th chng bng du "/". Khi h thng s np ng nh quy trnh trn.

Regular Expressions
1. Regular expression l g? + Biu thc chnh quy. + Hiu nm na l 1 chui c quy tc m t nhng chui(string) khc 2. C php c bn ( y mnh ch trnh by v v d cho ngn ng php) Example: PHP Code:
<?php $re = '/hello/'; // biu thc chnh quy cho mt string c chui hello trong . $str = 'hello world'; if(preg_match($re, $str)) { echo 'Yes'; } ?>

Output: Yes + K hiu ^ v $: bt u v kt thc 1 string Example: PHP Code:


<?php $re = '/^hello/'; // biu thc chnh quy cho mt string bt u bi ch ui hello $str = 'hello world'; if(preg_match($re, $str)) { echo 'Yes'; } else { echo 'No'; } ?>

Output: Yes PHP Code:


<?php $re = '/hello$/'; // biu thc chnh quy cho mt string kt thc bi ch ui hello $str = 'hello world'; if(preg_match($re, $str)) { echo 'Yes'; }

Page 269 of 413

else { echo 'No'; } ?>

Output: No + K hiu: *, +, ? $re = '/^ab*$/' ; // biu thc chnh quy cho mt string bt u bi a, v kt thc l 0 hoc nhiu b (v d: a, ab, abb, abbb, ); $re = '/^ab+$/' ; // biu thc chnh quy cho mt string bt u bi a, v kt thc l 1 hoc nhiu b (v d: ab, abb, abbb, ); $re = '/^ab?$/' : // biu thc chnh quy cho mt string bt u bi a, v kt thc l b hoc l khng (v d: ab hoc a). Example: PHP Code:
<?php $re = '/^ab*$/'; $str = 'abbc'; if(preg_match($re, $str)) { echo 'Yes'; } else { echo 'No'; } ?>

Output: No + S dng: {}: $re = '/^ab{2}$/'; // biu thc chnh quy cho mt string bt u bi a, v kt thc l 2 ch b (l abb); $re = '/^ab{2,}$/'; // biu thc chnh quy cho mt string bt u bi a, v kt thc l t nht 2 ch b (v d: abb, abbb, abbbb, ); $re = '/^ab{2,5}$/'; // biu thc chnh quy cho mt string bt u bi a, v kt thc l t nht 2 ch b v nhiu nht l 5 ch b (v d: abb, abbb, abbbb, abbbbb); + S dng : () v | $re = '/^a(bc)*$/'; // biu thc chnh quy cho mt string bt u bi a, v kt thc l 0 hoc nhiu 'bc' (v d abc, abcbc, abcbcbcbc, ) $re = '/^a(b|c)*$/'; // biu thc chnh quy cho mt string bt u bi a, v kt thc l 0 hoc nhiu 'b' hoc nhiu 'c' hoc 'b' 'c' ln ln :D (v d abc, abbcccccccccc, abccccbbbcbc, ) + S dng symbol '.': i din cho mt k t n bt k $re = '/^.{3}$/'; //Biu thc chnh quy cho mt chui c ng 3 k t bt k. PHP Code:
<?php $re = '/^.{3}$/'; //Biu thc chnh quy cho mt chui c ng 3 k t bt k. $str = '&#%'; if(preg_match($re, $str)) { echo 'Yes'; } else { echo 'No';

Page 270 of 413

} ?>

Output: Yes + S dng: '-': [0-9] : Mt ch s [a-zA-Z]: mt k t A->Z, a->z [a-d] : ~ (a|b|c|d) [^a-zA-Z]: mt k t khng phi l A->Z, a->z [^0-9]: mt k t khng phi l s + S dng: '\' \d - Ch s bt k ~ [0-9] \D - K t bt k khng phi l ch s (ngc vi \d) ~ [^0-9] \w - K t t a-z, A-Z, hoc 0-9 ~ [a-zA-Z0-9] \W - Ngc li vi \w (ngha l cc k t khng thuc cc khong: a-z, A-Z, hoc 0-9) ~[^a-zA-Z0-9] \s - Khong trng (space) \S - K t bt k khng phi l khong trng. 3. Cc hm c bn vn dng regular expression + preg_match : http://php.net/manual/en/function.preg-match.php int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) C bn l tm kim 1 string c lm vic theo mt $re. V d: PHP Code:
<?php $re = '/^\w+$/'; // mt string ton k t A->Z, a->z, 0->9 $str = 'quya*'; if(preg_match($re, $str)) { echo 'Yes'; } else { echo 'No'; } ?>

Output: No + preg_replace: http://www.php.net/manual/en/function.preg-replace.php mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) C bn l tm kim trong 1 string nhng chui c cu trc theo $re thay th V d: PHP Code:
<?php $re = '/\w+$/'; $str = '*quya'; echo preg_replace($re, 'hi', $str); ?>

Output: *hi + preg_split: http://php.net/manual/en/function.preg-split.php Page 271 of 413

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) V d: Cc bn xem tm v d trong php manual nh. Mt ri.

Gii thiu Regular Expression Nng cao


I. Thm comment vo biu thc Regular Expression: Trong trng hp biu thc chnh quy ca bn qu di. V mun sau ny ngi dng sau c th hiu v chnh sa li (reuse), th chng ta cn phi ghi ch li. h h. thm comment vo 1 biu thc Regular Expression hin gi c 2 cch th phi. - S dng c php (?# ni dung ghi ch). V d: kim tra ngy c ng nh dng dd/mm/yyyy khng ta c parttern sau: M:
$parttern = /^\d{2}\/\d{2}}\/\d{4}$/ //ci ny ngn qu tham kho thi.

Sau khi thm comment vo: M:


$parttern = /^\d{2}(?# ngy l s nguyn 2 k t)\/\d{2}(?# Thng l s nguyn 2 k t)\/\d{4}(?# Nm l s nguyn 4 k t)$/

- Cch ny nhn sng sa v d hiu hn: M:


$parttern = /^ \d{2} # ngy l s nguyn 2 k t # du phn cch / \/ \d{2} # Thng l s nguyn 2 k t # du phn cch / \/ \d{4} # Nm l s nguyn 4 k t $/x; // S dng modifier l x.

Khi s dng modifier x th khong trng trong biu thc chnh quy s c b qua, nu khng n s c escaped (\s). iu ny d dng thm comment. Comment s bt u bng du # v kt thc ti 1 dng mi. II. Greedy v Ungreedy: hiu c phn ny bn cn xem qua v d sau: V d: Mnh c 1 on m html sau khi view source ca 1 trang web M:
<html> <head><title>Greedy v Ungeedy</title></head> <body> <p id=weather> Ni dung cn ly nm y </p> <p> Ni dung khc

Page 272 of 413

</p> </body> </html>

Vy ly ni dung trong th <p id=weather></p>, mnh s phi vit biu thc sau: PHP Code:
$parttern = /<p id=\weather\>(.*)</p>/s; if(preg_match($parttern, $html, $match)) { print_r($match); }

H h, kt qu th no cc bn s ly c ni dung cn ly ch. M:
Array ( [0] => Ni dung cn ly y Ni [1] Ni Ni ) dung khc => dung cn ly y dung khc

Nh vy, ni dung mnh cn ly vn cha ly c, tm hiu nguyn nhn ti sao: Xem li $parttern ca mnh: $parttern = /<p id=\weather\>(.*)</p>/s; M t parttern: bt u bng th p c id=weather, tip sau l ni dung bt k c th c nhiu hoc khng c k t no v kt thc l html tag </p>. Khi dng modifier s: cho bit so khp parttern vi mi k t k c k t xung dng, nu khng c n k t xung dng s b loi tr. - Mc nh trong so khp mu th n s ly th p c id = "weather" v ni dung bt k bn trong n khi gp tag ng </p>. Nhng phi l tag ng </p> cui cng th n mi dng li (Greedy, ting vit l tham lam, tham n g ) so ti cui lun m. - Vy lm sao parttern hiu rng khi so khp mnh ch ly ni dung bt k gia 2 tag <p id="weather">ni dung n tag ng </p> u tin thi. Lc , mnh s dng k t du hi "?" (Ungreedy) thm vo sau quantifier ca parttern mun so khp. H h Ci quantifier tham kho li nha, v bi ny ang hng dn Advanced Regular Expression m. - V vy ly c ni dung chnh xc vi parttern ca mnh M:
$parttern = '/<p id="weather">(.*)<\/p>/s';

th mnh ch cn thm du hi sau quantifier "*" l xong. M:


$parttern = '/<p id="weather">(.*?)<\/p>/s';

Chy li code PHP Code:


$parttern = /<p id=\weather\>(.*?)</p>/s; if(preg_match($parttern, $html, $match)) { print_r($match); }

bn s nhn c kt qu nh M: Page 273 of 413

Array ( [0] => Ni dung cn ly y [1] => Ni dung cn ly y )

quy vi menu khng gii hn s cp (N cp)


My hm nay lt qua qhonline thy nhiu bn comment v menu a cp qu. ci ny mnh cng tng lm nn mnh vit 1 bi hy vng gip c mt vi bn. t vn : Hu ht cc tut trn din n u l menu hn ch s cp. v th mnh s hng dn cc bn x l quy vi s cp khng gii hn. Gii php ti u khi x l quy: Gii php 1: quy vi cu truy vn sql. Vi gii php ny th on code chng ta s c quy trnh nh sau - Mi ln quy s ly menu t database vi iu kin where id_parent trong db = id parent truyn vo. nh th gi s menu chng ta c n cp th chng ta s phi select vi n cu truy vn. Gii php 2: ly ht menu ra mt mng ri mi ln quy s duyt qua ci mng , khng cn phi truy vn li C 2 gii php u ok cho kt qu nh nhau, nhng chng ta cng bn li xem gii php no s tt hn. vi gii php 1 th n cu truy vn cho ci menu th qu l t hi. cn gii php 2 ta ch mt 1 cu truy vn v phn cng vic cn li l do code php x l. nn s t tn ti nguyn hn Gii quyt: Mnh s la chn gii php 2 cho ci menu ca mnh. Gi s mnh c mt database vi cc thng s [ id | name | link | id_parent ]. V mnh ko c database nn mnh s dng mng ny thay th coi nh n c ly t database PHP Code:
$menus = array( array('id' => hu.php', 'parent' array('id' => hu.php', 'parent' array('id' => hu.php', 'parent' array('id' => '1', 'name' => '0'), '2', 'name' => '1'), '3', 'name' => '2'), '4', 'name' => 'LEVEL 1', 'link' => 'localhost/trangc => 'LEVEL 2', 'link' => 'localhost/trangc => 'LEVEL 3', 'link' => 'localhost/trangc => 'LEVEL 4', 'link' => 'localhost/trangc

Page 274 of 413

hu.php', 'parent' => '3'), array('id' => '5', 'name' => 'LEVEL 1', 'link' => 'localhost/trangc hu.php', 'parent' => '0'), array('id' => '6', 'name' => 'LEVEL 1', 'link' => 'localhost/trangc hu.php', 'parent' => '0'), array('id' => '7', 'name' => 'LEVEL 2', 'link' => 'localhost/trangc hu.php', 'parent' => '6'), array('id' => '8', 'name' => 'LEVEL 2', 'link' => 'localhost/trangc hu.php', 'parent' => '6'), array('id' => '9', 'name' => 'LEVEL 2', 'link' => 'localhost/trangc hu.php', 'parent' => '6'), array('id' => '10', 'name' => 'LEVEL 3', 'link' => 'localhost/trang chu.php', 'parent' => '9'), array('id' => '11', 'name' => 'LEVEL 3', 'link' => 'localhost/trang chu.php', 'parent' => '9'), array('id' => '12', 'name' => 'LEVEL 3', 'link' => 'localhost/trang chu.php', 'parent' => '9') );

Code show menu quy PHP Code:


function show_menu($menus = array(), $parrent = 0) { // LAY MENU DUA VAO MENU ID MENU CHA TRUYEN VAO $current_menus = array(); foreach ($menus as $key => $val) { if ($val['parent'] == $parrent) { $current_menus[] = $val; unset($menus[$key]); } } // SHOW RA MENU THEO UL if (sizeof($current_menus) > 0) { echo '<ul>'; foreach ($current_menus as $key => $val) { echo '<li><a href="', $val['link'], '">', $val['name'], '</ a>'; show_menu($menus, $val['id'], false); echo '</li>'; } echo '</ul>'; } }

tng nh sau. sau khi c ci mng ri th mnh dng m php select theo iu kin thay cho sql. bin $current_menus chnh l menu cn hin th hin ti V cui cng l show menu ra thi PHP Code:
show_menu($menus);

Code full: PHP Code:

Page 275 of 413

$menus = array( array('id' => '1', 'name' => 'LEVEL 1', 'link' => 'localhost/trangc hu.php', 'parent' => '0'), array('id' => '2', 'name' => 'LEVEL 2', 'link' => 'localhost/trangc hu.php', 'parent' => '1'), array('id' => '3', 'name' => 'LEVEL 3', 'link' => 'localhost/trangc hu.php', 'parent' => '2'), array('id' => '4', 'name' => 'LEVEL 4', 'link' => 'localhost/trangc hu.php', 'parent' => '3'), array('id' => '5', 'name' => 'LEVEL 1', 'link' => 'localhost/trangc hu.php', 'parent' => '0'), array('id' => '6', 'name' => 'LEVEL 1', 'link' => 'localhost/trangc hu.php', 'parent' => '0'), array('id' => '7', 'name' => 'LEVEL 2', 'link' => 'localhost/trangc hu.php', 'parent' => '6'), array('id' => '8', 'name' => 'LEVEL 2', 'link' => 'localhost/trangc hu.php', 'parent' => '6'), array('id' => '9', 'name' => 'LEVEL 2', 'link' => 'localhost/trangc hu.php', 'parent' => '6'), array('id' => '10', 'name' => 'LEVEL 3', 'link' => 'localhost/trang chu.php', 'parent' => '9'), array('id' => '11', 'name' => 'LEVEL 3', 'link' => 'localhost/trang chu.php', 'parent' => '9'), array('id' => '12', 'name' => 'LEVEL 3', 'link' => 'localhost/trang chu.php', 'parent' => '9') ); function show_menu($menus = array(), $parrent = 0) { // LAY MENU DUA VAO ID MENU CHA $current_menus = array(); foreach ($menus as $key => $val) { if ($val['parent'] == $parrent) { $current_menus[] = $val; unset($menus[$key]); } } // SHOW RA MENU THEO UL if (sizeof($current_menus) > 0) { echo '<ul>'; foreach ($current_menus as $key => $val) { echo '<li><a href="', $val['link'], '">', $val['name'], '</ a>'; show_menu($menus, $val['id'], false); echo '</li>'; } echo '</ul>'; } } show_menu($menus);

Cc bn copy a va file PHP bnh thng s thy thnh qu :D


Page 276 of 413

Upload file trong php


1/ C ch upload file trong php

2/ VD upload file + form upload

Page 277 of 413

+ X l upload

Class support Mutil Language cho c bn v nng cao v cho c cc framework khc!!!!
Mnh thy cc bn post bi cn mutil language trn website... v vy m mnh vit class ny cho cc bn.

Page 278 of 413

B1: Bn to file index.php c ni dung nh sau PHP Code:


<?php session_start(); ob_start(); /* * * error reporting on ** */ error_reporting(E_ALL); /* * * define the path ** */ $site_path = realpath(dirname(__FILE__)); define('__SITE_PATH', $site_path . '/'); define('__LANG_PATH', $site_path . '/language/'); define('__EXT', '.php'); include __SITE_PATH . 'classes/' . 'language.class.php'; Language::locate_set('en');// SET LA ENGLISH HAY VIETNAM //VI DU //ENGLISH = EN TH TO TH MC EN TNG NG TRONG TH MC LANGUAGE //VIETNAM = VN TH TO TH MC VN TNG NG TRONG TH MC LANGUAGE echo Language::lang('home_lang.home_title'); ?>

B2: To th mc classes ng cp vi file index.php, v to 1 file language.class.php trong th mc classes vi ni dung nh sau PHP Code:
<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ Class Language { protected static $locale; protected static $language_cache = array(); public static function locate_set($key = 'vn') { self::$locale = $key; } public static function find_file($filename) { $ext = '.php'; //Search Path $search = __LANG_PATH . self::$locale . '/' . $filename . __EXT ; $found = false; if (is_file($search)) { // A matching file has been found

Page 279 of 413

$found = $search; } return $found; } public static function lang($key) { $group = explode('.', $key); $key_lang = $group[1]; $group = $group[0]; $mes = array(); if (!isset(self::$language_cache[self::$locale][$group])) { $file = self::find_file($group); if ($file != false) { include $file; // Merge in configuration if (!empty($lang) AND is_array($lang)) { foreach ($lang as $k => $v) { $mes[$k] = $v; } } } self::$language_cache[self::$locale][$group] = $mes; } if (isset(self::$language_cache[self::$locale][$group])) { foreach (self::$language_cache[self::$locale][$group] as $k => $v) { if ($key_lang == $k) { return $v; } } return $key_lang; } else { return 'Missing entry ' . self::$locale . '/' . $group; } } } ?>

B3: To th mc language ng cp vi file index.php, vo trong th mc language to 2 th mc vn v en tng ng vi cho ting vit v ting anh. B4: To file home_lang.php trong th mc vn vi ni dung nh sau PHP Code:
<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ $lang['home_title'] = 'Trang chu'; ?>

Page 280 of 413

B5: To file home_lang.php trong th mc en vi ni dung nh sau PHP Code:


<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ $lang['home_title'] = 'Home'; ?>

S dng 1 cch d dng PHP Code:


<?php echo Language::lang('home_lang.home_title'); ?>

Thay i ngn ng cc bn set li locate cho n bng cch PHP Code:


<?php Language::locate_set('en'); ?>

y ch l a ngn ng phn giao din

Hng dn CSS Framework 960 cho mi ngi


Tham gia VC v QHO lu ri nhng cha ng gp c g nhiu, hm nay mng php vit 1 bi hy vng gp cht kin thc cho cc bn. Ln u tin vit tutorial mong mi ngi ng h. Yu cu kin thc c bn v css, ta vo vn C ai tng s dng 1 framework css no cha v 960css framework c g. C l cc bn u cho rng css kh n gin nn cng ko nht thit phi tm hiu su n framework lm g. 960 css framework s cho bn 1 ci nhn khc v iu ny u tin download framework https://nodeload.github.com/nathansm...zipball/master Gii nn -> m th mc code -> css ta c

Page 281 of 413

Ch cn s copy 960.css s dng. Bn c th vo min ly file dung lng nh hn up ln host. Ci tn 960 bt ngun t vic framework ny cung cp cho chng ta 1 m hnh website c chia lm nhiu ct. Vi rng ca site l 960px c chia lm 12 ct, 16 ct hay 24 ct http://960.gs/demo.html

Page 282 of 413

960px l rng ph hp vi hu ht cc website hin nay. Margin mi ct l 20px to ci nhn thong cho website.

Container & Grid


- Container phn bit s ct cho cc thnh phn bn trong nh 12, 16, 24 - Grid xc nh s ct VD bn mun to 1 khi kch thc = 3 ct: Lu : phi c khi <div class="container_12"> bao bn ngoi HTML Code:
<div class="container_12"> <div class="grid_3" style="background:#666;">3 Ct</div> </div>

Nhiu ct cng lc HTML Code:


<div class="container_12">

Page 283 of 413

<div class="grid_3" style="background:blue;">First</div> <div class="grid_5" style="background:red;">Second</div> <div class="grid_4" style="background:green;">Third</div> </div>

Pull & Push


- y khi qua tri - phi tnh theo ct VD: ta y 2 khi Fist qua phi 1 v Second qua tri 2 HTML Code:
<div class="container_12"> <div class="grid_3 push_1" style="background:blue;">3 Ct</div> <div class="grid_5" style="background:red;">5 Ct</div> <div class="grid_4 pull_2" style="background:green;">4 Ct</div> </div>

Suffix & Prefix


- Tng padding phi - tri, tnh theo ct VD: Ta mun tng padding-right khi First 1 ct vo padding-left khi Second 1 ct HTML Code:
<div class="container_12"> <div class="grid_3 suffix_1" style="background:blue;">3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct3 Ct</div> <div class="grid_5 prefix_1" style="background:red;">5 Ct</div> <div class="grid_4" style="background:green;">4 Ct</div> </div>

V tng padding nn rng cc khi cng tng theo. Tuy nhin ni dung ca khi First vn ko trng qua ct th 4 m vn chim 3 ct

Alpha & Omega


- Xa margin tri - phi khi class GRID Ta xem VD sau: HTML Code:
<div class="container_12"> <div class="grid_12">

Page 284 of 413

<div class="grid_3" style="background:blue;">3 Ct</div> <div class="grid_5" style="background:red;">5 Ct</div> <div class="grid_4" style="background:green;">4 Ct</div> </div> </div>

Ti sao khi Frist li dch qua phi 10px m ko nm ng v tr. Nguyn nhn l n ang nm trong 1 khi Grid khc. V thuc tnh margin ca n khin n phi dch qua phi 10px. Ta khc phc = cch s dng class "alpha" v "omega" HTML Code:
<div class="container_12"> <div class="grid_12"> <div class="grid_3 alpha" style="background:blue;">3 Ct</div> <div class="grid_5" style="background:red;">5 Ct</div> <div class="grid_4 omega" style="background:green;">4 Ct</div> </div> </div>

l tt c nhng g mnh bit v 960 css framework. im mnh: - Tit kim thi gian - Tng thch nhiu trnh duyt - Thit k theo chun Khuyt: - rng site ti a l 960px - Ph thuc vo framework Vi nhng g 960 css framework mang li vic to nn cc layout cho website tr nn rt nhanh chng. Hy th to layout n gin cho trang Genk.vn no cc bn, mnh mt cha n 5p nh http://i1254.photobucket.com/albums/...mfnamoka/8.jpg

Page 285 of 413

Page 286 of 413

1 s website c to t 960 css framework:


http://keynotekungfu.com/?ref=960 http://brandrichmedia.com/ http://nickfinck.com/ http://drupal.org/ http://5by5.tv/

Nhp d liu t file excel s dng cng ngh XML...


Nu chng ta thm 1 user, 1 th loi th d dng, cn nu yu cu chng ta hng ngy nhp 1 list danh sch(>500)cc thng tin ca nhn vin, thng tin bi nhc... up ln web th sao, ch l chng ta phi nhp bng tay tng thng tin 1 hay sao, ngy no cng vy chc t bng sm :)). Vy l bt u mnh suy ngh, lm cch no up 1 pht l xong ht khng nh, gi d nu mnh c 1 file excel c y ht thng tin ca tt c cc bi ht(>1000 bi i cho n och :D ) nu m up thng 1 lo vo database c th qu nh, khng bit php lm c khng ta? thy th ch mi dy ti phn xml thoai, nn i vi mnh th p..code :( . Th l ti nh bc Google hi thm coi th no, lang thang vi vng ln z 1 trang ton... ting anh, khip thit, mnh nhn n, n nhn mnh ci ch ai bit ai =)) may thay thy 1 dng p vo mt bo convert file .xls sang file xml, ngh mt hi ci t nhin ny ra tng v lao u vo "ct" ... c nhm, lao u vo code :)). hihi ni nhm ny gi ri gi chng ta bt u nh. u tin chng ta c 1 file excel vi d liu v thng tin bi nhc nh th ny:

Page 287 of 413

Sau m ln v lu li vi ui l .xml

Page 288 of 413

V sau m file xml ny ln, n s c cu trc nh th ny:

Page 289 of 413

y chng ta thy, D liu ca chng ta cn ly n nm trong cp th <Row>, vy chng ta cn xc nh c v tr ca th <row> v sau dng vng lp, lp qua cc th <row> ly gi tr chng ta cn sau nhp vo database, c th chng ta sao lm nh sau: u tin to 1 database tn test, sau to 1 bng tn media vi cu trc nh sau:

Page 290 of 413

Trong trang html ta c 1 form cho php chn file xml(convert t file excel) cn nhp d liu: HTML Code:
<form action="b.php" method="post" enctype="multipart/form-data"> Select a file: <input type="file" name="upload" size="50" /> <input type="submit" name="send" value="Upload" /> </form>

Khi chn file v nhp vo nt upload code x l s nh sau: PHP Code:


<?php if(isset($_POST["send"])){//Nu nt send c nhn if($_FILES["upload"]["name"] != NULL){//Nu c chn file move_uploaded_file($_FILES["upload"]["tmp_name"],"data/" . $_FILES["upload"]["name"]);di chuyn file xml ln server trong th mc data $dom = new DOMDocument();Khi to i tng PHP DOM $dom>load("data/" . $_FILES["upload"]["name"]);//Load file xml va c chu yn trong th mc data $row = $dom>getElementsByTagName("Row");//Xc nh v tr ca th <Row> $first_row = TRUE;//Bin nh l dng u tin trong bng e xcel(dng tiu ) foreach($row as $r){//Bt u lp qua cc th Row if(!$first_row){//Nu khng phi l dng u tin //Ly gi tr ca cc ct trn tng dng $a = $r->getElementsByTagName("Cell")->item(0)>nodeValue; $b = $r->getElementsByTagName("Cell")->item(1)>nodeValue; $c = $r->getElementsByTagName("Cell")->item(2)>nodeValue; $d = $r->getElementsByTagName("Cell")->item(3)-

Page 291 of 413

>nodeValue; $e = $r->getElementsByTagName("Cell")->item(4)>nodeValue; $f = $r->getElementsByTagName("Cell")->item(5)>nodeValue; //Khi to cu truy vn $sql = "insert into media(song,singer,musician,cate gories,album,url) values('" . $a . "','" . $b . "','" . $c . "','" . $d . "','" . $e . "','" . $f . "')"; //Thc thi cu truy vn v kim tra kt qu tr v if(mysql_query($sql) != FALSE){ $mess ="Thm d liu thnh cong"; }else{ $mess = "Thm d liu tht bi"; } } $first_row = FALSE;//Bin xc nh qua dng u tin } echo "<cente>$mess</center>"; } } ?>

Vy l xong phn x l, by gi mnh d liu ra ngoi bng nh PHP Code:


<table cellpadding="0" cellspacing="0" border="1" width="80%"> <tr> <th>STT</th> <th>Tn bi ht</th> <th>Ca s</th> <th>Nhc s</th> <th>Th loi</th> <th>Album</th> <th>ng dn</th> </tr> <?php $sql = "select * from media order by categories ASC"; $query = mysql_query($sql); if(mysql_num_rows($query) > 0){ $stt = 0; while($data = mysql_fetch_assoc($query)){ $stt++; echo "<tr>"; echo "<td>$stt</td>"; echo "<td>$data[song]</td>"; echo "<td>$data[singer]</td>"; echo "<td>$data[musician]</td>"; echo "<td>$data[categories]</td>"; echo "<td>$data[album]</td>"; echo "<td>$data[url]</td>"; echo "</tr>"; } }else{ echo "<tr><td colspan=7 align=center>Data empty</td></tr>"; }

Page 292 of 413

?> </table>

Code y cho ton b qu trnh ca chng ta: HTML Code:


<?php $conn = mysql_connect("localhost","root","root"); mysql_select_db("test",$conn); if(isset($_POST["send"])){ if($_FILES["upload"]["name"] != NULL){ move_uploaded_file($_FILES["upload"]["tmp_name"],"data/" . $_FILES["upload"]["name"]); $dom = new DOMDocument(); $dom->load("data/" . $_FILES["upload"]["name"]); $row = $dom->getElementsByTagName("Row"); $first_row = TRUE; foreach($row as $r){ if(!$first_row){ $a = $r->getElementsByTagName("Cell")->item(0)>nodeValue; $b = $r->getElementsByTagName("Cell")->item(1)>nodeValue; $c = $r->getElementsByTagName("Cell")->item(2)>nodeValue; $d = $r->getElementsByTagName("Cell")->item(3)>nodeValue; $e = $r->getElementsByTagName("Cell")->item(4)>nodeValue; $f = $r->getElementsByTagName("Cell")->item(5)>nodeValue; $sql = "insert into media(song,singer,musician,categories,album,url) values('" . $a . "','" . $b . "','" . $c . "','" . $d . "','" . $e . "','" . $f . "')"; if(mysql_query($sql) != FALSE){ $mess = "Them du lieu thanh cong"; }else{ $mess = "Them du lieu that bai" . mysql_error(); } } $first_row = FALSE; } echo "<cente>$mess</center>"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf8" /> <meta name="author" content="Le Kim Thuc" />

Page 293 of 413

<style type="text/css"> form{ text-align: center; margin: 50px auto; } </style> </head> <body> <form action="b.php" method="post" enctype="multipart/form-data"> Select a file: <input type="file" name="upload" size="50" /> <input type="submit" name="send" value="Upload" /> </form> <table cellpadding="0" cellspacing="0" border="1" width="80%"> <tr> <th>STT</th> <th>Tn bi ht</th> <th>Ca s</th> <th>Nhc s</th> <th>Th loi</th> <th>Album</th> <th>ng dn</th> </tr> <?php $sql = "select * from media order by categories ASC"; $query = mysql_query($sql); if(mysql_num_rows($query) > 0){ $stt = 0; while($data = mysql_fetch_assoc($query)){ $stt++; echo "<tr>"; echo "<td>$stt</td>"; echo "<td>$data[song]</td>"; echo "<td>$data[singer]</td>"; echo "<td>$data[musician]</td>"; echo "<td>$data[categories]</td>"; echo "<td>$data[album]</td>"; echo "<td>$data[url]</td>"; echo "</tr>"; } }else{ echo "<tr><td colspan=7 align=center>Data empty</td></tr>"; } ?> </table> </body>

Ph cui cng th cng xong, y l ln th 2 vit li, hiz.. ny vit va xong nhp xem li bi vit th b ging ra ngoi, lm mt sch :(( li phi ch vits li. Kt qu nh hnh sau:

Page 294 of 413

y ch l bi demo chnh l nhp d liu bng file excel, nn c nhiu ci cn li thi lum thum, mong cc bn b qua nh ^_^, bn no cha bit th c th tham

Page 295 of 413

kho , bn no bit ri m bit cch vit hay hn th nh share cho mi ngi cng hc hi nh. Ai khng hiu th c th hi mnh hoc pm wa nick y h: thugianmotti :D

M hnh VMC auto load Controller v model


---VMC l m hnh quen thuc vi cc bn hc frameword hay tm hiu. l iu khng th thiu chun b bt u vo hc 1 frameword no .Hm nay mnh xin chia s m hnh m mnh hc c cho nhng bn chun b hay ang c nh tm hiu 1 frameword no .Trong forum c vi bi vit v m hnh ny rt hay cc bn c th tm c hiu th no l m hnh MVC (Model - View - Controller) v cch hot ng chc nng ca tng file.http://www.qhonline.info/forum/showt...co-ban-voi-php hoc http://www.qhonline.info/forum/showt...c-cua-thay-huy ---u im :l t ng load controller v model gi d liu v hin th trong view gn ging nh trong cc frameword ---file Bootstrap.php : PHP Code:
<?php class Bootstrap{ public function __construct(){ if(isset($_GET['url'])){ $url=rtrim($_GET['url'],"/"); $url=explode('/',$url); $c=$url[0]; }else{ $c="index"; } $file_controller=__CONTROLLER_PATH.$c."_Controller.php"; if(file_exists($file_controller)){ require_once($file_controller); }else{ require_once(__CONTROLLER_PATH."error_Controller.php"); $controller=new error(); $controller->index(); return false; } $name_controller=$c."_Controller"; $controller=new $name_controller; $controller->LoadModel($c);//autoload model if(isset($url[2])){ $controller->{$url[1]}($url[2]);

Page 296 of 413

}else{ if(isset($url[1])){ $controller->{$url[1]}(); }else{ $controller->index(); } } } } ?>

+file ny c tc dng t ng load controller v model khi ngi dng tng tc ti trang +Lu :t tn file controller v model c phn u ging nhau,v tn file ging tn class,v d user_Controller.php th class tng tng s l class user_Controller v model s l user_Model.php class user_Model.Nh vy trong view s c th mc tng ng l th mc user, ---Trang index s khi to Bootstrap nh sau : PHP Code:
<?php //define path require_once("config/define_path.php"); require_once("config/define_database.php"); //end define path require_once(__LIB_PATH."Session.php"); require_once(__LIB_PATH."Controller.php"); require_once(__LIB_PATH."View.php"); require_once(__LIB_PATH."Model.php"); require_once(__LIB_PATH."Bootstrap.php"); $bootstrap= new Bootstrap; ?>

---Khi ngi dng truy cp vo trang http://localhost/vmc/user/login Bootstrap s thc hin action login trong controller user_Controller.php v load model user_Model.php s dng ---Sau y l v d login vi m hnh ny : + Chun b :to bng user (user_name,pass) + file controllers/user_Controller.php : PHP Code:
<?php class user_Controller extends Controller{ public function __construct(){ parent::__construct(); } public function index(){ $this->view->render("user/index"); } public function login(){ if(isset($_POST['login'])){ if($_POST['user']=="" or $_POST['password']==""){ $this->view>msg="Hay dien user hay pass";//gi thng bo ti trang view $this->view->render("user/login"); }else{ if($this->model->login()==true){ Session::set("login",true); Session::set("user",$_POST['user']);

Page 297 of 413

$this->view->redirect(); }else{ $this->view->redirect("user/login"); } } }else{ $this->view->render("user/login"); } } public function logout(){ Session::set("login",false); Session::unset_session("user"); $this->view->redirect(); } } ?>

---File models/user_Model.php : PHP Code:


<?php class user_Model extends Model{ public $table="user"; public function __construct(){ parent::__construct(); } public function login(){ $user=$_POST['user']; $pass=md5($_POST['password']); $where=array('user_name'=>$user,'pass'=>$pass); $this->select($this->table,$where); if($this->num_rows()==0){ return false; }else{ return true; } } } ?>

---file Views/user/login.php : s hin th li ly t controller nu c v form ng nhp,: PHP Code:


<h2>Trang login.....</h2> <hr /> <div class="error" style="background:#FC6;color:red"> <?php if(isset($this->msg)){ echo $this->msg; } ?> </div> <form action="" method="post"> <label>User </label><input name="user" type="text" /><br /> <label>Password </label><input name="password" type="text" /><br /> <label></label><input type="submit" value="login" name="login"/><br /> </form>

Page 298 of 413

---Cc bn c th down v hiu r thm : http://www.mediafire.com/?3d59b8eb70x27dx ---PS:Em xin public bi ny nh,C vn g sai st mong cc bn gp

Th Thut Tng Tc PHP


1. Bin - Khai bo khi to bin nh kiu nhanh hn 376% so vi khng nh kiu. - Hng chm hn 146% so vi bin. - Bin cc b nhanh hn 9.9% bin ton cc. 2. Hm lm vic vi chui - 'string' nhan hn 0.26% so vi "string" - "String" nhanh hn 4% so vi c php HEREDOC - "String\n" nhanh hn 108% so vi 'String'."\n" - 'String'.$var nhanh hn 28% so vi "String$var" - 'string '.$var.' string' nhanh hn 55% so vi sprintf('string %s string', $var) - "\n" nhanh hn 70% so vi chr(10) - strnatcmp() nhanh hn 4.95% so vi strcmp() - strcasecmp() nhanh hn 45% so vi preg_match() - strcasecmp() nhanh hn 6.6% so vi strtoupper($string) == "STRING" - strcasecmp() nhanh hn 13% so vi strnatcasecmp() - strtr($string, $string1, $string2) nhanh hn 10% so vi str_replace() - str_replace() nhanh hn 161% so vi strtr($string, $array) - stristr() nhanh hn 10% so vi stripos() - strpos() nhanh hn 9.7% so vi strstr() - isset($str{5}) nhanh hn 176% so vi strlen($str) > 5 - str_replace($str, $str, $str) hai ln nhanh hn 17% so vi str_replace(array, array, string) - list() = explode() nhanh hn 13% so vi substr($str, strpos($str)) 3. Hm lm vic vi s - ++$int nhanh hn 10% so vi $int++ - (float) nhanh hn 48% so vi settype($var, 'float') 4. Hm lm vic vi mng - list() = $array; nhanh hn 3.4% so vi gn tng gi tr - in_array() nhanh hn 6% so vi array_search Page 299 of 413

- isset($array[$key]) nhanh hn 230% so vi array_key_exists() - !empty($array) nhanh hn 66% so vi count($array) 5. Hm xut - echo nhanh hn 5% so vi print() - echo ' '.' ' nhanh hn 0.44% so vi echo ' ',' ' 6. Hm, phng thc v cch thc gi - call_user_func() chm hn 54% so vi gi trc tip hm - call_user_func() chm hn 59% so vi gi phng thc tnh (static method) - call_user_func() chm hn 65% so vi gi phng thc (ca mt i tng) - function() nhanh hn 119% so vi static::method() - $this->method() nhanh hn 116% so vi static::method() - declared static::method() nhanh hn 93% so vi static::method() 7. Hm, phng thc - Truyn tham tr nhanh hn 3% so vi truyn tham chiu - Khng tham chiu (no reference ) nhanh hn 1.7% so vi tham chiu (Return by reference) 8. Lm vic vi File - Scandir() nhanh hn 4% so vi opendir(), readdir(), closedir() - file_get_contents() nhanh hn 52% so vi fopen(), fread(), fclose() - file_get_contents() nhanh hn 39% so vi implode("\n", file()) 9. Hm ghi b m (Cache) - xcache_set() nhanh hn 1,645% so vi file_put_contents() - xcache_set() nhanh hn 646% so vi memcache->set() - xcache_get() nhanh hn 1,312% so vi memcache->get() 10. Hm (Tng qut) - if elseif else nhanh hn 0.78 % so vi switch - @Error supression (b bo li nu c) chm hn 235% so vi without - $_SERVER['REQUEST_TIME'] nhanh hn 59% so vi time() - min(array) nhanh hn 16% so vi min(int, int) - require_once() nhanh hn 24% so vi include() - require_once() nhanh bng include_once() - include('ng dn tng i') nhanh hn 37% so vi include('ng dn tuyt i') 11. Chui chnh quy (regular expressions)

Page 300 of 413

- str_replace() nhanh hn 40% so vi preg_replace() - ereg('regex') nhanh hn 17% so vi preg_match('/regex/') - preg_match('/regex/i') nhanh hn 68% so vi eregi('regex') 12. Top 10 cc hm c ch nht - t gi nht file_put_contents() opendir() readdir() closedir() scandir() fopen() fread() fclose() memcache->get() memcache->set() implode('\n', file()) include() include_once() file_get_contents() 13. Top 10 cc hm tit kim thi gian nhiu nht ( biggest time savers (per call)) xcache_set() vs. file_put_contents() xcache_get() vs. memcache->get() xcache_set() vs. memcache->set() file_get_contents() vs. fopen(), fread(), fclose() file_get_contents() vs. implode('\n', file()) include(relative) vs. include(full_path) require_once() vs. include() scandir() vs. opendir() readdir() closedir() static method vs. call_user_func() preg_match(/regex/i) vs. eregi(regex) Ni dung ting anh cc bn c th tm thy t: joomlaperformance.com/articles/performance/

Code phn trang theo kiu Google


Cho mi ngi. Hm nay mnh mi tm hiu code dc ci phn trang ging google M t: Gi s c 20 trang . 1/ Nu ang trang 1: 1 2 3 4 5 6 7 8 9 Next 2/ Nu click vo trang 8 : Prev 4 5 6 7 8 9 10 11 12 Next 3/ Nu ang trang 8 m click vo trang 7 : Prev 3 4 5 6 7 8 9 10 11 Next

Page 301 of 413

4/ Nu click vo trang 20 : Prev 16 17 18 19 20 Tc l click vo trang no th trang s l trang chnh gia(trng hp ny l xp th 5) v page list lun c 9 s hin th . Tt nhin l code ny ch dng khi no c hn 9 trang . Thut ton ca phn trang nh sau : a/ Dng SQL : $sql = "select * from table_name LIMIT $start,$limit"; ( $limit l s record tr v, $start l v tr bt u dc select). b/ Mnh tm tng s record trong database($count) ri em chia cho $limit tm ra s trang s hin th . c/ Mi khi load trang th $start s tng ln 1 lng $limit . V d, trang 1 th ly t $start =0 , tr v $limit dng, trang 2 select t v tr $start+$limit, tr v cng $limit dng . S record tr v khng i , ty theo mnh mun 1 trang hin th bao nhiu record t database . Mi trang th s $start thay i theo k lut. Mnh to class pager gm 3 function sau : 1/ Function findStart() : Hm ny tr v $start trn mnh ni . 2/ Function findPages($count,$limit) Tr v s trang cn hin th 3/ Function pageList($currentPage, $pages, $count) Tr v layout pageList ra . Nh ci " Prev 1 2 3.... Next " trn y Code : phantrang_google.php PHP Code:
<?php class phantrang_google_pager { function findStart() { if(isset($_GET['page'])){ // Lc u tin m ra th hok c $_GE T['page'] return $start = $_GET['page']; } else{ return $start = 0; } } function findPages($count,$limit) { return $count % $limit ==0 ? $count/$limit :ceil($count / $limi t); /* Cu trn c ngha : $count c chia ht cho $limit khng? Nu c th tr v $count/$limit, nu khng th tr v $count/$limit +1 . ( ceil l hm lm trn trn , 2.3=3 , 5.6 =6) */ } function pageList($currentPage,$pages,$count)//Bin $count y gi i thch sau { $space =4; if(!isset($_GET['middle']) || $currentPage<=5){

Page 302 of 413

//Khi m ra th cng cha c $_GET['middle'] $middle =5; } else{ $middle = $_GET['middle']; } $start_temp = $middle -$space; // Bin ny cha s u tin ca 9 s trn $end_temp =$middle+ $space; // Bin ny cha s cui cng ca 9 s trn $i = $start_temp; // Chun b dng vng lp xut ra if($currentPage != 1){ // Nu trang hin ti khng phi 1 th xut Prev $prev = $currentPage-1; $prev_middle = $middle-1; echo "<span id ='list'><a href ='$_SERVER[PHP_SELF]?middle= $prev_middle&count=$count&page=$prev'> Prev </a></span>"; } //$_GET['middle'] ch s nm gia. $_GET['count'] ch tng record tro ng database. //$_GET['page'] ch s trang ngi dng ang ng // $_SERVER['PHP_SELF'] > ly thanh a ch, n ch ly ti ht ch php thi while($i) //Dng vng lp hin th trang { if($i > $pages || $i > $end_temp){ break; } // Nu s ca trang ln hn trang cui, hay ln hn v tr cui ca 9 s th dng cho //trang ny if($i != $currentPage){ //S trang ng dng ang ng phi hin th khc ng dng bit ang ng u if($i <= 5) { //5 y do mnh mc nh l 9 , th v tr chnh gia u tin l 5 echo "<span id ='list'><a href = '$_SERVER[PHP_SELF]?mi ddle=5&count=$count&page=$i'> $i </a></span>"; //Vi t hn 5 u tin th middle vn l 5 } if($i> $middle || ($i < $middle && $i > 5) ){ echo "<span id='list'><a href = '$_SERVER[PHP_SELF]?mid dle=$i&count=$count&page=$i'> $i </a></span>"; } //Nu b $i < $middle && $i >5 <<<<<<<< bc 3 s hok lm dc } else { echo "<span id ='list' >$i</span>"; }

$i++;

Page 303 of 413

} if($currentPage != $pages){ // Nu khng trang cui th hin th nt Next $next =$currentPage+1; $next_middle = $middle+1; echo "<span id ='list'><a href ='$_SERVER[PHP_SELF]?middle= $next_middle&count=$count&page=$next'> Next </a></span>"; } } }

Code: demo_google.php PHP Code:


<style> #list{ border : 1px solid green; padding:5px; margin: 0px 3px; } #selected{ background: green; } a{ text-decoration: none; } a:hover{ color: white; } #list:hover{ background : green; } #list:hover a{ color:white; } </style> <?php require_once('phantrang_google.php'); $conn = new mysqli('localhost','root','','news_vmc'); //Mnh dng database ca bn news_vmc . //Link down : if(!isset($_GET['count'])){ // Lc m ra cng cha c $_GET['count'] $query = 'select * from tin'; $result = $conn->query($query); $count = $result->num_rows;//Tr v s record trong table //Dng mysqli } else{ $count = $_GET['count']; } //on code trn trnh vic lm li 2 cu truy vn mi khi chuyn tr ang, n l cng //dng ca bin $count trong function pageList bn ki a

Page 304 of 413

$page = new phantrang_google_pager; $limit = 3; //Mnh gii hn 3 records 1 trang $start=$page->findStart(); //Tm start trc if(!isset($_GET['page'])){ $curpage=1; } else{ $curpage = $_GET['page']; } $stt =($curpage-1)*3+1; $pages = $page->findPages($count,$limit); $sql = "select * from tin LIMIT $start,3"; $result = $conn->query($sql); echo " <table border='1px'>"; while($rows =$result->fetch_assoc()){ echo '<tr>'; echo "<td>$stt</td>"; echo "<td>$rows[id_tin]</td>"; echo "<td>$rows[tieu_de]</td>"; echo "<td>$rows[tom_tat]</td>"; echo '<tr>'; $stt++; } echo "</table>"; echo '<br/>'; echo $page->pageList($curpage,$pages,$count); ?>

Lu : mnh mun th hin 9 trang, cc bn c th mun 10 11 12 trang th sa trong code :). Link down database news_vmc: * mediafirechamcom ?f9inhvd1kddn4j2 * Hnh nh khi code xong :) *photobucketchamcom/albums/i366/danghaiphung169/11212.png photobucketchamcom/albums/i366/danghaiphung169/112122.png photobucketchamcom/albums/i366/danghaiphung169/1121224.png* Bye mi ngi

Page 305 of 413

Phn trang c bn, c phn on khng OOP


PHP Code:
$conn=mysql_connect("localhost","root","*****"); mysql_select_db("vd_1",$conn); if(isset($_GET['page'])){ $current_page=$_GET['page']; }else{ $current_page=1; } //so record tren trang $record_in_page = 3; //Tong record if(!isset($total)){ $query=mysql_query("select * from user"); $total=mysql_num_rows($query); }else{ $total=$_GET['total']; } echo $total; $y = $record_in_page*($current_page-1); //Tong so trang $total_page=ceil($total/$record_in_page); //So trang hien thi $roll = 3; $query_out = mysql_query("select * from user LIMIT $y,$record_in_page") ; while($data=mysql_fetch_assoc($query_out)){ echo "<table>"; echo "<tr><td>$data[username]</td><td>$data[email]</td></tr>"; echo "</table>"; } echo "So trang: "; if($current_page!=1){ echo "<a href='paging.php?total=$total&page=".($current_page1)."'>PRE</a>"; } //Lay roll begin va end if(($current_page-ceil($roll/2))<1){ $begin=1; $end = $roll; }else{ $begin=$current_page-ceil($roll/2); if($current_page>=$total_page){ $end=$total_page; $begin=$total_page-$roll+1; }else{ $end=$begin+$roll-1; if($end==$current_page){

Page 306 of 413

$begin=$begin+1; $end=$end+1; } } } //Xuat so trang hien thi for($i=$begin;$i<=$end;$i++){ if($i==$current_page){ echo "[$i]"; }else{ echo "<a href='paging.php?total=$total&page=$i'> ".$i." </a>"; } } if($page<$total_page){ echo "<a href='paging.php?total=$total&page=".($current_page+1)."'> NEXT</a>"; } mysql_close($conn);

Mi ngi tham kho vit ln class nh!

Hng dn s dng jquery ajax lng nhau trong ng dng


Thi gian qua, ti nhn c rt nhiu cu hi v vic s dng jquery ajax lng nhau b li. V th trong bi ny, ti s hng dn cc bn khc phc li . V d ca ti n gin nh sau: C 3 lin kt. Khi click vo 1 lin kt th s xut ra 1 nt nhn. Nhn tip vo nt th s ra 1 cu thng bo no . Phn tch: Nh vy, thc hin thao tc ny ta phi lm 2 hnh ng. 1 l bt s kin khi click vo link. V 2 l khi click xong s xut hin nt, v nhn tip nt th s thng bo mt thng tin g . thc hin ta lm nh sau: To file test.html vi ni dung sau: HTML Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

Page 307 of 413

<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script language="javascript" src="jquery.js"></script> <script> $(document).ready(function(){ $("a.link").click(function(){ id=this.getAttribute("id"); $.ajax({ type:"get", url:"check.php", data:"id="+id, async:false, success:function(kq){ $("#ketqua").html(kq); } }) $(":button").click(function(){ id=this.getAttribute("id"); alert("QHOnline.Info - Your link : "+id); }) }) }) </script> </head> <body> <a href='#' class="link" id="1">Link 1</a> <a href='#' class="link" id="2">Link 2</a> <a href='#' class="link" id="3">Link 3</a> <div id="ketqua"></div> </body> </html>

To file check.php vi ni dung nh sau: PHP Code:


<?php $id=$_GET['id']; echo "<button class='click' id='$id'>Click Me Link $id</button>"; ?>

Gii thch: gi jquery ajax lng nhau, th chng ta phi cho d liu load trn mi trng ng b. V s kin button ch xut hin khi chng ta click vo lin kt. Do vy, nu cc bn async:true. Th d liu load bt ng b. V d nhin s kin di s gi ng thi mc cho ajax mun lm g th lm. K ti, s kin click vo nt button n c c khi no ?. N c c khi ngi dng click vo link. V th. S kin nt button phi nm trong s kin click vo link u tin. Nu t bn ngoi s kin click link th n s khng tm thy c :button. V mi m ra lm g c :button cho jquery qut d liu. Vy tng kt li:

Page 308 of 413

s dng jquery ajax lng nhau ta cn ch : + D liu load phi ng b. Ngha l cc s kin phi i nhau. + Cc s kin phi lng trong nhau, ch khng ng c lp bn ngoi. Hy vng, s gip cc bn gii quyt vn m cc bn ang gp phi. Good Luck.

Code phn trang bng Ajax n gin


Knh cho Thy v cc bn . Ngy hm nay em xin vit 1 Tut n gin v vic phn trang bng Ajax . Nh chng ta bit ci u im ca Ajax l x l bt ng b , n khng lm trang web ca chng ta phi load li ton b m ch load li 1 b phn no m chng ta x l . Hm nay , mnh xin ng dng li nhng g hc t Thy v vit code n gin . C g sai st cc bn gp dm mnh . Tut ca mnh ch n gin gm c 1 combo box chng ta chn th loi . Sau khi chn th loi th s d liu trong th loi ra km theo phn trang . y mnh cha phn nhm , cc bn c th gp xy dng hon chnh phn trang v phn nhm cho hon chnh nha . Sau y l cc bc thc hin : u tin chng ta to 1 trang c tn l theloai.php . Trong trang ny l 1 form chng ta chn th loi t c s d liu . Sau to 1 trang ajax.js v 1 trang process.php x l nh trong code bn di . Cc bn tham kho code y di nha . Cu trc th mc nh sau : folder : includes/ : trong folder ny cha file config.php cha cc thng s cu hnh Code : PHP Code:
<?php $host = "localhost"; $user_host = "root"; $pass_host = "root"; $db_name = "tintuc"; $link = mysql_connect($host,$user_host,$pass_host) or die("can not connect host"); mysql_select_db($db_name,$link) or die("can not connect database"); ?>

folder data/ : cha image ca tin tc file : theloai.php Code :

Page 309 of 413

PHP Code:
<script language="javascript" src="ajax.js"></script> <select size="1" name="tl" class="title" onchange="if(this.value!=0){ja vascript:loadXMLDoc(this.value,1);}"> <option value="0">--Chn th loi--</option> <?php require_once("includes/config.php"); $sql = "select * from theloai"; $result = mysql_query($sql); while($data = mysql_fetch_array($result)){ echo "<option value='$data[idTL]'>$data[TenTL]</option>"; } ?> </select> <div id="ketqua"></div>

file ajax.js : PHP Code:


// JavaScript Document function obj(){ td = navigator.appName; if(td == "Microsoft Internet Explorer"){ dd = new ActiveXObject("Microsoft.XMLHTTP"); }else{ dd = new XMLHttpRequest(); } return dd; } http = obj(); function loadXMLDoc(id,p){ document.getElementById("ketqua").innerHTML = "ang x l..."; url = "process.php?id="+id+"&page="+p; http.open("get",url,true); http.onreadystatechange=process; http.send(null); } function process(){ if(http.readyState == 4 && http.status == 200){ document.getElementById("ketqua").innerHTML = http.responseText ; } }

file proccess.php code : PHP Code:


<?php $id = $_GET['id']; $page = $_GET['page']; require_once("includes/config.php"); $sql = "select * from tin where idTL=$id"; $result = mysql_query($sql); $tongsorecord = mysql_num_rows($result);

Page 310 of 413

$y = 1; $start = ($page-1)*$y; $tongsotrang = ceil($tongsorecord/$y); if($tongsorecord == 0){ echo "Khng c tin no"; }else{ ?> <script language="javascript" src="ajax.js"></script> <table align="center"> <tr> <td class="title">STT</td> <td class="title">Tiu </td> <td class="title">Hnh</td> </tr> <?php $stt = 0; $sql1 = "select * from tin where idTL=$id limit $start,$y"; $result1 = mysql_query($sql1); while($data1 = mysql_fetch_array($result1)){ $stt++; echo "<tr>"; echo "<td>$stt</td>"; echo "<td>$data1[TieuDe]</td>"; echo "<td><img src='data/$data1[UrlHinh]' title='$data1[Tom Tat]' /></td>"; echo "</tr>"; } } ?> <tr> <td colspan="3"> <div id="pt"> <?php for($i=1;$i<=$tongsotrang;$i++){ if($i == $page){ echo "<span class='active'>$i</span>"; }else{ echo "<a href='#' onclick='javascript:loadXMLDoc($i d,$i);'>$i</a>"; } } ?> </div> </td> </tr> </table>

PS : update bi vit :)

S dng JqGrid PHP


Page 311 of 413

---Bi hng ny mnh s hng dn cc bn s dng th vin JqGrid PHP c bn nht nhng cng to ra 1 trang qun l d liu khng qu phc tp I/u im : ---D dng ci t v s dng ---Giao din qun l chuyn nghip ---Cc chc nng trong bi hng dn ny : +Thm ,sa , xa d liu +Phn trang d liu +Date-picker +Sorting the Data +Auto-filter Search +Export to Excel * +Export to PDF (with Custom PDF formats) * +H tr UTF8 ..... II/ Ci t : ---Link demo : http://www.trirand.net/demophp.aspx cc bn vo xem demo s hiu cch s dng v tm hiu su hn nhng vn khc.Trong bi ny mnh ch tng hp li nhng phn hay dng nht cho 1 trang qun l d liu.Bt u nh : Bc 1 : Cc bn download jqsuite phin bn mi nht ti http://www.trirand.net/download.aspx v test th c cc v d rt hay v d hiu +Khi download v c 3 th mc m mnh s dng trong bi ny l th mc js,php cha th vin jqgrid ,th mc themes cha file giao hin Bc 2 : To file index.php vi ni dung : PHP Code:
<!DOCTYPE html PUBLIC "//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml 1-strict.dtd"> <html> <head> <title>jqGrid PHP Demo</title> <link rel="stylesheet" type="text/css" media="screen" href="themes/ redmond/jquery-ui-1.8.16.custom.css" /> <link rel="stylesheet" type="text/css" media="screen" href="themes/ ui.jqgrid.css" /> <link rel="stylesheet" type="text/css" media="screen" href="themes/ ui.multiselect.css" /> </style> <script src="js/jquery.js" type="text/javascript"></script> <script src="js/i18n/grid.localeen.js" type="text/javascript"></script> <script src="js/jquery.jqGrid.min.js" type="text/javascript"></scri pt> <script src="js/jquery-uicustom.min.js" type="text/javascript"></script> </head> <body> <div> <?php include ("grid.php");?> </div>

Page 312 of 413

</body> </html>

---Np cc th vin css v js ca jqgrid ---Jqgrid c nhiu themes rt p cc bn c th download v dt trong th mc themes s dng v ch thay i ng dn ti file css cho ph hp : PHP Code:
<link rel="stylesheet" type="text/css" media="screen" href="themes/the mesName/jquery-ui-1.8.16.custom.css" />

Bc 3 : To file jq-config.php PHP Code:


define('DB_DSN','mysql:host=localhost;dbname=news_vmc'); define('DB_USER', 'root'); // Your MySQL username define('DB_PASSWORD', ''); // ...and password

Bc 4 : Tp file grid.php vi ni dung : PHP Code:


<?php require_once 'jq-config.php'; // include the jqGrid Class require_once "php/jqGrid.php"; // include the driver class require_once "php/jqGridPdo.php"; // Connection to the server // include the autocomplete class require_once "php/jqAutocomplete.php"; // include the datepicker class require_once "php/jqCalendar.php"; $conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD); // Tell the db that we use utf-8 $conn->query("SET NAMES utf8"); // Create the jqGrid instance $grid = new jqGridRender($conn); // Write the SQL Query $sql = 'SELECT * FROM user'; $grid->SelectCommand = $sql; // Set the table to where you add the data $grid->table = 'user'; $grid->setPrimaryKeyId('id'); $grid->serialKey = false; // Set output format to json $grid->dataType = 'json'; // Set the url from where we obtain the data $grid->setColModel(); $grid->setUrl('girdUser.php'); // Set some grid options $grid->setGridOptions(array( "caption"=>"User header", "rownumbers"=>true,//th t cc dng 1 2 3 4 5... "altRows"=>true, "hoverrows"=>true,//hover rows c mu "rowNum"=>5,//s dng mc nh hin th trn grid

Page 313 of 413

"rowList"=>array(5,10,15,20),//s dng hin th trn grid "sortname"=>"user", "width"=>800, "height"=>200, "multiselect"=>true,//chn nhiu rows 1 lc )); // option row $grid->setColProperty('id', array( "editrules"=>array("required"=>true,"editable"=>"f alse"))); $grid->setColProperty('user', array( "width"=>"100", "editrules"=>array("required"=>true))); $grid->setColProperty('pass', array( "width"=>"100", "editrules"=>array("required"=>true))); $grid->setColProperty('email', array( "editrules"=>array("required"=>true))); $grid->setColProperty('ngay_tham_gia', array("formatter"=>"date", "formatoptions"=>array("srcformat"=>"Y-md", "newformat"=>"d-m-Y"), "editoptions"=>array("dataInit"=> "js:function(elm){setTimeout(function(){ jQuery(elm).datepicker({dateFormat:'yy-mm-dd'}); jQuery('.ui-datepicker').css({'font-size':'75%'}); },200);}") )); // Enable navigator $grid->navigator = true; // option navigator $grid->setNavOptions('navigator', array( "pdf"=>true, "excel"=>true, "add"=>true, "edit"=>true, "del"=>true, "view"=>false, "search"=>true)); $grid->setNavOptions('edit',array( "closeAfterEdit"=>true, "editCaption"=>"Update User", "bSubmit"=>"Update")); $grid->setNavOptions('add',array("bSubmit"=>"Add")); // Set autocomplete only on serch form.Gi khi tm kim user $grid>setAutocomplete("user",false,"SELECT DISTINCT user FROM user WHERE use r LIKE ? ORDER BY user",null, false ,true);

Page 314 of 413

//user datime picker //$grid>setDatepicker('OrderDate', null, true, true); nu auto hin datime pic ker $grid>setDatepicker('ngay_tham_gia', array("buttonIcon"=>true), true, false) ; $grid->datearray = array('ngay_tham_gia'); // prevent some executions when not excel export $oper = jqGridUtils::GetParam("oper"); if($oper == "pdf") { $grid->setPdfOptions(array( // enable header information "header"=>true, // set bigger top margin "margin_top"=>27, // set logo image "header_logo"=>"logo.gif", // set logo image width "header_logo_width"=>30, //header title "header_title"=>"Thong ke user nobitacnt", // and a header string to print "header_string"=>"by nobitacnt" )); } // Enjoy $grid->renderGrid('#grid','#pager',true, null, null, true,true); $conn = null; ?>

PS : Cn rt nhiu li ch khc t th vin ny cc bn quan tm th nghin cu thm nha.Chc thnh cng

K thut seo website


Keywords 1. T kha trong th tiu +3 y l mt trong nhng ni quan trng nht t t kha v bn phi t c t kha cn Seo trong th ny. Bi v nhng g c vit bn trong th s hin th trn kt qu tm kim ca google. Th tiu cn phi ngn (Ti a 6-7 l hiu qu) v t kha seo ca bn cn phi gn u dng. 2.T kha trong URL +4 T kha trong url s gip rt nhiu. V d trong link http://www.huamyvan.com/Cac-

Page 315 of 413

Loai-Van...Pham-Khac.html, Th t kha van phong pham l t m bn mun xp hng cao khi search. Bn nh rng nhng t kha khng c trong trang bn khng c t ln URL 3.Mt ca t kha trn website +3 Bn cn kim tra mt t kha. T 3-7% cho t kha seo l tt nht. 1-2% th t quan trng hn. V bn cn trnh mt t kha Seo trn 10% v n trng nh bn ang c nhi nht t kha thay v vit mt vn bn mang tnh t nhin 4.T kha trong anchor text +3 T kha trong anchor text cng rt quan trng c bit l anchor text ca backlink, bi v nu bn c t kha anchor text t trang website khc, iu ny c xem nh nhn mt phiu bu t trang ny khng ch v trang web ca bn ni chung m c v t kha seo ca bn. 5. T kha trong cc nhm th (<H1>,<H2>) +3 y l v tr m t kha seo ca bn cn xut hin nhiu. Nhng bn phi ch trong trang ca bn phi c ni dung cho cc t kha ny 6 .T kha seo bt u 1 on +2 T kha bt u u 1 on th vn c cao v tnh hiu qu mc d n khng quan trng bng t kha trong anchor text, tiltle hoc headings. Bn khng nht thit phi t trn cng ca phn ni dung, bn vn c th t gia nhng ch l bn cn phi t u on 7.T kha trong tags <alt> +2 Con b ca google khng th no c c hnh nh nhng n c th c c on m t cho hnh nh trong tags <alt>, bi vy nu bn c hnh nh trn web bn cn thm t kha vo tags <alt> 8.T kha trong th meta (Description, Keywords) +1 Rt t quan trng c bit l vi google. Yahoo! V Bing th vn da vo tiu ch ny, bi vy nu bn ti u cho Yahoo! hoc Bing th hy in y cho tags ny. Trong mi trng hp in y u khng gy anh hng g. 9.T kha gn +1 T kha gn th vn c tnh mc d n t quan trng hn t kha chnh. V d bn cn Seo t kha Dien thoai iphone th ti on u bn t cu Gii thiu in thoi mi t Apple v on s 3 bn t cu dng Iphone ni ting th 2 t in thoi v

Page 316 of 413

iphone c xem l t kha gn. Cc tnh t kha gn ny ch p dng khi bn Seo mt t kha c ghp t 2 t tr ln. 10. Cm t kha: +1 Ngoi cc t kha cn Seo ca bn, Bn c th ti yu ha cho cm t kha m n cha nhng t kha cn SEO. Tt nht l bn s dng nhng t kha ph bin c gi bi google. V d Seo t kha in thoi bn c th s dng cc cm t ph bin trong ni dung ca mnh nh in thoi gi r hay in thoi di ng hoc in thoi iphone 11. Li chnh t: +0 (Li khuyn) Li chnh t xy ra rt nhiu v nu bn bit cch hng t kha ca mnh vo nhng li ph bin hoc nhng t thay th (v d: Dien thoai di dong v dtdd), bn c th c mt s lng truy cp t nhng ngi search dng t kha ny. Nhng vic bn t li chnh t vo website th khng tt. V th bn khng cn t hoc nu cn th ch t trong th meta 12. Ti u qu nhiu t kha -2 Khi bn ti u qu nhiu t kha cho mt trang c bit l nhng t kha khng lin quan. iu ny s gy gim hiu xut cho cc t kha khc ca bn v thm ch l c t kha chnh cng b nh hng theo. 13. Nhi nht t kha: -3 Bt k hnh ng c no v vic nhi nht t kha (hn 10%) bn u c nguy c b cm t cng c tm kim I . Links - internal, inbound, outbound 14 .T kha(Anchor text) trong backlink. +3 T kha trong backlink l mt trong nhng yu t quan trng nht c mt th hng tt cho t kha. 15 .Mc uy tn ca Backlink +3 Khi bn t anchor text hy ch trng n cht lng anchor text tr v website bn. Anchor text c cht lng l link t nhng website uy tn v thng thng nhng trang uy tn c im Google PR cao. 16. Link t nhng trang cng lnh vc +3 C nhng link t cc trang cng lnh vc hoc ti u t kha ging bn th rt hu ch.

Page 317 of 413

iu ny ch ra rng trong cuc canh tranh t kha bn c i th b phiu v website ca bn tr nn ph bin hn 17. Link t website c tn min .edu v .gov Cc tn min ny rt qu v tn min .edu v .gov c xem uy tn hn .com, .biz, .info v.v. Nhng lin kt t tn min .edu v .gov thng th rt kh c c. 18. S lng Backlink +3 S lng backlink cng nhiu th cng tt. Nhng uy tn ca website m bn t backlink th quan trng hn s lng backlink. 19. t t kha (anchor text) trong lin kt ni +2 Trn website ca bn bn cn lin kt n cc link khc cng thuc website ca bn u ny gip bn kt ni cc t kha khc trong trang v dn dt b ca google i c ht ton b khi lng trang ca bn . 20. Ni dung xung quanh t kha (Anchor text) +2 Ni dung xung quanh t kha (anchor text) cng rt quan trng bi v iu ny th hin tnh lin kt ca link v ng thi cho thy y l mt lin kt t nhin hay bn c to ra. 21. Tui ca backlink +2 Backlink c thi gian tn ti cng lu th cng tt. C nhiu lin kt trong thi gian ngn cho thy rng bn ang mua chng thay v link t nhin. 22. Link t directories (Dmoz, Yahoo Directory v.v) +2 Vic ny rt tt nhng n ph thuc vo Directory no. c lit k trong Dmoz, Yahoo Directory v nhng directory tng t nh vy s thc y rt ln cho th hng ca bn nhng nu c rt nhiu link t cc directories c PR th khng c ch v thm ch c th b xem l spam link nu bn c hng trm hoc hng ngn link nh vy 23. S lng link i vo website bn t 1 page +1 Vic t t link t mt page n website ca bn th tt hn. Bi v theo cch ny mi link ca bn tr nn quan trng hn 24. Thit lp khu vc lin kt t trong trang (Named anchors) +1 Thit lp lin kt t trong trang th rt hu ch cho vit iu phi trang nhng cng rt hu dng cho Seo bi v bn c th to thm mt mc cho trang, mt on hoc text. V

Page 318 of 413

d: trong code thit lp khu vc lin kt ring cho trang <a href=#Anchor> c gii thch v Anchor</a> 25. Lin kt n t nhng trang web c to ra cho mc ch seo cho trang khc hoc nhng trang ng nghi ng +0 Nhng lin kt n t trang ny khng lm nh hng n trang ca bn nu nh bn khng t links ca nhng trang ny vo website mnh. Google xem nh nhng lin kt n t trang nay ngoi tm kim sot ca bn do bn khng b pht nhng trong mi trng hp bn nn trnh xa nhng trang web c to ra cho mc ch seo hoc nhng trang ng ng 26. Qu nhiu lin kt ra ngoi. Google khng thch nhng trang c nhiu lin kt i ra ngoi, bi vy tt nht bn nn gia s lin kt ra ngoi trn website mnh di 100 link. C nhiu link ra ngoi khng to li ch no trong vic xp hng m thm ch cn gy nu hu qu ngc li 27. Qu nhiu lin kt hoc link spam -1 Rt c hi cho th hng ca bn khi bn c nhiu link n t mt website bi v n cho thy bn ang mua link hoc t nht l spam link. Nu may mn th cng ch vi link c tnh cho vic SEO ca bn thi. 28. t backlink cho nhng trang to ra cho mc ch SEO hoc nhng trang ng ng -3 Khng nh vic c link n t nhng trang to ra cho mc ch SEO hoc nhng trang ng ng. Vic bn t li backlink trn website mnh cho nhng trang ny s khin website ca bn b mt t kha hon ton. Bn cn phi nh k kim tra tnh trng ca nhng trang t link trn trang ca bn. V d (Bn c to ra 5 blog wordpress hay blogspot vi ni dung khng lin quan Seo cho mt t kha chnh n website bn, v khi bn t li backlink cho 5 blog ny trong website bn s khin website bn ri vo tnh trng mt t kha hon ton.) 29. Lin kt vng tr hnh -3 Lin kt vng xy ra khi trang A link n trang B, trang B link n trang C v trang C link tr v trang A. l v d n gin v lin kt thnh vng v ngoi ra c nhng trng hp khc na. Lin kt vng trong nh l mt loi lin kt trao i tr hnh v b google pht nng 30. Lin kt link cho chiu rng pixel nh Khi bn c t link trn website mnh c kch thc 1 pixel hoc chiu rng nh vy th u ny c sem nh l v hnh vi con ngi v bn ang c gng qua mt b my tm kim.

Page 319 of 413

II.Metatags 31. <Description> metatag +1 Metatags th ang tr nn t quan trng hn i vi google nhng n vn c tnh. S dng metatag <Description> vit m t cho website ca bn. Ngc li i vi Yahoo v Bing n vn rt quan trng. i vi google i khi bn thy s xut hin ca m t trong kt qu tm kim 32. <Keywords> metatag +1 Metatag <Keywords> khng c ch bi google nhng n vn c quan tm bi Bing v Yahoo. Chiu di ca metatag <Keywords> khong 10 -20 t l tt nht. Khng nn nhi nht t kha m bn khng c trong ni dung vic ca hi cho th hng ca bn.1 33. <Language> metatag +1 Nu website ca bn c ngn ng c th th ng tab ny trng. Mc d cng c search thng minh xc inh ngn ng trn trang ca bn thay v da vo s khai bo trn th meta <language> nhng cng c search vn xem xt th ny. 34. <Refresh> metatag Metatag refresh l mt cc chuyn lng khch t mt website n 1 website khc. Ch lm vic ny nu bn cn duy chuyn trang web ca mnh n mt tn min mi v bn cn tm thi chuyn hng khch truy cp. Nu s dng trong mt thi gian di n s lm nh hng n bn xp hng ca bn. Trong mi trng hp s dung chuyn hng 301 l tt nht. III.Ni Dung 35. Ni dung c o +3 C nhiu ni dung (lin quan n ng cnh website v khc vi ni dung t website khc c v tiu ln t ng) th s gip tng th hng ca bn 1 cch tht s 36. Tn s thay i ni dng Thay i thng xuyn th c nh gi rt cao. S rt tt nu bn lin tc thm ni dung mi cho website 37. Kch thc ca t kha : +2 Khi 1 t kha trong vn bn c font ln nhng t cn li u khin cho n ng ch hn do n quan trng hn phn cn li ca on text. Cch tnh im ny vn p dng

Page 320 of 413

cho th (<H1>,<H2>). Thng thng t quan trng th s dng font ch ln hn phn cn li ca on text. 38. nh dng t kha +2 T m hoc nghing l mt cch nhn mnh s quan trong cc t v cm t quan trng. Tuy nhin bn ch s dng khi mun nhn mnh nu khng n s mang tc dng ngc li. 39 . Tui ca ni dung +2 Nhng ni dung va mi cp nht th c google thch hn (Bn nn thng xuyn cp nht ni dung mi) 40. Kch thc file +1 Trang di th khng c google thch, hoc t nht l bn c th t th hng t kha tt hn nu bn s dng 3 trang ngn hn thay v tp trung cho 1 trang di m ch cp mt ch . V vy bn nn chia trang di ca mnh thnh nhng trang nh hn. 41. Phn tch ni dung -2 Theo quan im marketing th vic phn tch ni dung (da trn IP hoc trnh duyt v.v) th rt tuyt. Nhng i vi Seo th bt li bi v khi bn c mt Url khng lin quan n ni dung th h thng search s b nhm ln ni dung trong trang ca bn. 42. Thit k v vit code ngho nn -2 B my tm kim ni rng h khng mun mt website thit k v vit code ngho nn, mc d cha c trang web no b cm v code ln xn hoc hnh nh xu nhng khi bn thit k xu v vit code ln xn th website bn c th khng c index ht bi vy vic thc km v thit k v vit code c th gy hi cho website bn. 43. Ni dung bt hp php -3 S dng ni dung c bn quyn ca ngi khc m khng c cho s php hoc ni dung thc y hnh vi phm php c th khin bn b ui khi cng c tm kim 44. n vn bn vi ngi c -3 y l cch Seo m en. Khi con b tm kim khm ph ra bn c mt on text c bit c n vi ngi xem th bn s b pht 45. Cloaking -3 K thut cloadking trong SEO? Cloaking l mt k thut SEO m gip cho ni dung ca

Page 321 of 413

site di mt cc Spiders ca cc Search Engines (c my tm kim) khc vi ni dung m khch truy cp site thy. iu ny thng c tha hin bng cch s iu chnh hin ni dung ty theo IP truy cp website. 46. Doorway pages -3 To ra nhng trang khc vi mc ch la nhn rng webstie c lin quan n ni dung ny trong khi thc t th khng. Vic ny s b pht rt nng t google 47. Ni dung b trng lp -3 Khi bn c nhiu ni dung ging nhau trn nhiu trang ca website bn vic s b pht v khng lm c website ca bn tr nn ln hn. ng thi hy hn ch s trng lp ni dung vi IV.Thnh phn khc 48. JavaScript +0 Nu s dng nh l b tr tnh nng cho web th khng c vn g. Nhng nu bn hin th ni dung thng qua JavaScript u ny s rt kh cho nhn hot ng v nu code JavaScript c vit rt ln xn th nhn khng th no i theo ng hng website mun v bn s lm nh xu. 49. Hnh nh trong text +0 Ch vit text trong web th rt nhm chn nhng c nhiu hnh nh v khng c text th c xem nh l li trong SEO. Bn nh lun lun cung cp th <Alt> m t cho hnh nh nhng khng nn nhi nht t kha v cung cp thng tin khng lin quan. 50. Video +0 Nu bn khng c tapescript cha Video th google s khng lp cp nht video vo cng c tm kim 51. S dng hnh nh cho vic lin kt link -1 S dng hnh nh lin kt th rt c hi, c bit l khi bn khng thm tab <alt>. K c khi bn thm tab <alt> th n cng vn c xem l c hi. Bi vy bn ch s dng hnh nh iu hng ch khi iu ny thc s quan trng i vi vic b tr thit k trong trang web 52. Frames -2 Fames th rt c hi cho SEO. V bn ch dng khi thc s cn thit

Page 322 of 413

53. Flash -2 B tm kim khng nh ch mc cho ni dung Flash bi vy bn lun nh t ni dung cho th <alt> 54. Flash trn trang ch -3 Cch ny dng nh hin ti khng cn dng. Nhng c mt Flash trn trang ch v khng c c HTML th xem nh l bn chng Seo g c. V. Domains, URLs, Web Mastery 55. Url cha nhiu thng tin +3 u ny rt quan trng t bit i vi Yahoo v Bing 56. Kh nng truy cp web +3 Mt vn c bn m bn thng b qun. l nu nh website ca bn (hoc mt s trang trong website) b h link, hoc li 404, hoc t mt khu bo mt th n gin l nhng trang s khng c nh ch mc. 57. Sitemap +2 Rt tt nu bn c sitemap cho website v b tm kim c bit quan tm loi file ny. Bn c th lm theo dnh ang HTML hoc lm theo nh dng ca google 58. ln website +2 B tm kim rt thch nhng website ln , cng ln cng tt. Khng c website no b pht v c trn 10 000 trang c. 59. Tui ca website +2 Trang web c thi gian tn ti lu th c nh gi cao hn l mt website mi c thnh lp. 60. Giao din trang +2 Giao din trang cung quan trng cho th hng bi v khi trang ph hp vi 1 giao din, iu ny gip tng th hn ca tt c cc trang lin quan n giao din ny. 61. V tr tp tin trong trang web +1 V tr tp tin trong website cng gn vi th mc gc c xu hng xp hng tt hn so vi tp tin cch xa th mc gc

Page 323 of 413

62. Domain v subdomain +1 C mt domain ring bit th tt hn. V d s dng tn min dienthoai.com tt hn dienthoai.logspot.com 63. Loi tn min +1 Loi tn min vn c quan tm theo cch khc nhau. Thng thng ngi ta s dng tn min .com. Loi tn min ny tt hn .biz, .info hay .net. Nhng loi tn min mnh nht l .edu hoc .org 64. Du gch ni trong url +1 Du gch ni gia cc t trong url gip d c v tng im SEO. u ny p dng cho c tn min chnh v phn cn li ca tn min VD: dien-thoai.com/dien-thoai-nokia.html 65. Chiu di ca url +0 Ni chung khng quan trng nhng nu Url qu di th n bt u trng ging nh spam. Chnh v vy url khng nn di hn 10 t (3-4 t cho tn min chnh v 6-7 t cho phn cn li ca tn min) 66. a ch IP 0 Khng thnh vn nu nh bn chia s host hoc dng host min ph. Nhng bn s b vo danh sch en nu bn spam hoc thc hin cc hnh ng bt hp php. 67. t qung co Adsense 0 t Adsense google th khng c lin quan g n SEO c. Ch gip bn tng thu nhp ch khng gip bn tng v tr t kha. 68. Qung co google Adwords 0 Ging nh adsense, Adwords khng h nh hng g n SEO ngoi vic gip bn c lu lng ngi ving thm website nhiu hn 69. Thi gian cht ca host -1 Thi gian cht ca host lin quan trc tip n kh nng tip cn bi v nu mt site thng xuyn cht th b khng th index. Trong thc t ch c mt yu t l nh cung cp host khng ng tin cy hoc thi gian hot ng t hn 97-98%. 70. Url ng -1

Page 324 of 413

B tm kim thch url tnh. Mc d bn thy c rt nhiu url ng vn nm trn top. Nhng nh vy vn khng tt c bit l url ng trn 200 k t. Trong mi trng hp bn nn s dng cng c chuyn url ng v url tnh thn thin vi SEO. V d : chuyn url ng thoitrang5s.com/category.php?id=1 v url tnh thoitrang5s.com/vaydam.html 71. Session Ids -2 S dng session ids th khng tt hn vic bn s dng url ng. Khng c dng session ids cho thng tin m bn mun nh ch mc bi b tm kim v vic ny d b hiu nhm l b trng ni dung. V d:3 link session ids di du tr v mt ni dung vi link u tin l link gc Dien-thoai.com/nokia-1200.html Dien-thoai.com/nokia-1200.html?id=abcd Dien-thoai.com/nokia-1200.html?id=abcdfe 72. Cm trong file robots.txt -2 Nu mt phn ca trang b cm u ny s nh hng n phn cn li ca trang bi vy b tm kim s t n trang bn hn. Chnh v th nu phn no trong website bn khng cn index c khai bo t chi trong robots.txt 73. Chuyn hng (301 and 302) -3 Khng p dng cch ny th vic chuyn hng s lm cho bn b thit hi nhiu. V mt chuyn hng c th c xem nh l mt k thut m en khi khch truy cp b chuyn hng n 1 trang khc

Phn trang n gin vi Jquery


---Phn trang l hnh thc m rt nhiu web hin nay s dng,phn trang cng khng qu phc tp,mnh xin chia s code phn trang sn phm ca mnh c s dng Jquery n gin,DEMO : http://nobitacnt.tk/shop/test/ ---class sn phm : PHP Code:
<?php require_once("cl_connectDb.php");

Page 325 of 413

class sanpham extends connectdb{ public function __construct(){ $this->connect(); } public function list_sp($start,$limit){//hin th sn phm $sql="select * from sanpham order by id_SP DESC LIMIT $start ,$ limit "; $this->query($sql); $data=array(); if($this->num_rows()!=0){ while($row=$this->fetch()){ $data[]=$row; } }else{ $data=0; } return $data; } } ?>

---class phn trang : PHP Code:


<?php require_once("cl_connectDb.php"); class phantrang extends connectdb{ public $page; public $star; public $display; public $id; public function __construct(){ $this->connect(); $this->get_start(); $this->display=12; } public function get_page(){ if(isset($_GET['page'])){ $this->page=$_GET['page']; }else{ $sql="select * from sanpham"; $this->query($sql); if($this->num_rows()>$this->display){ $this->page=ceil($this->num_rows()/$this->display); }else{ $this->page=1; } } } public function get_start(){ if(isset($_GET['start'])){ $this->star=$_GET['start']; }else{ $this->star=0; } } public function out_put(){

Page 326 of 413

echo "<ul class='nav'>"; if($this->page>1) { $next=$this->display+$this->star; $prev=$this->star-$this->display; $hientai=($this->star/$this->display)+1; if($hientai !=1) { echo "<li><a href='javascript:void(0)' class='pt' title='". $this->page."' id='".$prev."'> Preview </a></li>"; } for($i=1;$i<=$this->page;$i++) { if($hientai !=$i) { echo "<li><a href='javascript:void(0)' class='pt' title='" .$this->page."' id='".$this->display*($i-1)."'> $i </a></li>"; } else { echo "<li class='current'>$i</li>"; } } if($hientai !=$this->page) { echo "<li><a href='javascript:void(0)' class='pt' title='". $this->page."' id='".$next."'> Next </a></li>"; } }else{ echo "<li class='current'>1</li>"; } echo "</ul>"; } } ?>

---file js ajax.js : PHP Code:


$(document).ready(function(){ $("a.pt").click(function(){ var page=$(this).attr("title"); var start=this.id; $.ajax({ type : "GET", url : "index.php?page="+page+"&start="+start, datatype: "html", beforeSend: function(){ $('#load').html("LOADDING..."); }, success: function(html){ $('#load').text(''); $('#kq').html(html); } });

Page 327 of 413

}) })

v cui cng l file index : PHP Code:


<html> <head> <link rel="stylesheet" type="text/css" href="style.css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/lib s/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="ajax.js"></script> </head> <body> <?php echo "<div id='load'></div>"; echo "<div id='kq'>"; require_once("cl_sanpham.php"); require_once("cl_phantrang.php"); //phan trang $pt=new phantrang; $limit=$pt->display; $start=$pt->star; $pt->get_page(); //end phn trang $sanpham=new sanpham; $data=$sanpham->list_sp($start,$limit); if($data!=0){ foreach($data as $row){ $ten_sp=$row['name_SP']; echo $ten_sp."<br />"; } echo "<div id='phantrang'>"; $pt->out_put(); echo "</div>"; }else{ echo "EMPTY DATA"; } echo "</div>"; ?> </body> </html>

Performance Tips trong PHP - Part 1


How are you today ? Are you ok ? I hope so. Page 328 of 413

Are you happy ? I hope so . Now, we will talking about Perfromance Tips in PHP ....... Ti sao khi xy dng 1 class chng ta cn phi c setname, getname ? Tht s iu khng cn thit, ni chung l tu trng hp ! Sau y l 1 v d minh ho: PHP Code:
class hello { public $name = ""; public function setname($a){ $this->name = $a; } public function getname(){ return $this->name; } } $doc = new hello();

Nu theo 1 chun th ti ngy cc bn c set xong ri get ? PHP Code:


$doc->setname("Yachi"); $b = $doc->getname();

N tht s l v b phi ko ? Thay v lm nh vy, chng ta lm th ny vy , ci ny s run up 100% faster , ci ny ng Google bo m y PHP Code:
$doc->name ="Emiko"; $n = $doc->name;

Ni sung th cc bn s ko tin, th xem no PHP Code:


class hello { public $name = ""; public function setname($a){ $this->name = $a; } public function getname(){ return $this->name; } }

Page 329 of 413

$doc = new hello(); for($i=0; $i<=10; $i++){ $a = microtime(true); for($j=0; $j<100000;$j++){ $doc->name ="Emiko"; $n = $doc->name; } echo microtime(true) - $a; echo "<br />"; } echo $n; echo "<br /><hr /><br />"; for($i=0; $i<=10; $i++){ $a = microtime(true); for($j=0; $j<100000;$j++){ $doc->setname("Yachi"); $b = $doc->getname(); } echo microtime(true) - $a; echo "<br />"; } echo $b;

p/s : y l micro nh, nhng trong vng lp for mnh ch dng 5 s 0, bi v i khi > 6 s 0 th browser s bo li (Maximum execution time of 30 seconds exceeded), v tt nhin, bao nhiu s 0 cng kt qu nh nhau thi By gi, th tin ri ch . Hy thay i

cch code ca mnh li no

Nhng lp v phng thc tru tng trong PHP 5.


Nhng lp v phng thc tru tng trong PHP 5. -Mt lp tru tng khng cho php to mt i tng th hin lp tru tng (an instance of a class). -Mt lp cha phng thc tru tng phi l tru tng. -Mt phng thc tru tng th khng c nh ngha hnh vi. -Khi k tha mt lp tru tng, tt c phng thc tru tng trong lp cha phi c nh ngha bi lp con. Nu phng thc tru tng c nh ngha l protected, hm

Page 330 of 413

hnh vi phi c nh ngha protcted hay public m khng c nh ngha private. V d n gin lp tru tng: PHP Code:
<?php abstract class AbstractClass //Khai bao mot lop truu tuong. { public $mumber1; public $number2; //Khai bao phuong thuc truu tuong. abstract protected function operationName($x,$y); abstract protected function getValue(); //Khai bao phuong thuc chung public function printOut() { echo $this->getValue(); } public function setValue($x,$y) { $this->number1=$x; $this->number2=$y; } } class AddtionClass extends AbstractClass //Ke thua lop truu tuong { // Dinh nghia hanh vi cua phuong thuc truu tuong. protected function getValue() { $result=$this->number1+$this->number2; return $result; } public function operationName($x,$y) { return "Day la phep toan Tong: $x+$y="; } } class SubtractionClass extends AbstractClass //Ke thua lop truu tuo ng. { // Dinh nghia hanh vi cua phuong thuc truu tuong. protected function getValue() { $result=$this->number1-$this->number2; return $result; } public function operationName($x,$y) { return "Day la phep toan Hieu: $x-$y="; } } $a= new AddtionClass; $x=7;$y=7; echo $a->operationName($x,$y); $a->setValue($x,$y); $a->printOut();

Page 331 of 413

echo"<br />"; $b= new SubtractionClass; $x=10;$y=7; echo $b->operationName($x,$y); $b->setValue($x,$y); $b->printOut(); ?>

Kt qu: Day la phep toan Tong: 7+7=14 Day la phep toan Hieu: 10-7=3 y l v d mnh vit trong phm vi phi kin thc hn hp ca mnh mong cc bn ng gp kin.:)

M hnh Multi Modules , Multi Templates v Multi Database


*Ngi bun qu khng c g lm ln vit 1 bi hng dn hiu k v khi no qun vo c lai. A/Multi Modules I/ tng: ---Mnh cng ang tm hiu Zend frameword thy n c s dng 1 m hnh multi modules rt hay v linh hot ln c tng s dng ngay m hnh ny trong cc ng dng thc t khi cc bn s dng nhiu modules.N chy theo link dng 'modules/controller/action/id' V mnh cng cu hnh test th trn m hnh ny theo mun II/u im : ---D lm vic theo nhm mi ngi vit 1 modules m khng lin quan ti nhau ---D dng thm hay xa 1 modules trong ng dng m khng lm nh hng ti cc modules khc ---T ng load controller v model trong module hin ti ---T ng load file css+js trong modules hin ti ---T ng load cc file block trong modules hin ti III/M hnh multi modules : -M hnh c dng cu trc nh sau : PHP Code:
Root / ---application/ ----------Bootstrap.php ----------configs/ ----------modules/

Page 332 of 413

---------------------admin/ -----------------------------controllers/ -----------------------------modles/ -----------------------------views/ -----------------------------forms/ -----------------------------blocks/ ---------------------shopping/ -----------------------------controllers/ -----------------------------modles/ -----------------------------views/ -----------------------------forms/ -----------------------------blocks/ ---------------------news/ -----------------------------controllers/ -----------------------------modles/ -----------------------------views/ -----------------------------forms/ -----------------------------blocks/ ---public/ ---------templatest/ ---------------------admin/ -----------------------------images/ -----------------------------css/ -----------------------------js/ -----------------------------flash/ ---------------------shopping/ -----------------------------images/ -----------------------------css/ -----------------------------js/ -----------------------------flash/ ---------------------news/ -----------------------------images/ -----------------------------css/ -----------------------------js/ -----------------------------flash/ ---------upload/ ---library/ ---.htacess/ ---define.php/ ---index.php/

---y l m hnh mnh ang s dng nhn vo cu trc chc cc bn hiu ngha cc th mc ri. ---File Bootstrap.php : PHP Code:
<?php class Bootstrap{ public static $module = NULL;//ly tn module hin ti public static $controller = NULL;//ly tn controller hin ti public static $action = NULL;//ly action hin ti public static $id = NULL;//ly id hin ti private static $instance = NULL; public function __construct(){ if(self::$instance == NULL){ self::$instance = new Bootstrap;

Page 333 of 413

} return self::$instance; } public static function run(){ Session::__init(); if(isset($_GET['url'])){ $url = $_GET['url']; $url = rtrim($url,"/"); $url = explode("/",$url); self::$module = $url[0]; }else{ self::$module = 'default'; } if(isset($url[1])){ self::$controller = ucfirst($url[1]);//bien doi chu cai dau tient hanh chu hoa }else{ self::$controller = 'Index'; self::$action = 'IndexAction'; }//end if isset $url[1]; //ly file controller hin ti $modules_path = MODULES_PATH . self::$module;//duong dan toi mo dules hien tai $name_controller = self::$controller . 'Controller'; $file_control = MODULES_PATH . self::$module . '/controllers/' . $name_controller . '.php'; if(file_exists($file_control) && file_exists($modules_path)){ require_once($file_control); }else{//chay controller error $file_control = MODULES_PATH . 'default/controllers/ErrorC ontroller.php' ; $name_controller = 'ErrorController'; require_once($file_control); } $c = new $name_controller; $c->LoadModel(self::$controller);//auto load model if(isset($url[2])){ if(isset($url[3])){ self::$id=$url[3]; self::$action = ucfirst($url[2]).'Action'; $c->{self::$action}(self::$id); }else{ self::$action = $url[2].'Action'; $c->{self::$action}(); } }else{ $c->IndexAction(); }

Page 334 of 413

} } ?>

---

Tm hiu th vin Php_filter


A.PHP_FILTER l g ?
Hin nay, hu ht mi ng dng u c s dng d liu t nhng ngun ngoi khng an ton bao gm :

Cookies D liu nhp vo t form Web services data Bin server Cc kt qu tr v t database

V th , PHP filters c s dng lc nhng loi d liu y . s dng filter chng ta cn dng nhng hm sau y: filter_var(bin, kiu lc) : Lc bin vi kiu lc ch nh filter_var_array(bin, mng_kiu_lc): Lc nhiu bin vi nhiu kiu lc ch nh khc nhau filter_input(Loi_method_trong_Form, tn_field, kiu lc) : Lc t 1 form input vi kiu lc ch nh filter_input_array(Loi_method_trong_Form, tn_field, mng_kiu_lc): Lc nhiu form input vi nhiu kiu lc ch nh khc nhau

B.CCH S DNG
Kiu lc:

Page 335 of 413

C 2 loi kiu lc l : SANITIZE v VALIDATE a/ SANITIZE:


Kiu lc ny dng cho php hoc khng cho php mt s k t trong chui Lun tr v chui . Cc loi FILTER_SANITIZE cn nh :

FILTER_SANITIZE_NUMBER_INT: Ch cho php s v cc php ton + - xut hin trong chui FILTER_SANITIZE_STRING : B qua hoc m ha nhng k t khng mong mun v cc th FILTER_SANITIZE_MAGIC_QUOTES: Thm \ vo trc nhng k t ch nh gm: ' " \ NULL FILTER_SANITIZE_SPECIAL_CHARS: Thay th cc k t < > & v cc k t c m ASCII b hn 32 FILTER_SANITIZE_EMAIL: B qua cc k t khng hp php trong 1 email: " $ ( ) , : ; <>\ FILTER_SANITIZE_URL : B qua cc k t khng hp php trong 1 ng dn . Cho php hu ht cc k t thng dng V d: PHP Code:
<?php $test_number_int = '5+4ab-7bc'; var_dump(filter_var($test_number_int, FILTER_SANITIZE_NUMBER_I NT)); //Ta c chui '5+4-7' $test_string = '<b>ABC</b>'; var_dump(filter_var($test_string, FILTER_SANITIZE_STRING)); //Ta c chui 'ABC' $test_magic_quotes = "Yours ' s car "; var_dump(filter_var($test_magic_quotes, FILTER_SANITIZE_MAGIC_ QUOTES)); //Ta c chui " 'Yours \' car "; $test_special_chars= "Bn <Lovely> & <Beautiful> "; var_dump(filter_var($test_special_chars, FILTER_SANITIZE_MAGIC _QUOTES)); //Khi click phi chn view source trang web bn s thy chui " Bn &lt ; Lovely &gt; &amp &lt; Beautiful &gt;" $test_email = "online(mean)miss;ing'yo\u@yahoo.com "; var_dump(filter_var($test_email,FILTER_SANITIZE_EMAIL)); //Tr v chui "onlinemeanmissing'you@yahoo.com" $test_url = "http://www.w3schools.com "; var_dump(filter_var($test_email,FILTER_SANITIZE_EMAIL));

Page 336 of 413

//Tr v chui "http://www.w3school.com" ?>

Lu : SANITIZE ch c nhim v lc b cc thnh phn khng mong mun trn chui hp l ln hok hp l . b/VALIDATE

Kiu lc ny xc nh xem 1 chui c ng format ca n hay khng Tr v data nu hp l, FALSE nu tht bi Cc loi FILTER_VALIDATE cn nh :

FILTER_VALIDATE_INT : xc nhn tnh hp l ca 1 con s nguyn. Bn cnh c cc options nh : min_range(gi tr nh nht cho php) , max_range ( gi tr ln nht cho php) FILTER_VALIDATE_FLOAT : xc nhn tnh hp l ca 1 con s thc FILTER_VALIDATE_EMAIL : xc nhn tnh hp l ca 1 email FILTER_VALIDATE_URL : xc nhn tnh hp l ca 1 url 1 s FLAGS ca FITLTER_VALIDATE_URL: FILTER_FLAG_SCHEME_REQUIRED: chng hn http://example.com FILTER_FLAG_HOST_REQUIRED: Yu cu URL c tn host chng hn http://www.example.com FILTER_FLAG_PATH_REQUIRED: Yu cu URL c ng dn sau domain chng hn http://www.example.com/index/ FILTER_FLAG_QUERY_REQUIRED: Yu cu URL c chui .chng hn http://www.example.php?id=5 V d: PHP Code:
<?php $test_int =15; $options = array('options'=>array('min_range' =>30, 'max_rang e'=>50)); var_dump(filter_var($test_int,FILTER_VALIDATE_INT, $options)) ; //Tr v FALSE v 15 khng thuc on [30;50] $test_email = 'example@'; var_dump(filter_var($test_email, FILTER_VALIDATE_EMAIL)); // Tr v FALSE . $test_url1 = 'http://example.com'; $test_url2 = 'http://example.com/index/abc'; var_dump(filter_var($test_url1,FILTER_VALIDATE_URL)); // Tr v 'http://example.com' var_dump(filter_var($test_url2, FILTER_VALIDATE_URL, FILTER_F LAG_PATH_REQUIRED)); // Tr v 'http://example.com/index/abc' var_dump(filter_var($test_url1, FILTER_VALIDATE_URL, FILTER_F LAG_PATH_REQUIRED));

Page 337 of 413

// Tr v FALSE v $test_url1 khng c ng dn sau domain ?>

Chng ta tm hiu v cch s dng cc hm cn li. To 2 file : form.html v filter.php form.html: HTML Code:
<form action = 'filter.php' method ='post'> Name: <input type = 'text' name = 'name' / > <br/> Age: <input type = 'text' name = 'age' / > <br/> Email: <input type = 'text' name = 'email' / > <br/> <input type = 'submit' value = 'Send' /> </form>

filter.php PHP Code:


<?php if(filter_has_var(INPUT_POST,'comments')){ echo ' C field tn l comments trong form input '; } else echo 'Khng c field tn comments trong form input<br/>'; $name = filter_input(INPUT_POST,'name',FILTER_SANITIZE_STRING); $options = array('options'=>array('min_range' =>18, 'max_range' =>80)); if(!filter_input(INPUT_POST,'age',FILTER_VALIDATE_INT,$options) ){ echo ' Tui ca bn phi >18 v < 80 <br/>'; } else{ $age = filter_input(INPUT_POST,'age',FILTER_VALIDATE_INT, $options); } if(!filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)){ echo ' Email sai format<br/>'; } else{ $age = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EM AIL); } /*on code trn kim tra input ca ngi dng, nu email v tui hp l th mi tin hnh gn vo bin, nu hok th xut li. Hm filter_input y c th dng INPUT_GET thay cho INPUT_POST nu me thod ca bn l GET. */ ?>

on code trn l kh di, chng ta rt ngn li nh sau : PHP Code:


$array = array('name'=>array('filter'=>FILTER_SANITIZE_STR ING), 'age' => array('filter'=>FILTER_VAL IDATE_INT, array('min_r ange'=>18, 'max_range' =>80)), 'email' =>array('filter'=>FILTER_VA

Page 338 of 413

LIDATE_EMAIL) ); $result = filter_input_array(INPUT_POST, $array); if($result['name'] && $result['age'] && $result['email']){ extract($result); //Hm ny ct mng khng tun t, tn ca kha s l bin cha gi tr kha } var_dump($name); var_dump($age); var_dump($email);

Chng ta c 1 loi filter c bit l FILTER_CALLBACK . PHP Code:


<?php $array_test =array('name'=>'Dang Hai Phung' , 'age' =>'18' , 'email'=>'onlinemeanmissingyou@yahoo.com'); $array = array('name'=>array('filter'=>FILTER_CALLBACK,'op tions'=>'strtoupper'), 'age' => array('filter'=>FILTER_VAL IDATE_INT, array('min_r ange'=>18, 'max_range' =>80)), 'email' =>array('filter'=>FILTER_VA LIDATE_EMAIL) ); //Hm strtoupper chuyn chui thnh ch IN HOA $result = filter_var_array($array_test, $array); if(filter_var_array($array_test, $array)){ extract($result); } var_dump($name); var_dump($age); var_dump($email); ?>

Cc bn th tr li cc cu hi sau nh : 1/ Filter l g ? Ti sao phi dng filter ? 2/ dng Filter cn nh cc hm no ? 3/ Kiu lc c my loi ? Trong mi loi th c cc loi FILTER_ no ? 4/ Cch s dng cc hm trong filter .

Vit Class Database c chng SQL Injection


Ba nay ln m nghin cu v phng chng li SQL Injector. Nhn tin mnh vit 1 class Database s dng li cho tin, cng vi mc ch lu tr kin thc nn post ln y cho mi ngi cng tham kho, cng khng bit l vit nh vy hon chnh cha. Nu ai c cch vit khc hay hn th post ln chia s nh :).

Page 339 of 413

PHP Code:
<?php class DB_MySQL{ private $db_host = "localhost"; //Khai bo thng tin host database private $db_user = "root"; //Khai bo thng tin username database private $db_pass = ""; //Khai bo thng tin password database private $db_name = "test"; // Khai bo thng tin name database private $connection; private $result = null; //Thuc tnh result tr v kt qu ca quer y. private $magic_quotes_active; private $real_escape_string_exists; public function __construct(){ $this>openConnect(); // T ng m kt ni CSDL khi gi n class $this->magic_quotes_active = get_magic_quotes_gpc(); $this>real_escape_string_exists = function_exists( "mysql_real_escape_string " ); } //M kt ni CSDL public function openConnect(){ $this->connection = mysql_connect($this->db_host, $this>db_user, $this->db_pass); if (!$this->connection){ die("Database connection failed: " . mysql_error()); } else{ $db_select = mysql_select_db($this->db_name, $this>connection); if(!$db_select){ die("Database selection failed: " . mysql_error()); } } } //ng kt ni CSDL public function closeConnect(){ if ($this->connection) { mysql_close($this->connection); unset($this->connection); } } //Phng thc chng SQL Injection public function sqlQuote( $value ){ //Kim tra xem version PHP bn s dng c hiu hm mysql_real_e scape_string() hay ko if ($this->real_escape_string_exists) { //Trng hp s dng PHP v4.3.0 tr ln //PHP hiu hm mysql_real_escape_string()

Page 340 of 413

if( $this->magic_quotes_active ) { //Trong trng hp PHP h tr hm get_magic_quotes_g pc() //Ta s dng hm stripslashes b qua cc du slashes $value = stripslashes( $value ); } $value = mysql_real_escape_string( $value ); } else { //Trng hp dng cho cc version PHP di 4.3.0 //PHP khng hiu hm mysql_real_escape_string() if( !$this->magic_quotes_active ){ //Trong trng hp PHP khng h tr hm get_magic_quote s_gpc() //Ta s dng hm addslashes thm cc du slashes vo gi tr $value = addslashes( $value ); } // Nu hm get_magic_quotes_gpc() active c ngha l cc du slashes tn ti ri } return $value; } //Chy cu truy vn query public function query($sql){ $this->result = mysql_query($sql, $this->connection); if (!$this->result){ $output = "Database query failed: " . mysql_error() . "<br /><br />"; die($output); } return $this->result; } //Ly s record d liu mng trong CSDL thng qua cu truy vn quer y public function fetch_array(){ if ($this->result){ $rows = array(); $rows = mysql_fetch_array($this->result); } return $rows; } //m s record trong CSDL thng qua cu truy vn query public function num_row(){ if($this->result){ $num = null; $num = mysql_num_rows($this->result); } return $num; } } ?>

Page 341 of 413

Cch s dng: PHP Code:


$username = $_POST['username']; $password = $_POST['password']; $db = new DB_MySQL; $sql = "SELECT * FROM user WHERE username='".$db>sqlQuote($username)."' AND password='".$db->sqlQuote($password)."'"; $db->query($sql); ....................... $db->closeConnect();

C th chng SQL Injection 1 cch linh hot hn bng cch s dng sqlQuote thit lp cc gi tr input trc khi a n vo cu truy vn sql.

Cch ly rss v tin tc T VnExPress


Bi vit ny hng dn cc bn ly tiu ,tm tt,ni dung v RSS thng qua rss ca trang VnExpress.Cn rt nhiu hn ch mnh dn post ln cc pro gp nh. Trc tin l hm ly tin tc (hm ny ca thy Huy ^^ nhng mnh thy thy ly tin t 1 bi thi) PHP Code:
function getdata($url, $start, $stop, $str_to_replace='', $str_replace= '', $extra_data='') { $fd = ""; $start_pos = $end_pos = 0; $url = fopen($url, "r");//url bn mun ly tin while(true) { if($end_pos > $start_pos) { $result = substr($fd, $start_pos, $end_pos-$start_pos); $result .= $stop; break; } $data = fread($url, 8192); if(strlen($data) == 0) break; $fd .= $data; if(!$start_pos) $start_pos = strpos($fd, $start);

Page 342 of 413

if($start_pos) $end_pos = strpos(substr($fd, $start_pos), $stop) + $sta rt_pos; } fclose($url); $info=str_replace($str_to_replace, $str_replace, $extra_data.$result); return $info; }

Cc bn m bt k file rss no ca VnExpress thy dc cu trc file XML c dng (Ln mng c cu trc xml minh thy cng ging vi cu trc html ^^) PHP Code:
<item>//root elment (ci ny coi nh th cha bn trong l cc th con) <title><![CDATA[ Ngn hng tr lng cao nht khi tng cng ty nh n c ]]></title> <description><![CDATA[ <a href="http://vnexpress.n et/gl/ebank/thi-truong/2011/09/ngan-hang-tra-luong-cao-nhat-khoi-tongcong-ty-nhanuoc/"><img src="http://vnexpress.net/Files/Subject/3b/a2/ec/59/nganhang2.jpg"></a>Vt qua cc "qu m thp" thuc cc ngnh du kh, vi n thng, khi ngn hng Nh nc ang ng v tr u bng v mc chi t r thu nhp cho cn b nhn vin vi mc bnh qun mt thng ln ti 18 triu ng. ]]></description> <link>http://ebank.vnexpress.net/gl/eba nk/thi-truong/2011/09/ngan-hang-tra-luong-cao-nhat-khoi-tong-cong-tynhanuoc/</link> <pubDate>Wed, 14 Sep 2011 17:01:02 GMT</pubDate> </i tem>

Tip n l c XML DOM,vi cu trc file rss nh trn PHP Code:


$dom=new DOMDocument('1.0','utf-8');//tao doi tuong dom $dom>load("Trang rss mun ly");//muon lay rss tu trang nao thi ban khai ba o day $items = $dom>getElementsByTagName("item");//lay cac element co tag name la item va gan vao bien $items foreach($items as $item)//lap { $titles=$item>getElementsByTagName('title');//lay cac element co tag name la title v a gan vao bien $titles $title=$titles>item(0);//lay ra gia tri dau tuien trong array $titles $descriptions=$item->getElementsByTagName('description'); $des=$descriptions->item(0); $links=$item->getElementsByTagName('link'); $link=$links->item(0); $pubDates=$item->getElementsByTagName('pubDate'); $pubDate=$pubDates->item(0); }

V y l cch s dng ch vic echo ra nhng g bn mun ly,lc ny c th thm tiu ,ni dung,tm tt,ngy gi vo CSDL ca bn PHP Code:
<table width="800" border="1" align=center bgcolor=#e5eef2> <tr> <td style="color:#FF0000; font-weight:bold; textdecoration:none"><a href="<? echo $link-

Page 343 of 413

>nodeValue ;?>" /><? echo $title->nodeValue ?></td> </tr> <tr> <td> <?php echo $pubDate->nodeValue; echo $dec->nodeValue; ?> </td> </tr> <tr> <td><font face=arial size=2> <?php $url=$link->nodeValue; $start="<div id=\"content\">"; $end="<div class=\"tag-parent\">"; $img_search= "/Files"; $img_show="http://vnexpress.net/Files"; $extra='<META HTTP-EQUIV="Content-Type" Content="texthtml; charset=UTF8"><link href="/Resource/Common/default.css" rel="stylesheet" type="tex t/css">'; echo getdata($url,$start,$end,$img_search,$img_show,$extra); ?> </font></td> </tr> </table>

Nh vy c sau 1 vng lp th ta s ly c link ca <link></link> Trong file xml v gn link vo bin $url,nh vy s ly dc tt c link ch khng ch 1 link y l ton b code ca bi ny PHP Code:
<? function getdata($url, $start, $stop, $str_to_replace='', $str_replace= '', $extra_data='') { $fd = ""; $start_pos = $end_pos = 0; $url = fopen($url, "r"); while(true) { if($end_pos > $start_pos) { $result = substr($fd, $start_pos, $end_pos-$start_pos); $result .= $stop; break; } $data = fread($url, 8192); if(strlen($data) == 0) break; $fd .= $data; if(!$start_pos) $start_pos = strpos($fd, $start); if($start_pos) $end_pos = strpos(substr($fd, $start_pos), $stop) + $sta rt_pos; } fclose($url); $info=str_replace($str_to_replace, $str_replace, $extra_data.$result);

Page 344 of 413

return $info; } ?> <ul style='list-style:none;'> <li><a href='?mod=xa-hoi'>X Hi</a></li> <li><a href='?mod=the-gioi'>Th Gii</a></li> <li><a href='?mod=kinh-doanh'>Kinh Doanh</a></li> <li><a href='?mod=van-hoa'>Vn Ha</a></li> <li><a href='?mod=the-thao'>Th Thao</a></li> </ul> <? $file='http://vnexpress.net/rss/gl/xa-hoi.rss'; switch($_REQUEST['mod']) { case "xa-hoi": $file='http://vnexpress.net/rss/gl/xa-hoi.rss'; break; case "the-gioi": $file='http://vnexpress.net/rss/gl/the-gioi.rss'; break; case 'kinh-doanh': $file='http://vnexpress.net/rss/gl/kinh-doanh.rss'; break; case 'van-hoa': $file="http://vnexpress.net/rss/gl/van-hoa.rss"; break; case 'the-thao': $file='http://vnexpress.net/rss/gl/the-thao.rss'; break; default: $file='http://vnexpress.net/rss/gl/xa-hoi.rss'; break; } $dom=new DOMDocument('1.0','utf-8');//tao doi tuong dom $dom->load($file);//muon lay rss tu trang nao thi ban khai bao day $items = $dom>getElementsByTagName("item");//lay cac element co tag name la item va gan vao bien $items foreach($items as $item)//lap { $titles=$item>getElementsByTagName('title');//lay cac element co tag name la title v a gan vao bien $titles $title=$titles>item(0);//lay ra gia tri dau tuien trong array $titles $descriptions=$item->getElementsByTagName('description'); $des=$descriptions->item(0); $links=$item->getElementsByTagName('link'); $link=$links->item(0); $pubDates=$item->getElementsByTagName('pubDate'); $pubDate=$pubDates->item(0); ?> <table width="800" border="1" align=center bgcolor=#e5eef2>

Page 345 of 413

<tr> <td style="color:#FF0000; font-weight:bold; textdecoration:none"><a href="<? echo $link>nodeValue ;?>" /><? echo $title->nodeValue ?></td> </tr> <tr> <td> <?php echo $pubDate->nodeValue; echo $dec->nodeValue; ?> </td> </tr> <tr> <td><font face=arial size=2> <?php $url=$link->nodeValue; $start="<div id=\"content\">"; $end="<div class=\"tag-parent\">"; $img_search= "/Files"; $img_show="http://vnexpress.net/Files"; $extra='<META HTTP-EQUIV="Content-Type" Content="texthtml; charset=UTF8"><link href="/Resource/Common/default.css" rel="stylesheet" type="tex t/css">'; echo getdata($url,$start,$end,$img_search,$img_show,$extra); ?> </font></td> </tr> </table> <? } ?>

Khng hiu sao khi lm localhost th chy ngon va upload ln host thi khng c g ^^.Bc no bit ti sao khng,Chc do host ri ln khng demo dc,chu kh to file php chy trn localhost nha Ai c cch ly tin no hay post ln anh em tham kho nh

Page 346 of 413

Cch dng hm ereg, preg trong php


tr li cho cu hi v chc nng ca hm ereg, mnh nu ra mt s tnh hung: + Bn c mt chui d liu: $xxx, bn cn kim tra xem chui c phi l nh dng: 4 con s ng lin nhau, ri n du , ri n 2 ch s, ri n du -, ri n 2 ch s na. + Bn c mt chui d liu: $xxx, bn cn tm trong chui $xxx, ch no c nh dng l: du <, ri cc k t, ri n du >. S thay th bng ch yyy. V d: $xxx= <a>noi dung gi do <p> noi dung tiep theo; s c bin i thnh: yyy noi dung gi do yyy noi dung tiep theo. R rng 2 tnh hung trn th cc hm string ca chng ta khng x l c. Bi v cc chui chng ta cn so snh hoc cn tm l khng xc nh, ta ch bit nh dng ca n thi. Do php h tr cho ta 2 nhm hm l ereg_ v preg_.. x l cc tnh hung trn. Mnh ngh bn nn dng nhm hm preg_.. thay th cho nhm hm ereg_. V: + ereg_ khng cn h tr cc phin bn sau (ereg_ has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.) + preg_ chy nhanh hn ereg_ (preg_.. which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg(). ) B. Cch s dng: + V nhng l do trn, mnh ngh bn nn chuyn sang dng nhm hm preg_ lun. + Sau y l mt s hm thuc nhm preg_: preg_match() Perform a regular expression match (so snh) preg_replace() Perform a regular expression search and replace (tm kim v thay th) preg_split() Split string by a regular expression (tm kim v ct b) preg_last_error() Returns the error code of the last PCRE regex execution preg_match_all() Perform a global regular expression match Tip theo, mnh s bn thm cch vit cc biu thc nh dng nh th no? Tc l: nu vit bng vn th l: 4 con s ng lin nhau, ri n du , ri n 2 ch s, ri n du -, ri n 2 ch s na nhng vit cho php hiu th vit nh th no? C. Mt s lu khi vit chui nh dng: + Dng cp du /../ bt u v kt thc chui nh dng. <?php if (preg_match(/php/, PHP is the web scripting language of choice.)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Kim tra xem c tn ti chui php khng? Kt qu l khng. V trong chui m

Page 347 of 413

ch c ch PHP (vit hoa) thi. + ch nh khng phn bit ch hoa hay ch thng ta dng k hiu i. <?php if (preg_match(/php/i, PHP is the web scripting language of choice.)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Kt qu l c tn ti. + Du ^ qui nh chui nh dng nm v tr u tin ca chui m. <?php if (preg_match(/^php/i, Content PHP is the web scripting language of choice.)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Kt qu l ko tm thy. V ch php khng nm v tr u tin + Du $ qui nh chui nh dng nm v tr cui cng ca chui m. <?php if (preg_match(/php$/i, PHP is the web scripting language of choice. And I choice PHP)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Kt qu l tim thy. v c ch PHP cui chui m. + Du \s qui nh khang trng <?php if (preg_match(/php(\s)pro/i, PHP pro is the web scripting language of choice)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Tm chui php pro (c khang trng gia ch php v ch pro). Kt qu l c tn ti + Du ? qui nh: khng tn ti, hoc nu tn ti th ch c 1 thi <?php if (preg_match(/php(\s)?pro/i, PHPpro is the web scripting language of choice. And I choice PHP)) { echo A match was found.; } else { echo A match was not found.;

Page 348 of 413

} ?> ==> Tm chui phppro hoc php pro. Kt qu l tn ti. + Du * qui nh: khng tn ti, hoc nu c th c th c nhiu <?php if (preg_match(/php(\s)*pro/i, PHP pro is the web scripting language of choice. And I choice PHP)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Tm chui phppro hoc php pro ( gia c th c nhiu khong trng). Kt qu l tn ti. + Du + qui nh: phi tn ti t 1 tr ln. <?php if (preg_match(/php(\s)+pro/i, PHPpro is the web scripting language of choice. And I choice PHP)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Tm chui php pro ( gia phi c t 1 khong trng tr ln). Kt qu l khng tn ti. + Cp du [] lit k <?php if (preg_match(/[_,]php/i, _PHP is the web scripting language of choice)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Tm chui _php hoc ,php . Kt qu l tn ti + A-Z, a-z , A-z qui nh mt k t vit hoa, vit thng, tt c. Phi i km vi du [] <?php if (preg_match(/[a-z]php/i, aPHP is the web scripting language of choice)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Kt qu l tn ti + 0-9 qui nh mt k s <?php if (preg_match(/[0-9]php/i, _PHP is the web scripting language of choice)) {

Page 349 of 413

echo A match was found.; } else { echo A match was not found.; } ?> ==> Kt qu ko tn ti + [A-z0-9]: mt k t hc mt k s <?php if (preg_match(/[A-z0-9]php/i, aPHP is the web scripting language of choice)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Kt qu l tn ti + {} qui nh s lng <?php if (preg_match(/[a-z]{2,5}php/i, aPHP is the web scripting language of choice)) { echo A match was found.; } else { echo A match was not found.; } ?> ==> Tm chui m c t 2 n 5 k t ri n ch php. Kt qu ko tn ti. V aPHP pha trc ch PHP ch c mt k t

Khi dng ajax khi nhn enter s t ng gi hm ging khi dng form
Cho cc bn, khi mnh dng ajax ( login ajax hay tm kim bng ajax ) th nt button bn s s kin onclick vy th lm sao m khi nhn enter n s t bit gi hm v tm kim hay login ging nh submit form ? Chc nhiu bn bit nhng mnh vn gii thiu cho bn no cha bit. th dng nh th ny: Vn dng form bn h nhng gi c hm ajax : bn vit form nh mnh thng nhng form bn ch cn onsubmit="return false;"

Page 350 of 413

HTML Code:
<form onsubmit="return false;">

nh bn thy mnh s kin onsubmit= return false HTML Code:


<input type="image" src="images/login_button.jpg" onclick="ham();" />

vy l nhp gi tr vo textbox nhn enter ch khng cn phi click l n gi hm c cc bn h V d HTML Code:


<form onsubmit="return false;"> <input type="text" id="key" /><br /> <input type="image" src="abc.jpg" onClick="tim();" /> </form>

[TUT] Add d liu t form vo database hin th ting vit c du.


Ti nay vit ci ny hng dn bn add d liu t form vo database (phpAdmin) v hin th c ting vit c du trong database (phpAdmin) ca mysql. -Bc 1: To 1 database v cc table vi Collation l utf8_unicode_ci. Nu bn c sn database th chuyn Collation ca database v utf8_unicode_ci lun nh. y mnh ly v d database ca mnh l nhac v table l cate .Xem hnh minh ha

-Bc 2: Trong file .php sau khi bn khai bo cu lnh kt ni n c s d liu th bn thm cu lnh ny pha di n mysql_set_charset('utf8',$conn); Xem code minh ha: PHP Code: Page 351 of 413

<?php $conn=@mysql_connect("localhost","root","root"); @mysql_set_charset('utf8',$conn); @mysql_select_db("nhac",$conn); ?>

-Bc 3: Gi th bn vo form add th 1 record mi xem no. y Tn ly v d l table cate nh:

-Sau khi thm th loi thnh cng th chy vo localhost xem th ci no

-Cn y l d liu c ly t database nhac ra bng trn web n

Page 352 of 413

C g thc mc c comment hn !

Tn mn v ECHO
Chc cc bn chng bao gi c Document v echo u nh? Nhng hm nay mnh e rng cc bn s phi kh bt ng, v ti sao mnh li vit bi ny, tht s th mnh cng hi bt ng khi v tnh c phi document v n trn php.net

Chc nng: Xut ra 1 hoc nhiu chui Cc ng dng v n


1. Xut ra 1 chui bnh thng ( Xa qu ri ) PHP Code:
echo 'Hello QHO Solution';

2. Xut ra 1 chui c xung dng ( Cng xa ri ) PHP Code:


echo 'Hello\nQHO\nSolution';

3. Xut ra 1 chui c km du nhy kp ( Ci ny nn lu v cc bn hay s dng ) PHP Code:


// Cch 1 echo 'Hello "QHO Solution"';

Page 353 of 413

// Cch 2 echo "Hello \"QHO Solution\""; // -------------- // R rng cch 1 hay hn cch 2 ng ko no?

4. S khc nhau gia nhy n v nhy kp PHP Code:


$var = 'QHO Solution'; echo 'Hello $var'; // Kt qu l Hello $var echo "Hello $var"; // Kt qu l Hello QHO Solution // Cn 1 cch na l ni chui v bin, xa qu ri, mnh khng ni th m nh

5. S thay th ca Multiple echo PHP Code:


echo echo echo echo '<div>'; "<p>$a</p>"; '<input type="checkbox" name="abc" value="'.$b.'" />'; '</div>';

// on trn c rt gn li thnh echo <<<END <div> <p>$a</p> <input type="checkbox" name="abc" value="$b" /> </div> END; // R rng cch vit di gn hn cch trn, ng thi code HTML c t ab vo d nhn hn

6. Echo c iu kin ( p dng IF ELSE SHORT HAND ) PHP Code:


$a = 'Solution'; echo ($a == 'Solution')?'QHO Solution':'QHONLINE'; // Kt qu l QHO Solution

---------------Trong nhng trng hp trn, mnh 'khoi' nht l ci th 5 ^^, tht bt ng khi tnh c c thy n, 1 cht chia s cho nhng bn cha bit

Code xem th mc con .


Page 354 of 413

Hi mi ng ,mi hc c ci ny nn share cho mi ngi n :). Share ch yu mnh nh kin thc lu hn, cn chc mi ng cng bit ht ri :D Code xem th mc con bng php : Hin th th mc con trc : (bn co th thay tn " phpMyAdmin " thnh tn khc) test_1.php PHP Code:
<table width=100% bgcolor='#cccccc'> <?php $size_1=GetImageSize('images/images.jpg'); var_dump($size_1); $size_1[0]=$size_1[0]/5; $size_1[1]=$size_1[1]/5; $size_2=GetImageSize('images/name.jpg'); $size_2[0]=$size_2[0]/5; $size_2[1]=$size_2[1]/5; $dir=opendir('phpMyAdmin'); while(($file=readdir($dir))!==false) { $file_or_folder="phpMyAdmin/$file"; echo "<tr><td>"; if(is_dir($file_or_folder) && $file!='.' && $fil e!='..' ) { $target="test_2.php?name=".$file; echo "<a href=\"".$target."\"><img src=\"images/i mages.jpg\" width=\"".$size_1[0]."\" height=\"".$size_1[1]."\"/>$file</ a></td>"; } if( !is_dir($file_or_folder) && $file!='.' && $ file!='..') echo " <img src=\"images/name.jpg\" width=\"".$siz e_2[0]."\" height=\"".$size_2[1]."\"/>$file</td>"; } closedir($dir); ?> </table>

test_2.php PHP Code:


<table width=100%> <?php $size_1=GetImageSize('images/images.jpg'); $size_1[0]=$size_1[0]/5; $size_1[1]=$size_1[1]/5; $size_2=GetImageSize('images/name.jpg'); $size_2[0]=$size_2[0]/5; $size_2[1]=$size_2[1]/5; $name=$_GET['name']; if(strstr($name,'phpMyAdmin')===false) { $file_0="folder/$name/"; $dir=opendir($file_0); } else

Page 355 of 413

{ $file_0="$name/"; $dir=opendir($name); } while(($file=readdir($dir))!==false) { $file_or_folder="$file_0/$file"; echo "<tr><td>"; if(is_dir($file_or_folder) && $file!='..') { $temp=$file; $file=$file_0."$file"; $target="test_2.php?name=".$file; echo "<a href=\"".$target."\"><img src=\"image s/images.jpg\" width=\"".$size_1[0]."\" height=\"".$size_1[1]."\"/>$tem p</a></td>"; } if(!is_dir($file_or_folder) && $file!='.' && $file!='..') echo " <img src=\"images/name.jpg\" width=\" ".$size_2[0]."\" height=\"".$size_2[1]."\"/>$file</td>"; } closedir($dir); ?> </table> && $file!='.'

trn dng : opendir() : m th mc, readdir() : c th mc, is_dir(): kim tra xem th mc l folder hay file (folder return true, not : return false) . Trong 1 folder n c ci foldername && filename l '.' vi '..' . Mnh hok bit 2 a ny u ra nhng m chn n ngay folder th n li xut hin di dng file v ngc li nn mnh chn 2 ci lun ( if (is_dir... && $file!='.' && $file!='..') ) . Test 1.php : Mnh download hnh v n to nn mnh dng hm GetImageSize() ly width ( size[0]) v height( size[1]) ri chia 5 >< . Lu l kim tra c phi folder hay hok, mnh phi chn vo trc tn ca file or folder tn th mc cha thnh ng dn y . Nn dng bin $file_or_folder t tin t . Test 2.php: Nguyn l ca test_2 .php l n chy lp li, t test_2.php s chy tp test_2.php thng qua phng thc $_GET . Nn mnh phi kim xem, $name y c tin t cha ( nu c ri tc l test_2.php bt u lp) . Nu cha th phi chn tin t vo ri mi opendir(). C cu lp : ly $temp gi ni dung $file lt xut ra mn hnh . Sau $file s dc chn tin t $file_0 vo . Ri gn $target ( ng tr link ) = $file

Page 356 of 413

Ri test_2.php lp li, lc ny $name s l $file sau $file_0 dc gn = $name thm du '/' . Ri chy tip cho folder k tip c th i ht s cy :) . Bn test bi ny bng cch to 1 filename.php trong www ri b folder vo www s dc :) Cho mi ngi . C code no ngn hn th cho mnh hc hi nh :)

STRING trong PHP [PART1]


I/String l g Bin trong PHP c th dng lu tr v thao tc vi dng ch . Chui c cha phi nm trong nhy n ( ) hay nhy i( ). VD: $string = Hello world ; $string = Hello world; im khc nhau gia nhy n v nhy i: Nhy n c 1 nhim v duy nht : cha nhng g bn trong n . Nhy n c th bao gm nhy i bn trong m hok b li Nhy i c thm 1 nhim v na : nu trong n c bin cha thng tin khc hay k t c ngha nh \n, th t ng thay th bin bng thng tin hay lm nhim v ca \n . Tm gi y l NI SUY . Nhy i c th bao gm nhy n v bin m hok b li Vy, ci no lm nhiu hn th ci s chm hn. Nn ch khi cn thit chng ta mi dng nhy i . Lu : bin mi trng khng th ni suy c . Nh $_POST, $_GET, . Chng ta phi dng 1 bin khc cha n ri ni suy bin va to th c . Ni chui: Dng ton t . ni chui VD: PHP Code:
$a = 'Your name is : ' ; $b= 'Jack'; $c = $a.$b; echo $c; //Xut Your name is : Jack .

Con tr chui : Chui c thao tc da trn con tr bn trong chui . VD: $a = This is a letter; Chui trn c 16 k t tnh lun khong trng, vy v tr c th ca con tr l t 0 -> 15 . V n i din cho k t ngay sau n . Hiu v con tr chui s d dng lm vic vi 1 s hm ct chui hn . II/Mt s hm quan trng ct chui hay tm trong chui: Page 357 of 413

Trong nhiu trng hp chng ta cn ct chui . 1 s hm gip ta lm iu l : substr(string, start, length) : Gi k t u chui c ct ra l X , k t cui chui c ct ra l Y Nu gi tr ca start: Dng: X l k t th start ca chui ban u m: X l k t cch pha phi ca chui ban u gi tr tuyt i start n v 0 : t v tr u chui Nu gi tr ca length : Dng : chiu di ca chui c ct m : Y cch pha phi mt gi tr tuyt i length n v 0 : Hok ct g ht Khng ch ra length : ct ti ht chui VD: PHP Code:
$a =' String to test function '; //25 k t $b_1 = substr($a,3,6); var_dump($b_1); //Ct ra ring t $b_2 = substr($a,3,-6); var_dump($b_2); //Ct ra ring to test fun $b_3 = substr($a,3,0); var_dump($b_3); //Ct ra rng $b_4 = substr($a,-3,6); var_dump($b_4); //Ct ra on //1 s trng hp c bit: $b_5 = substr($a, -3,-6); var_dump($b_5); //Ct t v tr o, kt thc v tr c <<<Ra rng $b_6 = substr($a,-3,6); var_dump($b_6); //Ct t v tr o, ct 6 k t <<< ra on v maximum ct c ch c 3 thi

strstr($string, ' string_to_search ') : tr v mt chui bt u t string_to_search u tin trong $string nu c, false nu hok c . VD: PHP Code:
$string = ' This IS a test of string '; $result = strstr($string, 'IS'); var_dump($result); //Tr v IS a test of string

stristr(): y chang strstr() nhng hok phn bit hoa-thng strpos(string, 'string_to_search' ,int start) : tr v V TR ca string_to_search u tin sau v tr start (nu c s dng start ) trong $string , hay false nu string_to_search hok c trong $string VD: PHP Code:
$string = ' This IS a test of string '; $result = strpos($string, 'is', 4);

Page 358 of 413

var_dump($result); //Tr v FALSE v hm strpos phn bit hoa thng $result = strpos($string, 'is'); var_dump($result); //Tr v 3

Stripos(): y chang strpos() nhng hok phn bit hoa - thng Strrpos($string, string_to_search, int start) : tr v chui bt u t V TR ca string_to_search cui cng (sau start nu c ) trong $string nu tm thy, false nu hok tm thy[/PHP] VD: PHP Code:
$string = ' This is a test of string '; $result = strrpos($string, 'is'); //Tr v 6 thay v 3

Strripos(string, string_to_search, int start) : ging nh strrpos() nhng hok phn bit hoa thng Str_replace(find,replace,string,count): tm v thay th trong chui, bin count dng m s ln thay th . Hm ny phn bit hoa thng Mt s lu : 1. Nu string l 1 mng: tm v thay th ca tng phn t trong mng v tr v kiu d liu array 2. Nu find l 1 mng : tm v thay th trong $string cc gi tr trong mng find . 3. Nu find v replace cng l mng v mng replace t phn t hn mng string : tm v thay th ln lt, phn d th tr v rng VD: PHP Code:
$string = 'This is a test of replacing in string' ; $result = str_replace('is', 'IS', $string, $count); var_dump($result); // Tr v ThIS IS a test of replacing in string; var_dump($count); //Tr v 2 $string_array = array('a','b','c','a', 'c'); $array_test_1 = str_replace('a', 'replaced',$string_array); var_dump($array_test_1); // $array_test_1 by gi l array('replaced','b','c','replaced','c'); /*(1) */$find_test_array = array('a','c'); $string_array = array('a','b','c','a', 'c'); $array_test_2 = str_replace($find_test_array, 'abc', $string_array); var_dump($array_test_2); //Code trn c ngha : tm a trong $string_ array ri thay th bng abc, sau tm tip c trong mng tr v ri li thay th bng ab c // $array_test_(2) by gi l array(ababc,b,abc,ababc,abc) $string_array = array('a','b','c','a', 'c','e'); $find_array =array ('a' ,'c','d', 'e'); $replace_array = array('r_a', 'r_c', 'r_d'); /*(2)*/ $array_test2 = str_replace($find_array, $replace_array, $st ring_array); // Tr v array(r_a,b,r_c, r_a, r_c, )

str_ireplace() : ging str_replace() nhng hok phn bit hoa- thng substr_replace(string, replace , start, length) :

Page 359 of 413

Tnh cht ca start th nhu trn hm Nu length:


Dng: di chui s b th m : di t v tr cui cng c thay th cho n cui chui 0 : thm vo thay v thay th

V d : PHP Code:
$string = 'This is a test of substr_replace '; $result = substr_replace($string, 'replaced', 3,4); var_dump($result); //Xut Thireplaced a test of substr replace $result = substr_replace($string, 'replaced', 3, -4); var_dump($result); //Xut Thireplacedace $result = substr_replace($string, 'replaced', 3,0); //Xut Thireplaces is a test of substr_replace $result = substr_replace($string, 'replaced',-3,5); //Xut This is a test of substr replareplaced

MT S QUY C: tham s trong hm c t mu tc l optional, t chn . Mnh vit cc PART bng WORD nn du ' ' thnh << Khi copy th script hok hiu u @@

STRING trong PHP [PART2]


III/ Thao tc chui khi chun b x l a/ Thao tc chui khi ly t form Chui ly t form cn phi c x l . i khi 1 source code ca chng ta c th run c, chy layout xut ra browser bnh thng nhng khi validate th li c rt nhiu li , v n nh hng nghim trng ti SEO . VD: th <br/> m vit thnh <br> <<<< 1 li <br/> m vit thnh <Br/> <<<< 1 li khc .

Page 360 of 413

Nhng khi xut ra browser th n u xung hng Cn form, gi s ngi dng sau khi insert 1 cun sch c ta John s life . Sau khi bn show ta sch ra browser th browser s vn hin th l John s life, khi click phi chn view source bn cng s thy John s life . Nhng k t l 1 k t c bit, n phi c m ha ra &#039; , trnh b li k trn. V th chng ta cn m ha d liu chui ly t form . lm iu ny chng ta cn 1 s hm nh : htmlentities(): i 1 s lng ln cc k t thnh m htmlspecialchars(string, quotestyle): ch i 5 k t c bit l nhy i (), nhy n () , du b (<), du ln (>) v du & . QUOTESTYLE c cc gi tr sau : ENT_QUOTES: m ha c 2 nhy v ENT_NOQUOTES: hok m ha nhy no c ENT_COMPAT : default, ch m ha Chuyn i sang m : => &quot; =>&#039; & =>&amp; < =>&lt; > =>&gt; b/Thao tc khi chun b a vo database: Khi chun b a vo database, chng ta cn phi ti u d liu, cng ngn cng tit kim . VD : PHP Code:
$conn = mysql_connect('localhost', 'root',"); mysql_select_db('test',$conn); $text = ' This is to TEST '; $sql = "insert into test(test) values ('$text')"; mysql_query($sql);

Vy chng ta insert 63 k t thay v 15 ch k t . Tht l 1 s ph phm Vy hn ch iu ny chng ta dng cc hm : trim(), ltrim(), rtrim() . Trim(string, charlist): Hm ny c nhim v b qua cc khong trng v 1 s k t khc t 2 pha ca string (hok c gia string nha). Mt s k t nn nh trong charlist \0 : NULL \t : tab ngang \n : xung dng \r: carriage return : khong trng x0B: tab ng Ltrim(string, charlist): ch b qua bn tri Rtrim(string, charlist): ch b qua bn phi Page 361 of 413

Nu khng ch ra charlist th mc nh s b qua c 5 loi trn 1 vn khc khi chuyn d liu vo database c bao gm cc k t nh () , (), (\),(NULL) th database c th nhm ln vi cc k t iu khin (control characters) . Control characters l nhng k t c nhim v nh kt thc, thay i, bt u 1 cu lnh hay 1 hm no . V th database phn tch nhng k t nh l 1 k t thng thng , chng ta cn phi thm \ . V d PHP Code:
$conn = mysql_connect('localhost', 'root',''); mysql_select_db('test',$conn); $text = " ' This is to TEST $sql = "insert into test(test) values ('$text')"; $result = mysql_query($sql); if( $result){ echo Insert successfully; } else{ echo Fail; } //Code trn s xut Fail v database hok hiu . ";

cho database hiu, chng ta cn phi thm \ vo trc n . Thay thnh \ ta s c insert successfully . lm iu ny chng ta c hm : Addslashes(string): thm \ vo trc cc k t k trn . Stripslashes(string): b \ trc cc k t k trn. PHP c th t ng thm \ cho chng ta, nu PHP lm vy m chng ta cn thm \ th s d . Vy chng ta dng hm : get_magic_quotes_gpc() test xem ch c bt cha . VD: PHP Code:
if(get_magic_quotes_gpc()){ echo 'On'; } else{ echo 'off'; }

Hoc chy sciprt ch cha : PHP Code:


<?php phpinfo(); ?>

Ri sau search t kha magic_quotes xem off hay on ! Nu n on th mi khi chng ta thao tc xut ra browser , phi dng stripslashes() . Cn khi insert vo

Page 362 of 413

database th hok cn addslashes na . Khi magic_quotes_gpc() off th Lu : Cho d addslashes hay cha addslashes th khi query t database chng ta cng khng phi stripslashes trc khi thao tc v database t ng b \ v lu vo CSDL .

STRING trong PHP [PART3]


IV/ So snh chui : so snh chui trong PHP chng ta c cc hm sau : strcmp(string1, string2): so snh string 1 v string 2 Hm ny tr v : >0 : nu string1 > string2 <0 : nu string1 <string2 =0: string1 bng string2 So snh theo kiu : 1 <12 <2<22 <<< quy lut trong t in V d : PHP Code:
$string1 ='Hello World! '; $string2= 'Hello World! '; var_dump(strcmp($string1,$string2)); //Xut 0

Hm identical vi strcmp() nhng hok phn bit hoa-thng l strcasecmp() Bn cnh chng ta c hm : strnatcmp(string1, string2): y l hm so snh 2 chui nhng theo quy lut t nhin , ngoi ra, n tng t strcmp() Tc l 1 < 2<12< 22 . Hm identical vi strnatcmp() m hok phn bit hoa-thng l : strnatcasecmp() V/ Chuyn i chui v mt s hm ct, ni : strtoupper(string): convert chui sang IN HOA strtolower(string): convert chui sang vit thng . ucfirst(string): Vit in hoa k t u tin ca chui ucwords(string): vit in ha mi k t u tin ca tng ch trong chui Lu : Cc hm trn tr v chui c chuyn i

Page 363 of 413

VD: PHP Code:


$string = ' This is some text ';//chui c ucfirst sn ri $string_lower = strtolower($string); // this is some text $string_upper = strtoupper($string); // THIS IS SOME TEXT $string_first = ucwords($string); // This Is Some Text

array explode('string delimiter', string ,limit): ct chui ra thnh mng. VD: PHP Code:
$string = ' This is string that will be exploded '; $array = explode(' ', $string); var_dump($array); /* Chng ta s c : array 0 => string '' (length=0) 1 => string 'This' (length=4) 2 => string 'is' (length=2) 3 => string 'string' (length=6) 4 => string 'that' (length=4) 5 => string 'will' (length=4) 6 => string 'be' (length=2) 7 => string 'exploded' (length=8) 8 => string '' (length=0) */

Lu : string delimiter hok th l rng ('') c implode(separator,array): ni chui t 1 mng v cc gi tr ni nhau bi separator VD: PHP Code:
$array = array('Hello', 'I', 'am', 'student'); $string = implode(' ',$array); var_dump($string); //Xut Hello I am student

Nu separator y rng th s rt kh nhn bi cc ch dnh lin nhau strtok(string, split): cng l 1 hm ct chui nhng khc vi explode, strtok ct tng khc mt . Tc l ch ct 1 ln mi khi gi. VD: PHP Code:
$string = ' This is some text that will be token '; $part =strtok($string, ' '); var_dump($part); //Xut This // ly tng ch : while($part != false){ echo "$part<br/>";

Page 364 of 413

$part = strtok(' ');//Ln gi th 2 hok cn phi nu string ra na }

STRING trong PHP [PART4]


VI/ Mt s hm tham kho khc : sha1(string), md5(string) : m ha chui theo thut ton tng ng nl2br(string): chuyn \n thnh <br/> . Browser hok hiu \n nhng hiu <br/> . VD: PHP Code:
$string = "This is first line \n This is second line <br/> "; //Nhy i v phi hiu \n i din cho ci g ch hok n gin l k t . echo $string; //Xut 1 dng duy nht echo nl2br($string); //Xut 2 dng v \n dc chuyn i

number_format(number, decimals, decimalpoint, separator): Vi : Decimals : s ch s thp phn mun xut ra Decimalpoint: string phn cch gia phn nguyn v phn thp phn Separator: string phn cch gia phn trm, phn nghn, phn triu,.. VD: PHP Code:
$number = 1000000; $number_formated = number_format($number, 3, ',','.'); var_dump($number_formated); // Xut 1.000.000,000

str_pad(string, length, pad_string, pad_type): Padtype: STR_PAD_RIGHT STR_PAD_LEFT STR_PAD_BOTH VD: $str = 'Hello WORLD'; $str_padded = str_pad($str, 20, '.'); var_Dump($str_padded); //Xut Hello WORLD......... Page 365 of 413

str_repeat(string, repeat): lp li string VD: PHP Code:


$string = 'Repeat '; var_dump(str_repeat($string, 5)); //Xut Repeat Repeat Repeat Repeat Repeat

str_rot13(string): y cc k t trong string 13 n v trong bng ch ci VD: PHP Code:


$string ='abc'; var_dump(str_rot13($string)); //Xut nop <<<Vit bng ch ci ra s thy n-a = 13

str_shuffle(string): random cc k t trong chui string VD: PHP Code:


$string = 'abc'; var_dump(str_shuffle($string)); //Xut bca hoc abc hoc acb sau mi ln refresh

str_word_count(string, return, char): lm vic vi s t trong 1 chui Cc gi tr c th ca return: 0: mc nh, tr v s t trong chui 1: tr v mng tun t vi cc gi tr l cc t trong chui 2: tr v mng m kha l v tr ca mi t trong chui, gi tr ca kha l t ti v tr Char: 1 s k t nh & $ ,.... Lu : Hm ny hok cho php cc k t nh ^ % # *... v nhng con s VD 1: PHP Code:
$string = "Word_1 word_2 & word_3 " ; var_dump(str_word_count($string, 0 )) ; // Tr v 3 var_dump(str_word_count($string, 1)); /* Tr v array 0 => string 'Word' (length=4) 1 => string 'word' (length=4) 2 => string 'word' (length=4) */ var_dump(str_word_count($string, 1,'_')); /* Tr v array 0 => string 'Word_' (length=5) 1 => string 'word_' (length=5) 2 => string 'word_' (length=5) */

strrev(string): o chui VD: PHP Code:


$string = ' ABC'; var_dump(strrev($string)); //Xut BCA

Page 366 of 413

substr_count(string, substring, start, length): m 1 chui con no xut hin trong chui gc bao nhiu ln Start: v tr xut pht tm kim Length: tm kim t v tr xut pht , tm trong 1 di n v VD: PHP Code:
$string = ' Hello WORLD, you are my world . '; var_dump(substr_count($string, 'world')); //Xut 1 v hm ny phn bit hoa- thng $string1 = ' Hello world, you are my world. '; var_dump(substr_count($string1,'world',10)); //Xut 1 v bt u tm t v tr ch l var_dump(substr_count($string1,'world',10,1)); //Xut 0 v bt u tm t v tr ch l v tm n ht ch d v di ch c 1

Wordwrap(string, width, break, cut): hm gii hn s k t trn 1 dng . Tr v string b break nu thnh cng hoc false nu tht bi Break: ch ra k t dng break. Mc nh l \n <<Ch view source mi thy xung dng Cut: ch nh ct ch ra nu d (set TRUE) mc nh l FALSE . VD: PHP Code:
$string = ' This is some text. Its long text . '; echo wordwrap($string,5); //Xut bnh thng nhng khi click phi view source s thy mi dng ch c 5 k t echo '<br/>'; echo wordwrap($string,5,'<br/>'); //Xut mi dng 5 k t . V browser hiu <br/> . Khi thay s 5 bng 2 cng cho kq tng t v cut = FALSE echo '<br/>'; echo wordwrap($string, 2, '<br/>',TRUE); //Xut mi dng 2 k t, ch b ct ra .

Mng trong PHP [Part1]


I/ Mng l g ?
Trong PHP, bin l ni lu tr d liu . Nhng 1 bin ch c th lu tr 1 dng d liu v lu tr ring l . V d: PHP Code:
$a =3; $a =5; $a =10;

Page 367 of 413

on code trn th bin $a cui cng s c gi tr l 10 . Vy chng ta cn 1 phng thc lu tr khc thun tin hn, d qun l hn . V mng ra i p ng iu Hnh dung mng l 1 ci t, trong ci t c nhiu ngn ko, mi ngn ko c nh du bi 1 con s hoc 1 dng ch . Vy ly mn trong 1 ci ngn ko , th tt nhin chng ta cn 1 con s ng vi ci ngn ko y .

II/Khi to mng
khi to mng chng ta dng t kha array Trong PHP c 3 cch khi to mng nh sau : 1/ Khi to 1 mng rng, sau mi set gi tr 2/ Khi to 1 mng vi 1 s gi tr ban u, sau thm gi tr mi vo 3/ Khi to mng v set full gi tr cho mng .

III/Phn loi mng


Mng c chia thnh 3 loi chnh :

Mng tun t Mng khng tun t Mng a chiu

1/ Mng tun t Mng tun t l mng m cc kha ca n c nh theo s . V tr u tin ca mng lun l 0 V d : $array_name = array('a', 'b', 'c', 'd'); trn, ly gi tr 'a' , ta dng c php : $array_name[0]; Tng t, ly gi tr 'b', 'c', 'd' : $array_name[1], $array_name[2], $array_name[3] a/ Khi to mng tun t: i/ To mng rng ri thm gi tr $array = array(); $array[] = a; $array[] = b ; ii/ To mng sau thm gi tr mi vo $array = array(a); $array[] = array(b); iii/ To mng full gi tr $array = array(a,b); Lu : Nu mun khi u mng hok phi l 0 m l 1 chng ta lm nh sau : $array = array('1'=>'a', 'b', 'c' );

Page 368 of 413

b/ Duyt mng tun t Chng ta s dng 1 s hm sau duyt mng tun t : foreach(), for() FOR: Gi s chng ta bit mng $array_name c $count phn t for($i = 0; $i <$count ; $i++){ //vit code thao tc vi phn t mng y } Gii thch: Hm for dng duyt tng phn t ca mng, dng cch ny chng ta phi bit mng ny c bao nhiu phn t . For s c nhim v lp qua tng phn t mt, bt u t v tr s 0 cho n $count - 1. V d : PHP Code:
for($i = 0; $i < $count; $i++){ echo "Gi tr ca phn t $i l : br/>"; } // Code xut tng gi tr ca mng $array_name[$i] <

FOREACH foreach($array_name as $value){ // Vit code thao tc vi phn t mng y } Gii thch : Hm foreach cng duyt tng phn t ca mng, vi mi phn t n i qua, n s gn gi tr ca phn t cho bin $value . V d : PHP Code:
$i = 0; foreach($array_name as $value){ $i++; //Tng ln 1 mi khi foreach duyt qua 1 phn t echo "Gi tr ca phn t $i l : } // Code xut tng gi tr ca mng $value <br/>";

2/ Mng khng tun t Mng khng tun t l mng m cc kha ca n c nh theo ch . Hnh dung 1 ngn t, m cc ngn ko ca n khng phi l con s na m l nhng t ng c ngha . V d : ngn ko tn 'Giy' cha giy , ngn ko tn 'qun o' cha qun o. => R rng truy cp nhng vt bn trong cc ngn ko ny s d hn cc ngn ko nh s th t ! a/ Khi to mng khng tun t :

$array_ktt = array('a' => 'a_123','b'=>'b_123');

b/ Duyt mng khng tun t : Chng ta dng cc hm nh : list(), each(), while(), foreach() duyt mng khng tun t FOREACH(): Page 369 of 413

PHP Code:
foreach($array_ktt as $value){ echo " $value | "; } //Code trn dng thao tc ch vi cc GI TR ca mng khng tun t foreach($array_ktt as $key=>$value){ echo " $key => $value | "; } //Code trn dng thao tc vi c GI TR v KHA ca mng khng tun t

WHILE : while(list($key,$value) as each($array_ktt)){ //Code y } Code trn c ngha: vi mi gi tr m while duyt qua, kha v gi tr ca $array_ktt ln lt c gn vo $key v $value . while($element as each($array_ktt)){ //Code y } Code trn c ngha: vi mi gi tr m while duyt qua, phn t ca $array_ktt ln lt c gn $element . $element y ng vai tr nh l 1 ci mng khng tun t lu $key v $value ca mi $array_ktt m while duyt qua . V d : PHP Code:
while($element as each($array_ktt)){ echo $element['key']; echo ' - '; echo $element['value']; echo '<br/>'; } //Code trn c ngha: vi mi gi tr m while duyt qua, phn t ca $ array_ktt ln lt c gn $element . $element y ng vai tr nh l 1 ci mng khng tun t lu kha v gi tr ca mi $array_ktt m while duyt qua .

3/ Mng a chiu Hnh dung 1 ci t to c cc ngn ko, trong 1 s ngn ko li chia thnh 2-3 ci ngn ko nh khc . Hay cng c th ni l : trong ngn ko c 1 chic t nh khc V d: $multi_array_tt = array('a', 'b', array('c','d'),'e'); $multi_array_ktt = array('a'=>'a_123', 'b'=>'b_123', 'small_array'=>array('c'=>'c_123','d'=>'d_123'),'e '=>'e_123'); Vy truy cp vo ngn ko ci t nh y, ta phi: Truy cp vo ngn ko ca t ln cha t nh, sau truy cp vo ngn ko ca t nh . echo " $multi_array_tt[2][0] "; //Xut ra 'c' // Truy cp vo mng l phn t th 3 ca mng $multi_array_tt, sau ly phn t th 1 ca mng y ra .

Page 370 of 413

echo " $multi_array_ktt['small_array']['c'] "; //Xut ra 'c_123' // Truy cp vo mng l phn t c kha 'small_array' ca mng $multi_array_ktt, sau ly phn t c kha 'c' ca mng y ra . Duyt mng a chiu: (ch dng cho mng tun t) PHP Code:
$multi_array_test= 'c1'), array('a2', 'b2' , 'c2') ); // Bn hnh dung mng $multi_array_test nh trn l 1 table c 3 ct v 3 dng for($row = 0; $row <3; $row++){ for($column =0; $column < 3; $column++){ echo '|'.$multi_array_test[$row][$column]; } echo '<br/>'; } array( array('a', 'b', 'c'), array('a1','b1',

IV/ Con tr mng :


Mng c thao tc da trn v tr con tr ca mng, khi mng va c to ra, con tr nm v tr u tin . Khi thm gi tr mi vo mng th con tr vn hok di chuyn . di chuyn hay thao tc con tr chng ta dng 1 s hm nh prev(), next(), end(), reset(), each(), current() . Chng ta s tm hiu thm phn II .

Mng trong PHP [Part2]


IV/ Mt s hm cn nh trong mng: $array1 = array('b','a','c'); $array2 = array('1','3','6'); $array3 = array('b'=>'d_123', 'a'=>'f_123' , 'c'=>'e_123'); Cc hm thng dng nht : sort($name_of_array, SORT_...): sp xp li cc phn t trong mng ( theo bng ch ci hoc theo s ). Lut : 1<11<12<2<21. Cc gi tr c th ca tham bin th 2: SORT_REGULAR SORT_STRING SORT_NUMERIC VD: sort($array1) =>$array1 by gi l array('a','b','c')

Page 371 of 413

Lu : hm ny sp xp theo th t A<Z<a<z . Sort theo quy lut t nhin : tc l 1<2<3<20.... natsort($array) : phn bit ch hoa v ch thng natcasesort($array) : hok phn bit ch hoa v ch thng VD: PHP Code:
$array = array('a1','a2','a11','a22', 'A24'); sort($array); var_dump($array); natsort($array); var_dump($array); natcasesort($array); var_dump($array); /* Nhn c kt qu sau : array 0 => string 'A24' (length=3) 1 => string 'a1' (length=2) 2 => string 'a11' (length=3) 3 => string 'a2' (length=2) 4 => string 'a22' (length=3) array 0 => string 'A24' (length=3) 1 => string 'a1' (length=2) 3 => string 'a2' (length=2) 2 => string 'a11' (length=3) 4 => string 'a22' (length=3) array 1 => string 'a1' (length=2) 3 => string 'a2' (length=2) 2 => string 'a11' (length=3) 4 => string 'a22' (length=3) 0 => string 'A24' (length=3) /*

ksort($array): sp xp theo kha ca cc phn t trong mng tng dn VD: ksort($array3) =>$array3 by gi l array('a'=>'f_123', 'b'=>'d_123', 'c'=>'e_123') Asort($array): sp xp theo gi tr ca cc phn t trong mng tang dn VD: asort($array3) =>$array3 by gi l array(b=>d_123, a=>f_123, c=>e_123) i lp vi ksort($array) l krsort() : sp xp theo kha vi cc phn t trong mng gim dn asort($array) l arsort() : sp xp theo gi tr vi cc phn t trong mng gim dn shuffle($array): thay i v tr cc phn t mng 1 cch random VD: shuffle($array1) => $array1 by gi c th l array(a, b, c) hay array(c, b, a ) , v.v Array_reverse($array1) : tr v mng o ngc VD: $array1_reverse = array_reserver($array1)

Page 372 of 413

=>$array1_reverse gi l array(c,a,b) Nh ni phn 1 , nhiu khi chng ta phi thay i v tr con tr mng thao tc theo mun . lm iu ta dng cc hm : Prev() : li con tr 1 phn t next(): tin con tr 1 phn t, reset(): reset con tr v v tr 0 end(): a con tr n v tr cui Lu : Cc hm trn u tr v gi tr ca ni m con tr ang ng current() : xut gi tr ca v tr hin ti ca con tr each() : tr v key v gi tr ca v tr con tr ang ng, sau tin con tr ln 1 phn t . Hm m phn t mng : Count($array) Array_count_values($array): Hm ny m s ln xut hin ca 1 gi tr trong mng . Tr v kiu d liu mng Vd : PHP Code:
<?php $array = array('a','b','c','d','a','c'); echo current($array); // Xut 'a' do khi mi to, con tr nm v tr u echo next($array); // Xut 'b' echo '<br/>'; $value = end($array); //Chuyn con tr v cui( trc 'c') while($value){ echo " $value "; $value = prev ($array); //Sau mi ln lp, li con tr 1 phn t } echo '<br/>'; echo reset($array); //a con tr v v tr u $each = each($array); //Ly gi tr v kha ca v tr u, tr v kiu d liu mng var_dump($each); var_dump(array_count_values($array));// Tr v kiu d liu mng . ?>

V di y l 2 hm kh quan trong trong thao tc mng Explode (string delimiter, 'string input', limit) : Ct chui da vo k t ch nh trc, limit gii hn s phn t ca mng tr v Extract($array, extract_type, prefix) : To bin vi tn l kha ca mng v bin c gi tr l gi tr ca kha . Prefix co th dch l tin t C 7 loi extract :

EXTR_OVERWRITE: mc nh . Nu kha ca mng trng vi tn bin trong script th ghi

Page 373 of 413

EXTR_SKIP : Nu kha ca mng trng vi tn bin trong script th b qua kha . EXTR_PREFIX_SAME : nu kha ca mng trng vi 1 kha khc th thm tin t vo kha . Vi loi ny phi ch ra prefix tham s th 3 EXTR_PREFIX_ALL: Thm tin t vo mi kha. Vi loi ny phi ch ra prefix tham s th 3 EXTR_PREFIX_IF_EXISTS: Nu kha ca mng trng vi tn bin ca script th thm tin t vo kha . Vi loi ny phi ch ra prefix tham s th 3 EXTR_PREFIX_INVALID: Nu kha ca mng vi phm qui tc t bin th thm tin t vo kha . Vi loi ny phi ch ra prefix tham s th 3 EXTR_REFS: bin c to ra s tham chiu n kha ca mng , mi thay i trn bin s nh hng n gi tr m kha i din trong mng

V d : PHP Code:
$array = array('a'=>'a_123','a'=>'b_123','c'=>'c_123' , '1'=> 'INVALID'); $array_1= array('a'=>'a_123', 'd'=>'d_123', 'e'=>'e_123'); $a = 4; (1)extract($array,EXTR_PREFIX_SAME,'abc'); //To bin $a = 'a_123' v $abc_a = 'b_123' var_dump($a); var_dump($abc_a); (2)extract($array,EXTR_PREFIX_ALL,'abc'); //To bin $abc_a = 'b_123' ( b ghi )v $abc_c = 'c_123' var_dump($abc_a); var_dump($abc_c); (3)extract($array_1,EXTR_PREFIX_IF_EXISTS,'ade'); //To bin $ade_a = 'a_123' v $d = 'd_123' v $e= 'e_123' var_dump($ade_a); var_dump($d); var_dump($e); (4)extract($array,EXTR_PREFIX_INVALID,'abc'); //To bin $abc_12 = 'INVALID' v $a= 'b_123' ( b ghi ) , $c = ' c_123' var_dump($a); var_dump($abc_12); var_dump($c); (5) extract($array,EXTR_REFS); //To bin $a = 'b_123' v $c = 'c_123' var_dump($c) ; //Xut c_123 $c =5; var_dump($array['c']) // Xut ra 5 => Thay i gi tr trong mng

Page 374 of 413

Khi th code th lm 1 trong 5 code trn thi nh !

Cho 1 mng : $array_test_tt = array('a', 'b', 'c'); $array_test_ktt = array('a'=>'a_123', 'b'=>'b_123', 'c'=>'c_123'); bool array_key_exists('key_to_search',$name_of_array); : tm 1 kha c torng mng hay khng //Bool l kiu data tr v true hay false VD: array_key_exists('0',$array_test_tt); Tr v TRUE array_key_exists('a',$array_test_ktt); Tr v TRUE array_key_exists('d',$array_test_ktt); Tr v FALSE tm 1 gi tr trong mng : Bool in_array($array, value). VD : in_array($array_test_tt,'d') //tr v FALSE in_array($array_test_tt,'a') // Tr v TRUE mixed array_search('value_to_search',$name_of_array); // Mixed l hok phi l 1 kiu d liu, mnh l n c th tr v string khi l mng hok tun t v tr v s khi l mng tun t VD: array_search('a', $array_test_tt); //Tr v 0 array_search('a_123', $array_test_ktt); Tr v 'a' string array_pop($name_of_array); // Hm ny ly d liu cui cng ra khi mng VD: array_pop($array_test_tt); //Tr v 'c' v mng $array_test_tt ch cn li 'a' v 'b' array_pop($array_test_ktt); //Tr v 'c_123' v mng $array_test_ktt ch cn li 'a123' v 'b123'

Cc hm di y ch nn dng cho mng tun t int array_push($name_of_array,'value_to_push'); // Hm ny thm 1 phn t vo cui mng v tr v tng s phn t ca mng sau khi thm VD: array_push($array_test_tt, 'd'); // Tr v s 4 v mng $array_test_tt lc ny c thm phn t th 3 l 'd' string array_shift($name_of_array) // Hm ny ly 1 phn t U mng ra khi mng VD: array_shift($array_test_tt); //Tr v ch 'a' . V kha ca mng ln lt l 0 ng vi 'b' , 1 ng vi 'c' int array_unshift($name_of_array,'value_to_unshift')

Page 375 of 413

// Hm ny thm 1 phn t vo U mng v tr v tng phn t trong mng VD: array_unshift($array_test_tt,'d'); //Tr v s 4 . V kha ca mng ln lt l 0 ng vi 'd' , 1 ng vi 'a', 2 ng vi 'b', v 3 ng vi 'c' int array_rand($name_of_array) // Hm ny random tr v 1 kha trong mng . VD: array_rand($array_test_tt) // C th tr v 0 hay 1 hay 2

Hng dn code trang news c bn


Lc trc, khi mnh t hc PHP, cha ng k Vit chuyn, c sch, ln mng xem tutorial, dnh tg hu nh c ngy cho PHP nhng nhng kin thc mnh c c u ri rc . Nh mng, string, file, kt ni database , v.v . Vy xy dng 1 trang web n gin th lm th no ? Cn nhng kin thc g ? Database phi ra lm sao ? Quy trnh nh th no ? V mnh khng hnh dung c g c, hok tr li c g c ln mng download project v th nh sm nh bn tai, cc d n vit bng AJAX v JQUERY, CSS v.v khin bn thn nhng ng mi hc rt d b hoang mang, v mt t tin . Thc ra mnh ch mun lm 1 trang web n gin , dng PHP v MySQL thm t CSS hiu c mnh hc c g v mun p dng kin thc hc c vo bi tp c th . Bi vy, lc coi project ca cc bn khc nhiu lc mnh mun b PHP lun, cho n khi mnh bit c trung tm Vit Chuyn , v by gi th rt an tm vi s dn dt ca thy Huy th sc tru ca chng ta b ra mi xng ng @@ . Vy gip nhng bn t hc PHP, c l cng ang search google tm cch thc lm 1 trang news n gin nh mnh tng lm , mnh vit bi hng dn s b ny .

Code trang tin tc c bn


Page 376 of 413

A.1 s tnh nng c bn ca trang news : Trang admin : ng nhp, ng xut, cho php thm category, xa category, thm tin tc, xa tin tc , list categories v list tin tc , thm ngi dng, xa ngi dng, list ngi dng . Bn cnh cho php sa category, sa news post , sa level ca ngi dng . Vy folder admin c cc file: Index.php <<< layout trang admin Login.php Logout.php add_cate.php, add_news.php add_user.php list_cate.php list_news.php list_users.php edit_cate.php edit_news.php edit_user.php delete_cate.php delete_news.php delete_user.php Trang layout : index.php ngoi ngang cp vi folder admin (khc vi index.php trang admin) d liu t database ra browser . Trang ny ty mi ngi .....v l cng on n gin trong ng dng . B. Hng dn: Kin thc cn bit khi vit ng dng ny Form HTML, PHP c bn( mng, string, bin, mysql, thao tc vi mysql bng PHP), PHP SESSION, PHP UPLOAD , SQL c bn: select, delete, insert, update . Hiu cch ly d liu qua GET v POST . Bit cch to layout ca 1 trang web n gin bng require_once header, footer, body ,V nu c thm 1 t CSS, hiu code phn trang th tt Database thit k nh th no ? V l ng dng n gin nn database cng n gin : Database news , c cc table l : User(user_id, user_name, user_password,user_level) News(news_id, news_category, news_,title,news_author, news_info, news_full, news_check, news_image, news_uid, news_cid) Categories(category_id, category_name) trn gi l 1 schema ca database, n tm tt cc table v cc ct c trong database, v mnh vit ch l kha chnh, gch di l kha ngoi .

Page 377 of 413

Ti sao trn co news_author, news_category m cn cn news_id, news_cid ? V news_author v news_category l nhng field c th thay i c, nh hnay bn vit tin vi k danh l 'ABC' ngy mai bn ly k danh khc l 'BCD' vy thng k s tin bn vit lm bng cch no ? news_id gip chng ta gii quyt diu v d bn ly k danh no th news_id ch c 1 m thi . Tng t vi news_cid Gii thch: user c nhiu loi, chng ta phi c trng user_level xc nh xem l admin, hay l user bnh thng ? Nu ch c 2 level th set level admin l 2, user bt l 1 . V ch c level bng 2 th mi cho truy cp vo vng admin . Ct news_check trong table news l check xem news c hp l khng, u phi tin no cng c post ln ? Ct news_image thng l optional ty theo mun ngi dng c mun dng nh i din hay khng Quy trnh : Nu l user bnh thng th ch c xem trang ch, nu l admin th cho php vo trang giao din admin, ti y c 1 menu ti cc trang add, list, v.v . Ti cc trang list, cho php admin sa, xa . Nu khng phi admin m ng nhp th v li trang ng nhp . Mt s iu cn lu khi vit code : Index.php: Trang admin ny ch cn show ra cc ng link ti ch xa, sa, v.v . Hok cn cu k v ch c admin mi thy c, trang layout cho user xem th mi cn CSS phc tp cho p . Ty bn layout trang index.php ny, c th l 1 table chng hn . Cc trang x l form ( add_ ) :

Nh l kim tra ngi dng c nhp y thng tin hay khng . Lu l trong PHP chng ta phi to bin trc khi dng . V d, ch khi tn ti bin $user v $pass th mi tin hnh kim tra trong database v nu c th cho ng nhp.

Tc l code: PHP Code:


if($_POST['user'] !=NULL){ $user = $_POST['user']; } else echo 'Ban chua nhap ten '; if($_POST['pasword'] !=NULL){ $pass = $_POST['password']; } else echo 'Ban chua nhap password '; if($user && $pass ) { }

Nhng nu ngi dng b trng 1 trong 2 field trn ri bm submit th $_POST[user] v $_POST[pass] l NULL v chng ta khng tin hnh gn bin $user v $pass <<<

Page 378 of 413

tc l 2 bin ny cha tn ti . V th dng if() ngay sau s b li . V th chng ta cn phi set gi tr NULL ban u cho 2 bin : PHP Code:
$user=$pass=''; if($_POST['user'] !=NULL){ $user = $_POST['user']; } else echo 'Ban chua nhap ten '; if($_POST['pasword'] !=NULL){ $pass = $_POST['password']; } else echo 'Ban chua nhap password '; if($user && $pass ) { }

Cc bn nn vit form v cch x l form trn cng 1 trang. V d form add_cate ti add_cate.php s c action cng l add_cate.php . phn trn ca form bn kim tra xem ngi dng nhn submit np thng tin cha, hay ch l ang cn in vo form ?

Ta dng code : PHP Code:


if(isset($_POST['ok'])){ // ok l tn trng submit <input type = submit value = login name = ok /> //X l form y }

Ti trang login: nu ngi dng login c v chng ta xc nhn c l admin, th cp session cho admin

C th l : PHP Code:
$_SESSION['username'] = $username ( bin $username ny ly t form ) $_SESSION['level'] = $level $_SESSION['u_id'] = $user_id //C 2 $level v $user_id chng ta phi ly t database v . //S d to 3 ci $_SESSION nh th v sau ny trong script khc chng ta cn bit l ai ang truy cp, u_id l g ?

Ti tt c cc file trong trang admin tr login , bn phi kim tra xem ngi dng c phi l admin khng ? Nu phi th cho truy cp, khng phi th v trang login.php . Vy chng ta c 1 code dng rt nhiu trong phn admin l:

PHP Code:
if($_SESSION['level'] != '2'){ header('localtion: login.php');

Page 379 of 413

exit(); }

1 code khc cng dng kh nhiu l : connect database PHP Code:


$conn = mysql_connect('localhost', 'root',''); mysql_select_db('news',$conn);

Vy 2 code trn em b vo 2 file, b 2 file vo folder includes ri sau ny dng require_once() dng li .

1 s lu vi cc file edit:

d liu c sn t database ra form ri cho php ngi dng sa i . V d : tn news lc post ln l NEWS. Th khi nhn vo edit phi xut ra ch NEWS news_title ch hok c b trng . Vi file edit v add , chng ta c th dng b son tho ngi dng c th son tho tin tc nh trong word . Chng ta download file ckeditor.rar bn di, gii nn ra ri b th mc ckeditor vo ngang cp vi cc file edit_ , add_ . Sau , chng ta include ckeditor vo bng cch : PHP Code:
<script type="text/javascript" src="ckeditor/ckeditor.js"></script> //t trn <form > nh

Nu mun phn no c b son tho th chn vo sau phn PHP Code:


<script type="text/javascript"> CKEDITOR.replace( 'name_of_field' ); </script>

VD: .... PHP Code:


<tr> <td>Full</td> <td><textarea name='txtfull' cols='40' rows='15'><?php echo $da ta2['news_full'];?></textarea></td> </tr> <script type="text/javascript"> CKEDITOR.replace( txtfull ); </script>

....
=> Full s c b son tho cho ngi dng DOWNLOAD CKEDITOR: http://www.mediafire.com/?ah85w2j03ddjdm6

Page 380 of 413

HNG DN CODE TRANG BN SCH


Tip theo mnh xin hng dn cc bn hnh dung cch code 1 trang bn sch . A. M t ng dng bn sch Nu l khch ( hok ng nhp ) th s c : Chn chuyn mc sch, khi click vo chuyn mc th lit k cc sch c trong chuyn mc . Khi click vo sch no th lit k thng tin ca sch gm tc gi , ISBN, ngy xut bn, gi tin , v.v . Ti y cho php ngi dng thm sch vo gi hng . Sau khi thm vo gi hng c th to nhiu option cho ngi dng la chn , hoc l thanh ton -> cho ngi dng nhp thng tin ship sch , hoc l tip tc mua sch . Bc thanh ton c 2 giai on : 1/ Nhp thng tin khch hng, a ch thanh ton, a ch ship sch, v.v . ng dng nh, chng ta a ch khch hng l ni ship sch lun cho tin 2/ Chn phng thc thanh ton, in m th ( v nh th CREDIT CARD, VISA CARD, v.v..) Vy, nu ngi dng click thanh ton, v sau hok thanh ton tip bc 2 m chn tip tc mua sch -> thm vo gi hng-> thanh ton <<<< Khng yu cu ngi dng nhp thng tin giai on 1 na Ti trang hin th gi hng : cho php ngi dng thay i s lng sch, v click nt Save cp nht, nu ngi dng nhp 0 th sch s c b . 1 s lu : Khi ngi dng ang xem list sch trong chuyn mc A th nn c ng link dn khch qua trang list chuyn mc ng dng xem list sch ca chuyn mc khc . Ti trang xut thng tin sch c th, th nn c 1 ng link dn khch qua trang list sch ca chuyn mc cha sch hin ti . Gi : Ti 2 trang trn u c 1 nt : Continue Shopping nhng chc nng khc nhau . Nu ng nhp di quyn user : ch khc khch ch bc thanh ton hok c giai on 1 . // C th b hn user, ch admin v khch thoi cng c Nu ng nhp di quyn admin :

Page 381 of 413

Dn admin ti trang menu list 1 s quyn ca admin l : n trang chnh mua bn sch( << mc ch sa v xa sch hay chuyn mc c sn ) Thm chuyn mc Thm sch List cc users v level Ti mi trang phi cho php admin log out Ti cc trang list chuyn mc hay sch cho php admin sa, xa, thm, v.v B. HNG DN Kin thc cn bit : lm c ng dng ny mnh ngh cc bn cn chun b :

PHP c bn, hiu r mng, hiu r GET POST trong form HTML PHP SESSION Database MySQL select, delete, insert, update, v.v c bn SQL c bn Bit cch layout ghp header, footer, body

Quy trnh : Chng ta cn cc file sau : (0) login.php : ng nhp (1)Index.php : list cc chuyn mc (2)List_books.php : list cc sch trong chuyn mc (3)Book_info.php : xut thng tin sch (4) Show_cart.php: hin th gi hng (5) check_out.php : hin th form ngi dng nhp thng tin . (6) purchase.php : x l d liu nhn t ngi dng ( t giai on 1) (7) process.php: x l d liu nhn t ngi dng ( t giai on 2 ) (8) logout.php : ng xut Folder admin : Ad(0) admin.php : list cc quyn ca admin Ad(1) delete_cate.php : xa chuyn mc Ad(2) delete_book.php: xa sch Ad(3) edit_cate.php : sa chuyn mc Ad(4) edit_book.php: sa sch Ad(5) insert_cate.php: thm chuyn mc Ad(6) insert_book.php : thm sch Ad(7) list_users.php : list cc user v level Ad(8) edit_user.php : chnh sa Ad(9) delete_user.php : xa user

Page 382 of 413

Nu l khch (hok log in m vo thng (1) ) : (1) ->(2) -> (3) Nu ti bc (3) , khch ng , thm vo gi : (3) -> (4) Nu ti bc (3), khch hok mun mua, click continue : (3) ->(2) Nu l user : dn user i nh khch nhng b thanh ton giai on 1 . Nu l admin : ( log in (0)) (0) -> Ad(0) [ Ad(5), Ad(6), (1) , Ad(7) ] . [ ] <<< ngha l Ad(0) c th dn ti cc trang trong . Lu : Nu admin chn (1) th i y nh khch, nhng ti mi trang phi c ng dn logout hay sa, xa chuyn mc /sch . Cc trng hp khc c l cc bn cng c th hiu cch dn admin i nh th no !! Mt s iu lu khi dn ng cho admin:

Ti cc trang lien quan n admin, lun c s kim tra xem ngi ang truy cp c phi admin hay khng v lun c link dn admin v li Ad(0) Ti cc trang list lun c link dn admin i sa/ xa VD: Admin ang coi sch A, th c link i sa/xa sch A.

Database thit k nh th no ? To DATABASE books vi cc table sau: USER(user_id, username, password, level ) BOOKS(isbn, author, title, cate_id, price, description ) CAGORIES ( cate_id, cate_name) CUSTOMERS( cus_id, cus_name, cus_address, cus_city, cus_state, cus_zip, cus_country) ORDERS( order_id, cus_id, amount , date , confirm ) ORDER_ITEMS (order_id, order_items, item_price, quantity) Gii thch :

order_id ORDER_ITEMS khng phi l kha chnh v gi s nh bn mua 5 cun sch ging nhau, tin ti thanh ton giai on 1, th hok l mi dng trong database s lu 1 cun sch ? ( 1,2,3,4,5) Thay vo , order_id y s l 1 s (1) , quantity l 5 . Hoc nu bn mua 3 cun A 2 cun B , th order_id s l (X y l id , 1 con s) : X, Sch A, 1$, 3 X, Sch B, 2$, 2 Vy s d lm vic hn vi bng ORDERS v lc ny ch cn 1 dng lu id X Level c th c 2 cp . 1 l user , 2 l admin .

Page 383 of 413

Mt s iu quan trong : 1/ Code kim tra c phi l admin hay khng v code kt ni database c s dng rt nhiu nn vo 2 file b vo th mc includes sau ny dng require_once() xi li . 2/ Nu l user => n cc tnh nng nh xa, sa ,v.v . V th trong mi script (1)->(3) chng ta phi kim tra, nu l admin th hin, hok l admin th n . 3/ Nu l admin th ng cho admin mua hng ^^ . 4/ Khi xc nhn 1 ng l user ( c th l admin ), cp cho ng 1 phin lm vic gm username, level v u_id . 1 s gi : Hin th gi hng : gi s ng mua add sch A vo gi, kim tra xem c tn ti sch A trong gi hok, nu c th tng ln 1 , nu hok th thm sch A vo . Code : PHP Code:
if(!isset($_SESSION['cart']){ $_SESSION['cart'] = array(); // Nu ngi dng cha mua hng, to 1 session l 1 mng // Mng ny ch cha (isbn) => (quantity) } if(isset($_SESSION['cart'][$isbn])){ $_SESSION['cart'][$isbn] ++; // Nu tn ti sch A, th tang ln 1 } else $_SESSION['cart'][$isbn] = 1; //Ngc li thm vo sch A } // Code hin th gi hng y

1 loi script c th dng chung cho c edit va add: V d : Mnh mun edit user hay add user : Edit_&_add.php PHP Code:
<?php function edit_&_add($user='') { $edit = is_array($user); //Khi sa th chng ta cn truyn 1 mng nhn c t $result = mysql_f etch_assoc($query) //vo, v khi y mi c y thng tin xut ra form . //Nu $edit l true th form ny dng sa // Nu $edit l false th form ny dng add ?> <form action = <?php echo $edit ? 'edit_user.php' : 'add_user.p hp' ; ?> method = 'post' > <table>

Page 384 of 413

<tr><td>Username: </td> <td><input type= 'text' name = 'username' value= "<?php echo $e dit ? $user['username'] : '' ;?> " /></td> </tr> <tr> <td>Password: </td> <td><input type= 'password' name = 'password' /></td> </tr> </table> </form>

trn mnh hng dn s b quy trnh 1 trang bn sch n gin . Nu cc bn cm thy phc tp, th c th b 1 vi tnh nng m mnh nu trn, b 1 vi file, v.v . Quan trng l hiu c n run nh th no, cn code th mnh ngh hok kh lm u . Cc bn c gng lm nh ;) .

Hng dn chi tit code trang bn sch


I/ To database : Bn to database tn l books ( hoc tn bn mun) ri to cc table sau: create table customers ( customerid int unsigned not null auto_increment primary key, name char(60) not null, address char(80) not null, city char(30) not null, state char(20), zip char(10), country char(20) not null ); Gii thch v 1 s lu : Unsigned phi ng trc not null Unsigned : hok c m Not null : hok c b trng
Page 385 of 413

Char(x): kiu d liu text ti a x k t Auto_increment : t ng tng create table orders ( orderid int unsigned not null auto_increment primary key, customerid int unsigned not null, amount float(6,2), date date not null, confirm char(1) not null ); Gii thch : Int : d liu s Float(6,2) : phn nguyn ti a l 6 ch s, phn thp phn ti a 2 ch s Date: kiu d liu ngy thng create table books ( isbn char(13) not null primary key, author char(80), title char(255), cate_id int unsigned, price float(4,2) not null, description longtext ); Gii thch : Isbn l c trng ca 1 cun sch, n lun khc nhau nn ta hok cn ct book_id m ch nh lun isbn l primary key Longtext : kiu d liu text dung lng ln create table categories ( ca_tid int unsigned not null auto_increment primary key, cate_name char(60) not null ); create table order_items ( orderid int unsigned not null,
Page 386 of 413

isbn char(13) not null, item_price float(4,2) not null, quantity tinyint unsigned not null, primary key (orderid, isbn) ); create table user ( user_id int unsigned not null auto_increment primary key, username char(16) not null, password char(40) not null, level tinyint unsigned not null ); Gii thch: Tinyint : kiu d liu s dung lng nh LU : Cc bn bm Ctr+S save file php ting vit, ri hin ra ci bng, nhn No, ri chn save has utf-8 nh ;)
II/ Xy dng trang login u tin chng ta xy dng trang qun tr vi cc chc nng c c lit k bi post trc . To folder admin vi cc file : Admin.php Delete_book.php Delete_cate.php Delete_user.php Edit_book.php Edit_cate.php Edit_user.php Insert_book.php Insert_cate.php List_cates.php List_users.php To 1 trang login.php ngang cp vi folder admin . Trang ny dng ng nhp : PHP Code:
<?php session_start(); if(isset($_SESSION['cart']) && $_SESSION['total_prices'] header('location: show_cart.php'); } if(isset($_POST['ok'])){ $name = $pass = ''; !=0 ){

Page 387 of 413

if($_POST['txtname'] == NULL){ echo 'Bn cha nhp username<br/>' ; } else $name = $_POST['txtname']; if($_POST['txtpass'] == NULL){ echo 'Bn cha nhp password<br/>' ; } else $pass = $_POST['txtpass']; if($name && $pass ) { $conn = mysql_connect('localhost', 'root', ''); mysql_select_db('books'); $sql = "select * from user where username = '$name' and pas sword = '$pass' "; $result = mysql_query($sql); if(!$result){ echo ' C li , khng th query database c' ; } else{ $array = mysql_fetch_assoc($result); $rows = mysql_num_rows($result); if($rows == 0){ echo 'Bn nhp sai password hoc username'; } else{ session_start(); $_SESSION['user'] = $name; $_SESSION['user_id'] = $array['user_id']; $_SESSION['level'] = $array['level']; if($array['level'] ==2){ // Nu ngi ang truy cp l admin th chuyn sang trang admin.php header("Location: admin/admin.php"); exit(); } else{ //Ngc li chuyn sang trang index.php header('Location: index.php'); exit(); } } } } } ?> <form action = 'login.php' method = 'post' > <fieldset> <legend> Log-in Form </legend> <table> <tr> <td> Name : </td> <td> <input type = 'text' name = 'txtname' size = '25' /></td>

Page 388 of 413

</tr> <tr> <td> Password : </td> <td> <input type = 'password' name = 'txtpass' size = '25' /> </td> </tr> <tr> <td> </td> <td> <input type = 'submit' name = 'ok' value = 'Log in' /> </td> <!-t tn cho field submit d xc nhn xem ngi dng c nhn Submit cha --> </tr> </table> </fieldset> </form>

Gii thch : Chng ta quy nh : nu mun ang mua hng m ng nhp vo trang admin th hok cho, chuyn ngi dng v gi hng, nu mun ng nhp th set gi hng la 0 ht b sn phm ra khi gi hoc tin ti thanh ton ri mi cho ng nhp . y dng form v cch x l form trn cng 1 trang nn chng ta phi c cch xc nhn l nt Submit ca form c nhn cha ? Nu nhn ri th mnh x l form, cn nu khng th hin th form cho ngi dng nhp . gii quyt iu chng ta c : PHP Code:
if(isset($_POST['ok'])){ //X l form }

PHP 5, s dng bin, chng ta phi khai bo trc, gi s nh form khng c nhp g ht m nhn submit => $name = $pass = ''; //Set gi tr l NULL xc nh xem ngi dng c nhp vo cha, nu cha nhp th bo li : PHP Code:
if($_POST['txtname'] == NULL) { //Bo li }

Sau nu tn ti gi tr $name v $pass th tin hnh x l form . Chng ta c cc dng code kt ni database rt thng xuyn s dng sau : PHP Code:
$conn = mysql_connect('localhost', 'root', ''); mysql_select_db('books');

V th chng ta s to 1 file tn connect.php , ri copy on code trn vo file connect.php trong folder includes ngang cp vi folder admin ( nh bc bng <?php ?> ) sau ny tin dng li . Page 389 of 413

Bin $result l lu kt qu ca vic thc hin truy vn ti database, n s tr v TRUE nu thc hin c v FALSE nu xy ra li trong cu QUERY . iu ny cng khng cn thit lm ch l khi xy ra li th bn bit li ch no . C th b qua trn chng ta xem xt username v password ngi dng nhp vo c ng hay sai , nu ng th cp 1 phin lm vic cho ngi vi 3 bin $_SESSION sau ny tin dng li . II/ Xy dng trang qun tr a/ admin.php Vi trang admin.php , chng ta cn to 1 menu cho admin la chon : PHP Code:
<?php require_once('../includes/session.php'); // K hiu ../ c ngha l back li 1 cp, file ny ang folder admin , nhng file session.php li ngang cp vi folder admin ?> <link href = '../styles.css' rel = 'stylesheet' type = 'text/css' / > <table border = '1' cellspacing = '0'> <tr> <th class = 'green_th' colspan = '6' align = 'center' > Welcome <? php echo "<font color = 'red'> Admin </font>".$_SESSION['user'] ?> </th > </tr> <tr> <td class = 'green_td'><a href = '../index.php'> n trang ch </a> </td> <td class = 'green_td'><a href = 'insert_cate.php'> Thm chuyn mc </a> </td> <td class = 'green_td'><a href = 'insert_book.php'> Thm sch </a> </td> <td class = 'green_td'><a href = 'list_users.php'> Hin ti khon </a> </td> <td class = 'green_td'><a href = 'list_cates.php'> Hin cc chuyn mc </a> </td> <td class = 'green_td'><a href = '../logout.php'> Logout </a> </td> </tr> </table>

trn dng : M:
<link href = '../styles.css' rel = 'stylesheet' type = 'text/css' />

: s dng file CSS . Cc class = green_td ch l trang tr bng CSS, cc bn ng quan tm n ! Nh mnh ni, tt c cc file trong admin, cn phi kim tra xem c phi admin ang truy cp khng ? Nu khng th chuyn ngay v trang login.php. V dng rt nhiu nn chng ta cc dng code ny vo file session.php trong folder includes ngang cp vi folder admin: Page 390 of 413

PHP Code:
<?php session_start(); if($_SESSION['level'] != 2){ header('Location: ../login.php'); exit(); } ?>

Mc ch ca trang admin.php ny l to 1 menu cho admin la chn . Vi mi la chn ca admin, chuyn admin n trang tng ng . y c cc ng dn n : n trang ch, thm chuyn mc, thm sch, hin cc users, hin cc chuyn mc, v log-out .

II/Xy dng trang qun tr : b/ Thm chuyn mc : Tip theo, mnh s x l file thm chuyn mc : insert_cate.php PHP Code:
<?php require_once('../includes/session.php'); require_once('../includes/check_data.php'); if(isset($_POST['ok'])){ $cate_name = ''; if(!check_data($_POST)){ echo 'Bn cha in ht thng tin ca sch'; } else{ require_once('../includes/connect.php'); $cate_name = trim(addslashes($_POST['category']));

$sql = "insert into categories(cate_name) values('$cate_name')"; $result = mysql_query($sql); if($result){ header("location: list_cates.php"); exit(); } else echo ' Xy ra li , chuyn mc cha c thm vo ' ; } } ?> <form action ='insert_cate.php' <fieldset> method = 'post' >

Page 391 of 413

<legend> Thng tin chuyn mc : </legend> <table> <tr> <td>Tn chuyn mc: </td> <td><input type ='text' name = 'category' /> </td> </tr> <tr> <td align ='center' colspan = '2' ><input type = 'submit' name = 'ok' value = 'Thm' /></td> </table> </fieldset> </form>

Thay v c mi field trong form, chng ta check xem n c NULL hay khng , chng ta cn dng 1 hm x l chuyn v b n vo 1 file trong folder includes : check_data.php PHP Code:
<?php function check_data($vars){ foreach ($vars as $key => $value){ if($key != 'image'){ if ( !isset($key) || $value == '' ){ return false; } } } return true; } ?>

Hm ny s c truyn nh sau : check_data($_POST) Thc ra, POST l 1 mng, c cc kha l tn ca cc field v gi tr l thng tin ca field c input vo . V th chng ta dng foreach($vars as $key => $value ) x l theo tng field . Nu khng tn ti key hoc gi tr ca field l NULL th hm tr v false . trn, sch c th c hnh hay khng hnh, v th field image c th l NULL , vy chng ta ch kim tra cc field khc ca form : If(!$key != image ) y chng ta cn phi addslashes v trim gi tr ca cc field nh : cate_name . V v d nh khi nhp : Cate_name : Macs . << Vi gi tr c , cu truy vn s khng thc hin c v tr v false . V th chng ta phi thm \ vo trc trc khi
Page 392 of 413

chuyn vo database . Quan trng l, nu ngi dng nhp title : Macs : vy rt ph ti nguyn v s gy kh khan v sau , v th chng ta phi b cc khong trng 2 bn chng, tc l dng hm trim()..
c/ Thm sch : Tip theo, mnh s x l file thm sch : insert_book.php PHP Code:
<?php require_once('../includes/session.php'); require_once('../includes/check_data.php'); if(isset($_POST['ok'])){ $isbn = $author = $title = $price = $description = ''; if(!check_data($_POST)){ echo 'Bn cha in ht thng tin ca sch'; } else{ require_once('../includes/connect.php'); $isbn = trim($_POST['isbn']); $author = trim(addslashes($_POST['author'])); $cate_id = $_POST['cate_id']; $title = trim(addslashes($_POST['title'])); $price = $_POST['price']; $description =addslashes($_POST['description']); if($_FILES['image']['name']){ move_uploaded_file($_FILES['image']['tmp_name'],"images /".$_FILES['image']['name']); $image = addslashes($_FILES['image']['name']); $sql = "insert into books(isbn,author,title,cate_id,ima ge,price,description) values('$isbn','$author','$title', '$cate_id', '$image' ,'$price','$description')"; } else $sql = "insert into books(isbn,author,title,cate_id,pri ce,description) values('$isbn','$author','$title', '$cate_id','$price', '$description')"; $result = mysql_query($sql); if($result){ header("location: ../index.php?cate_id=$cate_id"); exit(); } else echo ' Xy ra li , sch cha c thm vo ' ;

Page 393 of 413

} } ?> <form action ='insert_book.php' method = 'post' enctype = 'mult ipart/form-data'> <fieldset> <legend> Thng tin sch : </legend> <table> <tr> <td>Chuyn mc: </td> <td> <select name = 'cate_id'> <?php require_once('../includes/connect.php'); $sql = 'select * from categories'; $result = mysql_query($sql); while($rows = mysql_fetch_assoc($result)) //Dng mysql_fetch_assoc s tit kim b nh hn mysql_fetch_array echo "<option value = '$rows[cate_id]'>$rows[cate_n ame] </option>"; //Ti sao hok phi l $result['cate_id'] m l $result[cate_id] <<< V c lng vo " " ca dng ECHO ?> </td> </tr> <tr> <td>ISBN: </td> <td><input type ='text' name = 'isbn' /> </td> </tr> <tr> <td>Tc gi: </td> <td><input type ='text' name = 'author' /> </td> </tr> <tr> <td>Ta sch: </td> <td><input type ='text' name = 'title' /> </td> </tr> <tr> <td>Hnh i din: </td> <td><input type = 'file' name = 'image' /> </td> </tr> <tr> <td>Gi sch: </td> <td><input type ='text' name = 'price' /> </td> </tr> <tr> <td>M t: </td> <td><textarea name = 'description' cols = '50' rows ='20'></tex tarea></td> </tr> </fieldset> <tr> <td colspan = '2' align = 'center'><input type = 'submit' name = 'ok' value = 'Send' /> </td>

Page 394 of 413

</tr> </form>

Gii thch vng lp while : PHP Code:


while($rows = mysql_fetch_assoc($result)) //Dng mysql_fetch_assoc s tit kim b nh hn mysql_fetch_array echo "<option value = '$rows[cate_id]'>$rows[cate_n ame] </option>";

y, $result l kt qu tr v ca cu truy vn, n s c kiu d liu l resource, d thao tc, chng ta chuyn n thnh 1 mng hok tun t vi cc kha l tn cc ct, gi tr l gi tr ca ct . V kt qu tr v c th l nhiu dng, nn chng ta cn vng lp while duyt tng dng : PHP Code:
while($rows = mysql_fetch_assoc($result))

Vi mi dng duyt qua, gn mng bt tun t ca dng cho bin $rows, ri chuyn con tr mng ln dng k tip phn thm sch ny, chng ta cho php ngi dng upload file, nn khi khai bo form phi c : M:
enctype = 'multipart/form-data

V thm nh i din cho sch l 1 field la chn, tc l ty ngi dng, nn ta phi chia thnh 2 trng hp, nu ngi dng upload nh, v khi ngi dng khng upload nh ! Vi mi trng hp ta gn cu truy vn vo bin $sql . Ring vi trng hp upload nh , chng ta cn chuyn file nh vo folder images ( trong folder admin) .

d/ Hin cc chuyn mc : Tip theo, mnh s x l file list chuyn mc : list_cates.php PHP Code:
<link href = '../styles.css' rel = 'stylesheet' type ='text/css' /> <script> function xacnhan(){ if(!window.confirm("Bn c thc s mun xa chuyn mc ny ?")) { return false; } } </script> <?php require_once('../includes/session.php'); require_once('../includes/connect.php'); ?> <table border ='1' cellspacing ='0'>

Page 395 of 413

<tr> <th class <th class <th class <th class </tr>

= = = =

'green_th'> S th t </th> 'green_th'>Tn chuyn mc </th> 'green_th'> S sch trong chuyn mc </td> 'green_th' colspan = '2'> Mt s quyn hn </th>

<?php $sql = 'select * from categories '; $result = mysql_query($sql); $stt =0; while($rows = mysql_fetch_assoc($result)){ $count_book_query = "select isbn from books where cate_ id =$rows[cate_id]"; $result_count = mysql_query($count_book_query); $count = mysql_num_rows($result_count); $stt++; echo " <tr> <td class = 'green_td' align = 'center'>$stt </td> <td class = 'green_td' align = 'center'>$rows[cate_ name]</td> <td class = 'green_td' align = 'center'>$count</td> <td class = 'green_td' align = 'center'><a href = \ "edit_cate.php?cate_id=$rows[cate_id]\"> Edit </a> </td> <td class = 'green_td' align = 'center'><a href = \ "delete_cate.php?cate_id=$rows[cate_id]\" onclick = 'return xacnhan();' > Delete </a></td> </tr>"; } ?> </table> <?php echo "<a href = '../logout.php'> Log out | </a>"; echo "<a href = 'admin.php'> V trang qun tr </a>"; ?>

Ti y chng ta to 1 table vi cc ct : s th t, tn chuyn mc, s sch trong chuyn mc, v 1 s quyn hn ca admin nh sa, xa hin ra list chuyn mc trong database, chng ta cn truy vn ri dng vng lp d liu ra bng lm c iu ny , chng ta cn dng vng lp while : PHP Code:
while($rows = mysql_fetch_assoc($result)){ $count_book_query = "select isbn from books where cate_ id =$rows[cate_id]"; $result_count = mysql_query($count_book_query); $count = mysql_num_rows($result_count); $stt++; echo " <tr> <td class = 'green_td' align = 'center'>$stt </td> <td class = 'green_td' align = 'center'>$rows[cate_ name]</td> <td class = 'green_td' align = 'center'>$count</td> <td class = 'green_td' align = 'center'><a href = \

Page 396 of 413

"edit_cate.php?cate_id=$rows[cate_id]\"> Edit </a> </td> <td class = 'green_td' align = 'center'><a href = \ "delete_cate.php?cate_id=$rows[cate_id]\" onclick = 'return xacnhan();' > Delete </a></td> </tr>"; }

Vi mi chuyn mc, chng ta thc hin 1 cu truy vn, ly d liu ca chuyn mc . Ngay sau dng mysql_fetch_assoc() chuyn ha d liu thnh mng khng tun t ri tin hnh ra . Vi mi chuyn mc cho php admin xa v sa, khi click vo th s chuyn qua trang delete_cate.php hoc delete_book.php v km theo id ca chuyn mc : PHP Code:
delete_cate.php?cate_id=$rows[cate_id] Edit_book.php?cate_id=$rows[cate_id]

Lu : chng ta phng trng hp admin l bm vo nt xa, v th cn on javascript hin ra 1 ci bng confirm : M:


<script> function xacnhan(){ if(!window.confirm("Bn c thc s mun xa chuyn mc ny ?")){ return false; } } </script>

S dng : M:
<td class = 'green_td' align = 'center'><a href = \"delete_cate.php?

cate_id=$rows[cate_id]\" onclick = 'return xacnhan();'> Delete </a></td> Gii thch : nu bn nhp No th hok co chn g xy ra, nu nhp Yes th chuyn n trang delete_cate.php?cate_id= thc hin vic xa chuyn mc e/ Xa chuyn mc Chng ta thc hin xa chuyn mc nh sau : delete_cate.php PHP Code:
<?php require_once('../includes/session.php'); require_once('../includes/connect.php'); $cate_id = $_GET['cate_id']; $sql = "delete from categories where cate_id ='$cate_id'"; $result = mysql_query($sql); if($result){ header('Location : list_cates.php'); exit(); } else echo ' Xy ra li, chuyn mc cha c xa '; ?>

Page 397 of 413

Nu xa c, chuyn admin sang trang lit k chuyn mc . Nu khng, bo li f/ Sa chuyn mc : V trang sa chuyn mc edit_cate.php nh sau: PHP Code:
<?php require_once('../includes/session.php'); require_once('../includes/connect.php'); require_once('../includes/check_data.php'); $cate_id = $_GET['cate_id']; $sql = " select * from categories where cate_id = '$cate_id' "; $result = mysql_query($sql); $row = mysql_fetch_assoc($result); if(isset($_POST['ok'])){ if(!check_data($_POST)){ echo ' Bn cha in thng tin '; } else{ $cate_name = $_POST['category'];

$sql = "update categories set cate_name = '$cate_name' where cate_id = '$cate_id' "; $result = mysql_query($sql); if($result){ header('Location: list_cates.php'); exit(); } else echo ' Xy ra li, cha th thay i thng tin chuy n mc'; } } ?> <form action ='edit_cate.php?cate_id=<?php echo $cate_id; ?>' m ethod = 'post' > <fieldset> <legend> Thng tin chuyn mc : </legend> <table> <tr> <td>Tn chuyn mc: </td> <td><input type ='text' name = 'category' value = " <?php echo "$row[cate_name]"; //Ch khng khong trng trong " " v lc database s lu lun ?> " /> </td> </tr> <tr> <td align ='center' colspan = '2' ><input type = 'submit' name

Page 398 of 413

= 'ok' value = 'Thm' /></td> </table> </fieldset> </form>

file ny, chng ta c cc cng vic sau : Hin th form cho admin sa v ti field cate_name ca form, phi d liu t database ra . ( Vd chuyn mc kinh t th ti field cate_name phi hin ch kinh t ) . lm iu ny chng ta dng thuc tnh value = ' content ' ca <input /> C th l: M:
<input type ='text' name = 'category' value = "<?php echo "$row[cate_name]"; ?> "

trn chng ta lu khng c khong trng hay enter trong ca value . V mi khong trng trong s c tnh l 1 k t . y l 1 li kh d mc !!!!

III/Layout: a/ Trang ch Tip theo, mnh s x l file layout sch : index.php . t file ny ngang cp vi folder admin PHP Code:
<link href = 'styles.css' rel = 'stylesheet' type = 'text/css' /> <?php require_once('header.php'); require_once('includes/connect.php'); echo '<h1><font color = "red"> Cc chuyn mc : </font></h1> '; $sql = 'select * from categories'; $result = mysql_query($sql); echo '<ul>'; while($rows = mysql_fetch_assoc($result)){ echo "<li><a href = \"list_books.php?cate_id=$rows[cate_id]\" > $rows[cate_name] </li>"; } echo '</ul>'; session_start(); if(!isset($_SESSION['level'] )) echo '<a href = "login.php"> ng nhp </a>'; else if($_SESSION['level'] == '2') { echo '<a href = "admin/admin.php"> n trang qun tr </a>'; echo '<a href = "logout.php"> Log Out</a>'; } //require_once('footer.php'); ?>

Page 399 of 413

Ti trang ny, chng ta s list cc chuyn mc theo dng unordered list(<ul> </ul>) c trong database, nhng khng phi sa, xa nh bn admin m l xem sch trong chuyn mc . lm c iu ny, chng ta ch cn thc hin 1 cu truy vn ly tt tn tt thng tin v chuyn mc ri chuyn ha n thnh mng . Sau xut ra bng dng while . Ti mi chuyn mc, t 1 link n file list_books.php?cate_id= <<<list_books.php c nhim v lit k sch trong chuyn mc vi cate_id tng ng . Ti y, nu ngi ang truy cp l admin th hin ch : V trang qun tr v log-out Nu khng phi th hin ch : ng nhp b/ Hin cc sch c trong chuyn mc : Ti file list_books.php : PHP Code:
<link href = 'styles.css' rel = 'stylesheet' type ='text/css' /> <?php require_once('header.php'); require_once('includes/connect.php'); session_start(); $cate_id = $_GET['cate_id']; $sql = "select isbn,image,title from books where cate_id = '$cate_i d' "; $result = mysql_query($sql); echo '<table>'; while($rows = mysql_fetch_assoc($result)){ if($rows['image'] != NULL){ echo "<tr> <td><img src = \"admin/images/$rows[image]\" widt h = '100px' height = '150px' border = '1'/></td> <td><a href = \"book_info.php?isbn=$rows[isbn]\" > $ro ws[title] </li>"; } else echo "<tr> <td><img src = # width = '100px' height = '150px' /></td> <td valign = 'center'><a href = \"book_info.php?isbn=$ rows[isbn]\" > $rows[title] </li>"; } echo '</table>'; echo '<a href = "index.php"> n cc chuyn mc khc </a>'; if(!isset($_SESSION['level']) || $_SESSION['level'] != '2') echo '<a href = "show_cart.php"> Xem gi hng ca bn </a>'; else echo '<a href = "logout.php"> Log Out</a>';

Page 400 of 413

//require_once('footer.php'); ?>

Chng ta s lit k cc sch trong chuyn mc theo 1 bng, ct bn tri l hnh i din, ct bn phi l ta sch , ta sch c gn link n file book_info.php?isbn. <<<file book_info.php c nhim v lit k thng tin sch c isbn ch nh V hnh nh l optional, v th chng ta phi xt 2 trng hp, nu hnh trn database l NULL, th chng ta s khng show hnh ra ( src = # ) , ngc li, tr ng dn ti folder images to, ly hnh upload show ra : admin/images/$rows[image] c/ Hin th thng tin sch : PHP Code:
<link href = 'styles.css' rel = 'stylesheet' type ='text/css' /> <script> function xacnhan() { if(!window.confirm("Bn thc s mun xa sch ny? " )){ return false; } } </script> <?php require_once('header.php'); require_once('includes/connect.php'); session_start(); $isbn = $_GET['isbn']; $sql = "select * from books where isbn = '$isbn' "; $result = mysql_query($sql); $rows = mysql_fetch_assoc($result); $isbn = htmlspecialchars($rows['isbn']); $title = htmlspecialchars($rows['title']); $author =htmlspecialchars($rows['author']); $description = htmlspecialchars($rows['description']); echo '<table>'; if($rows['image'] != NULL){ echo "<tr> <td><img src = \"admin/images/$rows[image]\" th = '100px' height = '150px'/></td>"; } else echo "<tr> <td><img src = # width = '100px' height = '150px' /></td>"; echo "<td><ul> <li>ISBN: $isbn</li> <li>Title: $title</li> <li>Author: $author</li> <li>Price: $rows[price]</li>

wid

Page 401 of 413

<li>Description: $description </li> </ul>"; echo "</td></tr>"; echo '</table>'; if(isset($_SESSION['level']) && $_SESSION['level'] ==2) { echo "<a href = \"admin/edit_book.php?isbn=$isbn\"> Sa thng tin s ch| </a>"; echo "<a href = \"admin/delete_book.php?isbn=$isbn\" onclick = \"return xacnhan();\"> Xa sch khi chuyn mc|</a>"; echo "<a href = \"list_books.php?cate_id=$rows[cate_id]\"> V trang trc |</a>"; echo '<a href = "logout.php"> Log Out</a>'; } else{ echo "<a href =\"list_books.php?cate_id=$rows[cate_id]\"> Tip tc mua sch </a>"; echo "<a href = \"show_cart.php?isbn=$rows[isbn]\"> Thm vo gi h ng| </a>"; if(isset($_SESSION['cart'])) echo "<a href = \"show_cart.php\"> Xem gi hng| </a>"; } //require_once('footer.php'); ?>

phn ny, nu ngi ang truy cp l admin th xut ra : Sa thng tin sch, Xa sch khi chuyn mc, v trang trc, log out . PHP Code:
if(isset($_SESSION['level']) && $_SESSION['level'] ==2) { echo "<a href = \"admin/edit_book.php?isbn=$isbn\"> Sa thng tin s ch| </a>"; echo "<a href = \"admin/delete_book.php?isbn=$isbn\" onclick = \"return xacnhan();\"> Xa sch khi chuyn mc|</a>"; echo "<a href = \"list_books.php?cate_id=$rows[cate_id]\"> V trang trc |</a>"; echo '<a href = "logout.php"> Log Out</a>'; }

Ngc li th xut ra : tip tc mua sch, thm vo gi hng, xem gi hng PHP Code:
else{ echo "<a href =\"list_books.php?cate_id=$rows[cate_id]\"> Tip tc mua sch </a>"; echo "<a href = \"show_cart.php?isbn=$rows[isbn]\"> Thm vo gi h ng| </a>"; if(isset($_SESSION['cart'])) // Nu tng thm sch vo gi hng th mi cho xem gi hng, nu ln u truy cp th hok hin Xem Gi Hng . c part 9 hiu gi hng echo "<a href = \"show_cart.php\"> Xem gi hng| </a>"; } //require_once('footer.php');

Page 402 of 413

III/ Hin th gi hng Trang show_cart.php c nhim v nh sau : Nu t file book_info.php chng ta click : thm vo gi hng => s c chuyn sang show_cart.php?isbn= <<<Lc ny show_cart.php c nhim v thm sch vo gi hng nu n khng c v tng s lng ca n thm 1 nu tn ti ! Nu t cc file nh list_books.php, book_info.php , ngi dng click: xem gi hng => s c chuyn sang show_cart.php . Ti y, trang ch c nhim v show ra gi hng cho ngi truy cp. Ti trang show_cart.php chng ta cho php ngi dng thay i s lng ca sch . Nhn save li => Cp nht tng tin, s lng v.v . Ta c code trang show_cart.php nh sau : PHP Code:
<?php require_once('header.php'); require_once('includes/connect.php'); session_start(); $isbn =''; if(isset($_GET['isbn'])){ $isbn = $_GET['isbn']; $sql = "select cate_id from books where isbn = '$isbn' "; $book_ordered = mysql_query($sql); $book_ordered = mysql_fetch_assoc($book_ordered); if(!isset($_SESSION['cart'])){ $_SESSION['cart'] = array(); } if(!isset($_SESSION['cart'][$isbn])){ $_SESSION['cart'][$isbn] = 1; } else $_SESSION['cart'][$isbn]++; } $_SESSION['total_items'] = 0; $_SESSION['total_prices'] = 0; if(isset($_POST['save'])){ foreach($_SESSION['cart'] as $isbn_i => $quantity_q){ if($_POST[$isbn_i] ==0){ unset($_SESSION['cart'][$isbn_i]); } else $_SESSION['cart'][$isbn_i] = $_POST[$isbn_i];

Page 403 of 413

} } foreach($_SESSION['cart'] as $isbn_i => $quantity_q){ $sql = "select price from books where isbn = '$isbn_i' "; $result = mysql_query($sql); $rows = mysql_fetch_assoc($result); $price = $rows['price']; $_SESSION['total_items'] += $quantity_q; $_SESSION['total_prices'] += $quantity_q*$price; } echo "<h1><font color = 'red'> Gi hng ca bn </font></h1>"; echo "<form action = \"show_cart.php\" method = 'post'>"; echo '<table border = "1px" cellspacing = "0">'; echo '<th>Ta sch</th>'; echo '<th>Gi sch</th>'; echo '<th>S lng </th>'; echo '<th>Tng tin</th>'; foreach($_SESSION['cart'] as $isbn_i => $quantity_q){ $sql = "select * from books where isbn = '$isbn_i' "; $result = mysql_query($sql); $rows = mysql_fetch_assoc($result); echo '<tr>'; echo "<td align = 'center'>$rows[title]</td>"; echo "<td align = 'center'>$rows[price]</td>"; echo "<td align = 'center'><input type = 'text' name = '$isbn_i ' value = '$quantity_q' size ='2' /></td>"; $total_prices = $rows['price']*$quantity_q ; echo "<td align = 'center'>$total_prices</td>"; echo '</tr>'; } echo '<tr>'; echo "<td align = 'center' colspan = '4'> <input type ='hidden' name = 'save' /> <input type ='image' src = 'save.gif' /></td>"; echo '</form>'; echo '</table>'; if($isbn){ echo "<a href = \"list_books.php?cate_id=$book_ordered[cate_id]\"> Tip tc mua hng </a>"; } else echo '<a href = "index.php"> Tip tc mua hng </a>';

Mnh gii thch v form ca trang ny trc : Form l 1 table vi 4 ct : sch, gi, s lng mua, tng tin ca sach . Ti ct s lng mua, cho php ngi dng thay i s lng PHP Code:
echo ''<input type = 'text' value = '$quantity_q' name = '$isbn_i' '';

Sau chng ta tnh tng tin ca cun sch xut ra bng cch nhn gi sch vi tng s lng sch :

Page 404 of 413

PHP Code:
$total_prices = $rows['price']*$quantity_q ;

tnh tng tin ca tt c cun sch trong gi , chng ta tnh trc : $_SESSION['cart'][ 'total_prices'] . M bin $_SESSION hok th ni suy c, v th chng ta gn vo 1 bin tn $total_prices_books Ti phn nt SAVE: y mnh dng hnh nh l save.gif lm nt save: c php : M:
<input type ='image' src = 'save.gif' />

Nhng nt save ny c nhim v nh l 1 nt submit chng ta thm type = 'hidden' trc n : M:


<input type = 'hidden' name ='save' />

Nu nh gi hng mi c b sung thm sch ( tc l show_cart.php?isbn= ) th 'tip tc mua hng' s dn n chuyn mc cha sch khch hng la chn tp Nu nh gi hng ch c xem (tc l show_cart.php) th 'tip tc mua hng' s dn n lit k cc chuyn mc. PHP Code:
if($isbn){ echo "<a href = \"list_books.php?cate_id=$book_ordered[cate_id]\"> Tip tc mua hng </a>"; } else echo '<a href = "index.php"> Tip tc mua hng </a>';

Chng ta xt trng hp nu sch va c thm vo gi hng , tc l trn a ch c isbn : PHP Code:


$isbn = $_GET['isbn']; //Ly gi tr ca isbn trn thanh a ch $sql = "select cate_id from books where isbn = '$isbn' "; //Ly id ca chuyn mc m sch c isbn thuc $book_ordered = mysql_query($sql); //Thc hin cu truy vn $book_ordered = mysql_fetch_assoc($book_ordered); //Chuyn kt qu tr v thnh mng khng tun t if(!isset($_SESSION['cart'])){ $_SESSION['cart'] = array(); } if(!isset($_SESSION['cart'][$isbn])){ $_SESSION['cart'][$isbn] = 1; } else $_SESSION['cart'][$isbn]++; }

Chng ta x l phn gi hng nh sau : Page 405 of 413

PHP Code:
if(!isset($_SESSION['cart'])){ $_SESSION['cart'] = array(); } if(!isset($_SESSION['cart'][$isbn])){ $_SESSION['cart'][$isbn] = 1; } else $_SESSION['cart'][$isbn]++;

Nu khng tn ti $_SESSION['cart'] : tc l ngi dng cha mua hng, th chng ta khi to $_SESSION['cart'] l 1 mng . Mng ny c nhim v cha kha l isbn, gi tr ca kha l s lng sch t trong gi . Khi ng dng thm 1 cun sch vo, kim tra xem sch tn ti cha ? Nu cha th to mi nu c ri th tng ln 1 . Sau nhng cng vic trn, chng ta phi reset gi tr ca $_SESSION['total_prices'] v $_SESSION['total_items'], ri thc hin vic tnh li t u gi tr ca 2 SESSION ny, nu khng th phn tnh ton s b sai khi ng dng save hay refresh . PHP Code:
$_SESSION['total_items'] = 0; $_SESSION['total_prices'] = 0;

Trc khi thc hin vic tnh ton tng sch v tng tin ( gi tr ca 2 SESSION trn), chng ta cn x l nt save trc : PHP Code:
if(isset($_POST['save'])){ //Nu ngi dng nhn nt save foreach($_SESSION['cart'] as $isbn_i => $quantity_q){ //Lp vi tng cun sch trong gi if($_POST[$isbn_i] ==0){ //Nu s lng sch ca 1 cun sch xc nh l 0, th b cun sch ra khi gi hng unset($_SESSION['cart'][$isbn_i]); } else $_SESSION['cart'][$isbn_i] = $_POST[$isbn_i]; //Nu khc khng, cp nht s lng sch } }

Tnh ton tng s sach trong gi v tng tin : PHP Code:


foreach($_SESSION['cart'] as $isbn_i => $quantity_q){ $sql = "select price from books where isbn = '$isbn_i' "; //Chn gi ca tng cun sch t database $result = mysql_query($sql); $rows = mysql_fetch_assoc($result); //Chuyn v thnh mng khng tun t

Page 406 of 413

$price = $rows['price']; //Ly gi ca sch gn vo bin $_SESSION['total_items'] += $quantity_q; //Tng s sch th c tnh d dng bng cch cng dn tng s lng t ng cun sch $_SESSION['total_prices'] += $quantity_q*$price; //Tng tin th cng dn tng tin mua mi loi sch . }

II/ Trang qun tr: c/ Sa thng tin sch Gi chng ta quay li x l trang edit_book.php: PHP Code:
<?php require_once('../includes/session.php'); require_once('../includes/check_data.php'); require_once('../includes/connect.php'); if(isset($_GET['isbn'])) { $isbn = $_GET['isbn']; $sql = "select * from books where isbn = '$isbn' "; } else if(isset($_POST['old_isbn'])){ $old_isbn = $_POST['old_isbn']; $sql = "select * from books where isbn = '$old_isbn' "; } $book = mysql_query($sql); $book = mysql_fetch_assoc($book); if(isset($_POST['ok'])){ $isbn = $author = $title = $price = $description = ''; if(!check_data($_POST)){ echo 'Bn cha in ht thng tin ca sch'; } else{ $isbn = trim($_POST['isbn']); $author = trim(htmlspecialchars($_POST['author'])); $cate_id = $_POST['cate_id']; $title = trim(htmlspecialchars($_POST['title'])); $price = $_POST['price']; $description = trim(htmlspecialchars($_POST['description']) ); if($old_isbn != $isbn){ $sql = "select author from books where isbn ='$isbn'";

Page 407 of 413

$result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ if($_FILES['image']['name']){ move_uploaded_file($_FILES['image']['tmp_name'] ,"images/".$_FILES['image']['name']); $image = $_FILES['image']['name']; $sql = "update books set isbn = '$isbn', author = '$author', title ='$title', cate_id = '$cate_id', image ='$image', p rice = '$price', description = '$description' where isbn ='$old_isbn'"; } else $sql = "update books set isbn = '$isbn', author = '$author', title ='$title', cate_id = '$cate_id', price = '$price', description = '$description' where isbn ='$old_isbn '"; $result = mysql_query($sql); } else{ echo 'Xy ra li .ISBN tn ti'; $result = false; } } if($old_isbn == $isbn){ if($_FILES['image']['name']){ move_uploaded_file($_FILES['image']['tmp_name'] ,"images/".$_FILES['image']['name']); $image = $_FILES['image']['name']; $sql = "update books set isbn = '$isbn', author = '$author', title ='$title', cate_id = '$cate_id', image ='$image', p rice = '$price', description = '$description' where isbn ='$old_isbn'"; } else $sql = "update books set isbn = '$isbn', author = '$author', title ='$title', cate_id = '$cate_id', price = '$price', description = '$description' where isbn ='$old_isbn'"; $result = mysql_query($sql); } if($result){ header("location: ../list_books.php?cate_id=$cate_id"); exit(); } else echo ' Xy ra li , sch cha c thm vo ' ; } } ?>

Page 408 of 413

<form action = 'edit_book.php' method = 'post' enctype = 'multi part/form-data'> <fieldset> <legend> Thng tin sch : </legend> <table> <tr> <td>Chuyn mc: </td> <td> <select name = 'cate_id'> <?php require_once('../includes/connect.php'); $sql = 'select * from categories'; $result = mysql_query($sql); while($rows = mysql_fetch_assoc($result)) //Dng mysql_fetch_assoc s tit kim b nh hn mysql_fetch_array echo "<option value = '$rows[cate_id]' <?php if($rows[cate_id] == $book[cate_id]) echo 'selected = selected'; ?> $rows[cate_name] </option>"; //Ti sao hok phi l $result['cate_id'] m l $result[cate_id] <<< V c lng vo " " ca dng ECHO ?> </td> </tr> <tr> <td>ISBN: </td> <td><input type ='text' name = 'isbn' value ='<?php echo htmlspecialchars($book['isbn']);?>'/> </td> </tr> <tr> <td>Tc gi: </td> <td><input type ='text' name = 'author' value = ' <?php echo htmlspecialchars($book['author']); ?> '/> </td> </tr> <tr> <td>Ta sch: </td> <td><input type ='text' name = 'title' value ='<?php echo htmlspecialchars($book['title']); ?>'/> </td> </tr> <?php if($book['image'] != ''){ echo '<tr>'; echo '<td> Hnh i din cho sch : </td>'; echo "<td> <img src = 'images/$book[image]' width = '100px' height = '150px' /></td>"; echo '</tr>'; } ?> <tr>

Page 409 of 413

<td>Hnh i din: </td> <td><input type = 'file' name = 'image' /> </td> </tr> <tr> <td>Gi sch: </td> <td><input type ='text' name = 'price' value = ' <?php echo $book['price']; ?>'/> </td> </tr> <tr> <td>M t: </td> <td><textarea name = 'description' cols = '50' rows ='20'> <?php echo htmlspecialchars($book['description']); ?> </textarea></td> </tr> </fieldset> <tr> <td colspan = '2' align = 'center'> <input type = 'hidden' name = 'old_isbn' value ="<?php echo $bo ok['isbn'];?>" /> <input type = 'submit' name = 'ok' value = 'Send' /> </td> </tr> </form>

y chng ta c nhim v d liu t database ra form . Lu : khi sa sch, c th ng dng s sa isbn, m isbn l primary key trong database . Vy chng ta phi x l 2 trng hp: 1/ Nu ngi dng thay i isbn . 2/ Nu ngi dng hok thay i isbn xt 2 trng hp trn, chng ta cn bit isbn trc khi edit ca sch, v th chng ta chn : M:
<input type = 'hidden' name = 'old_isbn' value ="<?php echo $book['isbn'];?>" />

on code trn s gi isbn c cho chng ta qua form . Cc bn thy, form ny gi d liu n edit_book.php ch hok phi edit_book.php?isbn. nh thng l .Vy nu chng ta ch dng : PHP Code:
if(isset($_GET['isbn'])) { $isbn = $_GET['isbn']; $sql = "select * from books where isbn = '$isbn' "; }

Th khi c li hok thay i sch c, PHP s vn chy script edit_book.php m hok thc hin vic chuyn trang => Lc ny hok cn isbn na m $_GET => form s y li v hok c mng bt tun t d liu t database Page 410 of 413

V vy chng ta thm : PHP Code:


else if(isset($_POST['old_isbn'])){ $old_isbn = $_POST['old_isbn']; $sql = "select * from books where isbn = '$old_isbn' "; }

y, cho d xy ra sai st g , th chng ta vn cn old_isbn ly d liu t database v form s hok cn li : PHP Code:
$book = mysql_query($sql); $book = mysql_fetch_assoc($book); if($old_isbn != $isbn){ $sql = "select author from books where isbn ='$isbn'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ if($_FILES['image']['name']){ move_uploaded_file($_FILES['image']['tmp_name'] ,"images/".$_FILES['image']['name']); $image = $_FILES['image']['name']; $sql = "update books set isbn = '$isbn', author = '$author', title ='$title', cate_id = '$cate_id', image ='$image', p rice = '$price', description = '$description' where isbn ='$old_isbn'"; } else $sql = "update books set isbn = '$isbn', author = '$author', title ='$title', cate_id = '$cate_id', price = '$price', description = '$description' where isbn ='$old_isbn '"; $result = mysql_query($sql); } else{ echo 'Xy ra li .ISBN tn ti'; $result = false; } } if($old_isbn == $isbn){ if($_FILES['image']['name']){ move_uploaded_file($_FILES['image']['tmp_name'] ,"images/".$_FILES['image']['name']); $image = $_FILES['image']['name']; $sql = "update books set isbn = '$isbn', author = '$author', title ='$title', cate_id = '$cate_id', image ='$image', p rice = '$price', description = '$description' where isbn ='$old_isbn'"; } else $sql = "update books set isbn = '$isbn', author = '$author', title ='$title', cate_id = '$cate_id', price = '$price', description = '$description' where isbn ='$old_isbn'";

Page 411 of 413

$result = mysql_query($sql); }

y. Chng ta xt 2 trng hp nh ni trn . Trong mi trng hp , li c 2 trng hp con l hok c nh i din v c nh i din . TH : $old_isbn != $isbn y, chng ta tm xem trong database, isbn mi c trng vi isbn ca cun sch no khc hay khng ? lm iu ny ta : PHP Code:
$sql = "select author from books where isbn ='$isbn'"; $result = mysql_query($sql);

Ri sau tm s dng ca kt qu tr v : PHP Code:


$rows = mysql_num_rows($result);

Nu 0 dng, tc l khng c trng, chng ta thc hin cu truy vn thay i thng tin : PHP Code:
$result = mysql_query($sql) . //tr v true

Nu trng, chng ta gn $result l false; TH : $isbn == $old_isbn trng hp ny chng ta lm bnh thng, v isbn c gi nguyn . Sau khi xt 2 trng hp, chng ta thc hin: Nu result tr v true, th chuyn n trang list_cate.php?.... Nu result tr v false ( tc l trng hp trng isbn hoc xy ra li no ) th trang hin ti . Vy l mnh hng dn cc bn code trang bn sch, hi vng l cc bn mi hc PHP c ci nhn tng quan v vic xy dng 1 ng dng n gin . Mc ch ca nhng bi hng dn ny l nh th, mnh ch mong nhng ng mi hc, mi bc vo PHP hnh dung dc th no l code 1 ng dng hon chnh . V th layout mnh cha xy dng cho p, v code cha hon chnh cho lm . Code ny hok dnh cho cc i tng hiu v nm c nhng iu trn nh ;;) . Cn 1 s file khc nh edit user, list user,v.v cch gii thch cng nh nhau nn mnh hok post ln y .
Page 412 of 413

Code ny cn thiu phn check out, thanh ton, phn user th cha kim tra tn ti username cha nh isbn trn , cc bn t x l nh, coi nh bi tp v nh =]]] ^^ Cho mi ngi nh !

Page 413 of 413

Вам также может понравиться