Tài liệu 21 sai lầm chết người với lập trình PHP pptx

27 328 0
Tài liệu 21 sai lầm chết người với lập trình PHP pptx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 1 1 1 1 Dormitory 204.B5 18:20 PM April 7, 2006 à i vi ế t n à y d à nh cho nh ữ ng l ậ p tr ì nh vi ê n PHP quan t â m đế n vi ệ c tr á nh nh ữ ng l ỗ i th ườ ng g ặ p khi s ử d ụ ng PHP. Ng ườ i đọ c ph ả i bi ế t c á c c ú ph á p c ủ a PHP, v à n ê n bi ế t c ô ng d ụ ng c ủ a c á c h à m trong PHP. M ộ t trong nh ữ ng đ i ể m m ạ nh nh ấ t c ủ a PHP v ô t ì nh tr ở th à nh m ộ t trong nh ữ ng đ i ể m y ế u nh ấ t c ủ a n ó : t t t t í í í í nh nh nh nh d d d d ễ ễ ễ ễ s s s s ử ử ử ử d d d d ụ ụ ụ ụ ng ng ng ng . Nhi ế u ng ườ i ch ọ n PHP v ì t í nh d ễ s ử d ụ ng, đã kh ô ng nh ậ n ra r ằ ng: s ử d ụ ng đú ng PHP PHP PHP PHP c c c c ò ò ò ò n n n n kh kh kh kh ó ó ó ó h h h h ơ ơ ơ ơ n n n n c c c c á á á á c c c c ng ng ng ng ô ô ô ô n n n n ng ng ng ng ữ ữ ữ ữ kh kh kh kh á á á á c c c c . Trong lo ạ t b à i n à y s ẽ l ầ n l ượ t n ê u ra 21 l ỗ i, t ừ nh ữ ng sai l ầ m gi á o khoa (l à m script tr ở n ê n ch ậ m v à kh ó qu ả n l í ) đế n nh ữ ng sai l ầ m ch ế t ng ườ i - c ó th ể xem l à ngu ồ n g ố c c ủ a nh ữ ng sai l ầ m s ơ đẳ ng. PH Ầ N 1: 7 L Ỗ I GI Á O KHOA    21. 21. 21. 21. S S S S ử ử ử ử d d d d ụ ụ ụ ụ ng ng ng ng printf() printf() printf() printf() kh kh kh kh ô ô ô ô ng ng ng ng th th th th í í í í ch ch ch ch h h h h ợ ợ ợ ợ p p p p H à m printf() d ù ng để in d ữ li ệ u c ó đị nh d ạ ng N ó c ó th ể đượ c d ù ng, th í d ụ , khi b ạ n m ộ t in m ộ t s ố ki ể u double v ớ i 2 s ố l ẻ , ho ặ c trong b ấ t k ì t ì nh hu ố ng n à o b ạ n mu ố n thay đổ i đị nh d ạ ng tr ướ c khi in. Th í d ụ d ướ i đâ y minh ho ạ c á ch d ù ng đú ng c ủ a printf(): đị nh d ạ ng s ố Pi v ớ i độ ch í nh x á c theo ý mu ố n M M M M ã ã ã ã l l l l ệ ệ ệ ệ nh nh nh nh (PHP) <? /* The three faces of Π */ printf ( "Pi is: %.2f\n<br>\n" , M_PI ); printf ( "Pi is also: %.3f\n<br>\n" , M_PI ); printf ( "Pi is also: %.4f\n<br>\n" , M_PI ); ?> Ch Ch Ch Ch ú ú ú ú ý ý ý ý . . . . T ô i đã t ừ ng g ặ p nh ữ ng ng ườ i s ợ d ù ng printf(), thay v à o đó l ạ i d ù ng nh ữ ng h à m đị nh d ạ ng t ự vi ế t, d à i đế n 30- 40 d ò ng, trong đ i m ộ t c â u printf() c ó th ể l à m m ọ i th ứ anh ta mong mu ố n. Nhi ế u l ậ p tr ì nh vi ê n d ù ng sai printf(): in c á c bi ế n, c á c gi á tr ị tr ả v ề c ủ a h à m ho ặ c th ỉ nh tho ả ng, ch ỉ l à d ữ li ệ u th ô ng th ườ ng. Th ườ ng x ả y ra trong hai t ì nh hu ố ng:  C â u l ệ nh print() th í ch h ợ p h ơ n  Hi ể n th ị gi á tr ị tr ả v ề c ủ a m ộ t h à m 1. 1. 1. 1. Khi Khi Khi Khi n n n n à à à à o o o o print() print() print() print() th th th th í í í í ch ch ch ch h h h h ợ ợ ợ ợ p p p p h h h h ơ ơ ơ ơ n? n? n? n? C á c l ậ p tr ì nh vi ê n th ườ ng s ử d ụ ng printf() trong khi ch ỉ print() l à đủ . X é t th í d ụ sau: <? $name = 'Nguyen Anh Khoa' ; $nghenghiep = 'Sinh vien' ; $diachi = 'Phong 204.B5 – KTX – DHSP Dong Thap' ; $email = 'khoa_computer2004@yahoo.com' ; printf ( "Ten cua tui la: %s\n<br>\n Hien dang la: %s, %s\n<br>\n Lien he voi toi qua Email: %s\n<br>\n" , $name , $nghenghiep , $diachi , $email ); ?> H à m print() print() print() print() c ó th ể d ù ng thay cho printf() nh ư sau: B PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 2 2 2 2 Dormitory 204.B5 18:20 PM April 7, 2006 print print print print "Ten cua tui la: $name \n \n \n \n <br> \n \n \n \n Hien dang la: $nghenghiep, $diachi \n \n \n \n <br> \n \n \n \n Lien he voi toi qua Email: $email \n \n \n \n <br> \n \n \n \n " ; ; ; ; Khi kh ô ng c ầ n đị nh d ạ ng s ử li ệ u, d ù ng print() thay cho printf() c ó nh ữ ng l ợ i í ch sau:  Thi Thi Thi Thi h h h h à à à à nh nh nh nh nhanh nhanh nhanh nhanh h h h h ơ ơ ơ ơ n: n: n: n: h à m printf() đị nh d ạ ng d ữ li ệ u c ủ a b ạ n tr ướ c khi hi ể n th ị , n ó s ẽ ch ậ m h ơ n print() ho ặ c echo()  M M M M ã ã ã ã s s s s á á á á ng ng ng ng s s s s ủ ủ ủ ủ a: a: a: a: h ã y xem, d ù ng h à m printf() s ẽ l à m cho ng ườ i đọ c h ơ i b ị l ẫ n l ộ n (t ấ t nhi ê n tr ừ khi h ọ c ó n ề n t ả ng C). N ó đò i h ỏ i ki ế n th ứ c v ề c ú ph á p printf() (th í d ụ , %s thay cho chu ỗ i c ò n %d l à s ố ) v à v ề ki ể u bi ế n 2. 2. 2. 2. D D D D ù ù ù ù ng ng ng ng printf() printf() printf() printf() để để để để xu xu xu xu ấ ấ ấ ấ t t t t d d d d ữ ữ ữ ữ li li li li ệ ệ ệ ệ u u u u tr tr tr tr ả ả ả ả v v v v ề ề ề ề t t t t ừ ừ ừ ừ g g g g ọ ọ ọ ọ i i i i h h h h à à à à m m m m M ộ t l ỗ i th ườ ng g ặ p kh á c l à d ù n printf() để xu ấ t d ữ li ệ u tr ả v ề t ừ g ọ i h à m, th í d ụ nh ư h à m đế m d ướ i đâ y: Khi xu ấ t gi á tr ị do h à m tr ả v ề , to á n t ử . n ê n d ù ng để n ố i trong print(), nh ư d ướ i đâ y: D ù ng to á n t ử . nhanh h ơ n vi ệ c d ù ng printf() 20. 20. 20. 20. Á Á Á Á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng ng ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a a a a (semantics) (semantics) (semantics) (semantics) Nhi ề u l ậ p tr ì nh vi ê n s ử d ụ ng PHP m à kh ô ng bi ế t đế n nh ữ ng đ i ể m tinh t ế c ủ a ng ô n ng ữ n à y. M ộ t trong nh ữ ng đ i ể m đó l à s ự kh á c nhau gi ữ a c ú ph á p (syntax) v à ng ữ ngh ĩ a (semantics).  C C C C ú ú ú ú ph ph ph ph á á á á p: p: p: p: nh ữ ng quy t ắ c đị nh ngh ĩ a m ộ t ph ầ n t ử . Th í d ụ : d ấ u $ để tr ướ c d ù ng đị nh ngh ĩ a bi ế n, d ù ng d ấ u () v à c á c tham s ố đị nh ngh ĩ a m ộ t h à m .  Ng Ng Ng Ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a: a: a: a: nh ữ ng quy t ắ c á p d ụ ng trong c ú ph á p. Th í d ụ : m ộ t h à m c ó 2 bi ế n đị nh ngh ĩ a b ở i c ú ph á p c ủ a n ó , hai bi ế n n à y c ó ki ể u string - đó l à ng ữ ngh ĩ a. Trong m ộ t ng ô n ng ữ l ỏ ng l ẻ o nh ư PHP, b ạ n c ó nhi ề u l ự a ch ọ n để vi ế t l ệ nh. C á c bi ế n kh ô ng c ầ n c ó ki ể u x á c đị nh . Th í d ụ sau m ở t ậ p tin v à in t ừ ng d ò ng: Th í d ụ tr ê n s ẽ t ạ o l ỗ i: Warning: Warning: Warning: Warning: Supplied Supplied Supplied Supplied argument argument argument argument is is is is not not not not a a a a valid valid valid valid File-Handle File-Handle File-Handle File-Handle resource resource resource resource in in in in C:\Inetpub\wwwroot\tst.php C:\Inetpub\wwwroot\tst.php C:\Inetpub\wwwroot\tst.php C:\Inetpub\wwwroot\tst.php on on on on line line line line 4. 4. 4. 4. <? printf printf printf printf ( "%d occurrences of %s found." , count ( $truyvan ), $search_term ); ?> <? print print print print count ( $truyvan ) . "occurrences of $search_term found." ; ?> <? $fp = @ fopen ( 'vanban.txt' , 'r' ) or die ( 'Khong the mo file vanban.txt' ); while ( $line = @ fgets ( "$fp" , 1024 )) // Loi { print $line ; } @ fclose ( "$fp" ) // Loi or die ( 'Khong the dong vanban.txt' ); ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 3 3 3 3 Dormitory 204.B5 18:20 PM April 7, 2006 Đó l à do bi ế n $fp đặ t trong d ấ u nh á y k é p n ê n đượ c chuy ể n th à nh chu ỗ i. Th ế m à h à m fopen() nh ậ n m ộ t đị nh danh t à i nguy ê n (resource identifier) trong tham s ố đầ u c ủ a n ó , ch ứ kh ô ng nh ậ n m ộ t chu ỗ i. Để gi ả i quy ế t v ấ n đề , b ạ n ch ỉ đơ n gi ả n b ỏ d ấ u nh á y k é p đ i 1. 1. 1. 1. C C C C ó ó ó ó th th th th ể ể ể ể tr tr tr tr á á á á nh nh nh nh vi vi vi vi ệ ệ ệ ệ c c c c á á á á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng ng ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a? a? a? a? Our example above generated an error statement. But PHP enables you to customize your scripts to fit a unique scenario or output requirement. So, it is at least theoretically possible to "get away" with misapplying a semantic. T ô i kh ô ng hi ể u, nh ư ng d ị ch t h ế n à y đượ c kh ô ng? Th í d ụ tr ê n c ủ a ch ú ng ta t ạ o ra m ộ t th ô ng b á o l ỗ i. Nh ư ng PHP cho ph é p b ạ n tu ỳ bi ế n c á c script để th í ch h ợ p v ớ i m ộ t k ị ch b ả n kh á c th ườ ng ho ặ c v ớ i c á c đò i h ỏ i c ủ a th ô ng tin ra. Do đó , í t nh ấ t tr ê n l í thuy ế t, b ạ n c ó kh ả n ă ng tr á nh vi ệ c á p d ụ ng sai ng ữ ngh ĩ a. V ậ y, b ạ n c ầ n bi ế t nh ữ ng h ậ u qu ả c ó th ể c ó (possible outcomes) n ế u b ạ n quy ế t đị nh h ọ c v ề ng ữ ngh ĩ a. Á p d ụ ng sai d ẫ n đế n nh ữ ng l ỗ i kh á tinh vi n ế u b ạ n kh ô ng ch ú ý . N ế u b ạ n mu ố n tu ỳ bi ế n script, b ạ n c ầ n hi ể u nh ữ ng ch ủ đề ch í nh sau:  Ki Ki Ki Ki ể ể ể ể u: u: u: u: trong PHP, m ỗ i bi ế n c ó m ộ t ki ể u x á c đị nh ở m ộ t th ờ i đ i ể m x á c đị nh, cho d ù b ạ n c ó th ể t ự do chuy ể n đổ i ki ể u m ộ t bi ế n. N ó i m ộ t c á ch kh á c, kh ô ng c ó bi ế n n à o l ạ i kh ô ng k è m theo t í nh ch ấ t c ủ a ki ể u c ủ a n ó . PHP c ó 7 ki ể u c ơ b ả n: boolean, resource, integer, doubl e, string, array v à object.  T T T T ầ ầ ầ ầ m m m m v v v v ự ự ự ự c: c: c: c: trong PHP, m ỗ i bi ế n c ó m ộ t t ầ m v ự c ri ê ng. T ầ m v ự c bi ế n quy đị nh bi ế n c ó th ể đượ c truy c ậ p t ừ đâ u, t ồ n t ạ i trong th ờ i gian n à o. Hi ể u sai kh á i ni ệ m c ơ b ả n v ề "t ầ m v ự c" d ẫ n đế n nh ữ ng l ỗ i sai tinh t ế v à c ả nh ữ ng l ỗ i l ớ n.  php.ini: php.ini: php.ini: php.ini: khi vi ế t m ộ t script ch ạ y ở nhi ề u m ô i tr ườ ng kh á c nhau, c ầ n bi ế t r ằ ng kh ô ng ph ả i m ọ i c ấ u h ì nh PHP đề u nh ư nhau. Do đó , c ầ n thi ế t nh ữ ng l ệ nh ki ể m tra để đả m b ả o script c ủ a b ạ n ch ạ y t ố t trong c ấ u h ì nh PHP c ủ a ng ườ i kh á c. 19. 19. 19. 19. Thi Thi Thi Thi ế ế ế ế u u u u ghi ghi ghi ghi ch ch ch ch ú ú ú ú Theo ý t ô i, m ã ngu ồ n thi ế u ghi ch ú l à c ă n nguy ê n c ủ a s ự l ậ p tr ì nh í ch k ỉ . N ó d ẫ n t ớ i nh ữ ng hi ệ u ch ỉ nh sai l ầ m, hi ể u sai ý ngh ĩ a v à l à m ng ườ i đọ c m ệ t m ỏ i. N ó i chung, l ậ p tr ì nh ghi ch ú (inline documentation) đượ c m ọ i ng ườ i kh ẳ ng nh ậ n l à đ i ề u t ố t, nh ư ng hi ế m khi n ó t ồ n t ạ i. M ộ t v ấ n đề kh á c l à qu á nhi ề u ghi ch ú . D ù hi ế m g ặ p, nh ư ng n ó l à m cho c á c đ o ạ n m ã b ị c ắ t v ụ n, g â y ra s ự kh ó theo d õ i. D ướ i đâ y l à m ộ t th í d ụ : <? // Bat dau ma PHP $age = 18 ; // Gan 18 den $age $age ++; // Tang $age len 1 don vi // IN ra doan text thong bao: print "You are now 19, which means you have been:" ; print "\n<br>\n<br>\n" ; // Vong lap for in ra tat ca tuoi truoc do for ( $idx = 0 ; $idx < $age ; $idx ++) { <? $fp = @ fopen ( 'vanban.txt' , 'r' ) or die ( ‘ Khong the mo file tailieuphp.txt' ); while ( $line = @ fgets ( $fp , 1024 )) { print $line ; } @ fclose ( $fp ) or die ( Khong the dong file vanban.txt ' ); ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 4 4 4 4 Dormitory 204.B5 18:20 PM April 7, 2006 // In ra tuoi ca nhan print "$idx years old \n <br> \n " ; } / / Ket thuc ma PHP ? > 1. 1. 1. 1. Bao Bao Bao Bao nhi nhi nhi nhi ê ê ê ê u u u u ghi ghi ghi ghi ch ch ch ch ú ú ú ú th th th th ì ì ì ì đủ đủ đủ đủ ? ? ? ? Nhi ế u đế n m ứ c n à o, đ i ề u đó tu ỳ thu ộ c ng â n s á ch c ủ a b ạ n, v à o ch í nh s á ch c ủ a c ô ng ty v à v à o độ ph ứ c t ạ p c ủ a ch ươ ng tr ì nh. Tuy nhi ê n, c ũ ng c ó m ộ t v à i g ợ i ý cho b ạ n  Lu ô n c ó m ộ t m ô t ả ng ắ n v ề m ụ c đí ch c ủ a h à m ngay tr ướ c đị nh ngh ĩ a c ủ a h à m đó  Th ê m ghi ch ú v à o nh ữ ng ch ỗ c ó th ể b ị hack, ho ặ c nh ữ ng ch ỗ t ưở ng r ằ ng sai nh ư ng l ạ i ch ạ y đú ng  N ế u m ộ t đ o ạ n m ã n à o đó c ó th ể g â y nh ầ m l ẫ n, h ã y th ê m m ộ t í t ghi ch ú v ề m ụ c đí ch c ủ a đ o ạ n đó . Sau n à y b ạ n s ẽ th ấ y đượ c l ợ i í ch c ủ a n ó  D ù ng m ộ t ki ể u ghi ch ú nh ấ t qu á n, /* /* /* /* */ */ */ */ ho ặ c l à // // // // (tr (tr (tr (tr á á á á nh nh nh nh d d d d ù ù ù ù ng ng ng ng #) #) #) #) D ướ i đâ y l à m ộ t th í d ụ v ề ghi ch ú t ố t: <? // Random_Numbers.lib // Generate different types of random numbers. mt_srand ((double) microtime ()* 1000000 ); // mixed random_element(array elements[, array weights]) // Extract a random element from elements. Weights is // the relative probability that each element will be // selected. function random_element ( $elements , $weights =array()) { // There must be exactly the same amount of elements as // there are weights for this algorithm to work properly if ( count ( $weights ) == count ( $elements )) { foreach ( $elements as $element ) { foreach ( $weights as $idx ) { // Note: we don't use $idx, since we // don't want to override elements. $randomAr [] = $element ; } } } else { $randomAr = $elements ; } $random_element = mt_rand ( 0 , count ( $randomAr )- 1 ); return $randomAr [ $random_element ]; } ?> 18. 18. 18. 18. Nhi Nhi Nhi Nhi ề ề ề ề u u u u bi bi bi bi ế ế ế ế n, n, n, n, t t t t ố ố ố ố n n n n nhi nhi nhi nhi ề ề ề ề u u u u th th th th ờ ờ ờ ờ i i i i gian gian gian gian C ó v à i ng ườ i b ị á m ả nh b ở i bi ế n trung gian. T ô i kh ô ng th ể hi ể u n ổ i t ạ i sao ai đó c ó th ể vi ế t nh ư th ế n à y: PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 5 5 5 5 Dormitory 204.B5 18:20 PM April 7, 2006 T ạ i sao ph ả i d ù ng bi ế n trung gian? N ó kh ô ng c ầ n thi ế t R ủ i thay, c ó v ẻ nh ư r ấ t nhi ề u ng ườ i kh ó b ỏ đượ c th ó i quen x ấ u n à y. Bi ế n t ạ m l à m ch ậ m th ờ i gian thi h à nh ch ươ ng t ì nh c ủ a b ạ n. T ố t h ơ n l à n ê n b ỏ qua đó v à g ộ p c á c l ờ i g ọ i h à m v ớ i nhau. Nh ữ ng ng ườ i d ù ng bi ế n t ạ m th ườ ng l à m ch ươ ng c ủ a h ọ ch ạ y ch ậ m đế n 25%. M ộ t l í do kh á c để tr á nh c ó qu á nhi ề u bi ế n t ạ m l à v ì tr ô ng n ó kh ô ng đượ c đẹ p m ắ t. Trong hai th í d ụ tr ê n, th í d ụ n à o s ú c t í ch h ơ n? Th í d ụ n à o l à m con m ắ t d ễ ch ị u h ơ n? D ù ng qu á nhi ề u bi ế n t ạ m c ó th ể d ẫ n đế n m ã ch ươ ng tr ì nh kh ó đọ c v à kh ô ng s ú c t í ch. 1. 1. 1. 1. L L L L ợ ợ ợ ợ i i i i đ đ đ đ i i i i ể ể ể ể m m m m c c c c ủ ủ ủ ủ a a a a d d d d ù ù ù ù ng ng ng ng bi bi bi bi ế ế ế ế n n n n t t t t ạ ạ ạ ạ m m m m C á c bi ế n t ạ m c ó l ợ i trong vi ệ c thay th ế c á c h à m hay bi ể u th ứ c d à i l ê th ê . N ó c ó vai tr ò nh ư b í danh gi ả . Đ i ề u n à y đặ c bi ệ t đú ng khi b ạ n d ù ng m ộ t h à m hay bi ể u th ứ c nhi ề u l ầ n. Xem x é t th í d ụ đâ y, n ó kh ô ng d ù ng nhi ề u bi ế n h ơ n m ứ c t ố i thi ể u N ộ i dung trong h à m implode() d à i v à do đó kh ó đọ c. D ù ng m ộ t ho ặ c nhi ề u bi ế n t ạ m c ó th ể gi ú p ch ú ng ta: 2. 2. 2. 2. C C C C á á á á c c c c lu lu lu lu ậ ậ ậ ậ t t t t chung chung chung chung c c c c ủ ủ ủ ủ a a a a ng ng ng ng ó ó ó ó n n n n tay tay tay tay c c c c á á á á i i i i Khi quy ế t đị nh c ó d ù ng bi ế n t ạ m ho ặ c kh ô ng, b ạ n n ê n suy ngh ĩ v ề 2 c â u h ỏ i:  B ạ n c ó d ù ng bi ế n đó í t nh ấ t hai l ầ n?  T í nh đọ c đượ c c ủ a m ã c ó t ă ng đá ng k ể kh ô ng? N ế u í t nh ấ t m ộ t c â u tr ả l ờ i l à c ó , th ì n ê n d ù ng bi ế n t ạ m. C ò n kh ô ng, v ứ t n ó đ i v à t ổ h ợ p c á c h à m l ạ i (n ế u c ầ n). 17. 17. 17. 17. Vi Vi Vi Vi ế ế ế ế t t t t l l l l ạ ạ ạ ạ i i i i c c c c á á á á c c c c h h h h à à à à m m m m c c c c ó ó ó ó s s s s ẵ ẵ ẵ ẵ n n n n M ộ t s ố n ơ i ph ổ bi ế n m ã ngu ồ n c á c script PHP ch ủ tr ươ ng đổ i t ê n c á c h à m s ẵ n c ó để t ạ o s ự d ễ d à ng cho c á c l ậ p tr ì nh vi ê n chuy ể n t ừ VB sang. Th í d ụ : <? $tmp = date ( "F d, h:i a" ); /* ie January 3, 2:30 pm */ print $tmp ; ?> <? print date ( "F d, h:i a" ); ?> // string reverse_characters(string str) // Reverse all of the characters in a string. function reverse_characters ( $str ) { return implode ( "" , array_reverse ( preg_split ( "//" , $str ))); } // string reverse_characters(string str) // Reverse all of the characters in a string. function reverse_characters ( $str ) { $characters = preg_split ( "//" , $str ); $characters = array_reverse ( $characters ); return implode ( "" , $characters ); } <? function len ( $str ) { PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 6 6 6 6 Dormitory 204.B5 18:20 PM April 7, 2006 L ạ i c ó m ộ t s ố ng ườ i c ố g ắ ng vi ế t l ạ i c á c h à m PHP th ô ng d ụ ng thay v ì đ i h ọ c v ề h à m đó trong c á c t à i li ệ u PHP cung c ấ p. C ó í t nh ấ t 2 l í do để kh ô ng n ê n l à m đ i ề u n à y. Th ứ nh ấ t, v à tr ê n nh ấ t, n ó l à m cho nh ữ ng ng ườ i đọ c (v à s ử a) ch ươ ng tr ì nh c ủ a b ạ n kh ó hi ể u v à c ả m th ấ y c ó qu á nhi ề u h à m d ư th ừ a. H ọ t ự h ỏ i t ạ i sao b ạ n l ạ i đ i đị nh ngh ĩ a h à m theo ki ể u đó , thay v ì s ử d ụ ng c á c h à m đị nh ngh ĩ a s ẵ n b ở i PHP. Th ứ hai, đị nh ngh ĩ a h à m nh ư v ậ y c ũ ng s ẽ l à m ch ậ m ch ươ ng tr ì nh c ủ a b ạ n (m ộ t c á ch kh ô ng c ầ n thi ế t). Kh ô ng ch ỉ ph ả i x ử l í nhi ề u m ã h ơ n, m à m ỗ i l ầ n g ọ i h à m do b ạ n đị nh ngh ĩ a, b ạ n đã t ố n th ờ i gian cho ch í nh h à m đó , tr ướ c khi h à m nguy ê n thu ỷ đượ c g ọ i. 1. 1. 1. 1. Tr Tr Tr Tr á á á á nh nh nh nh vi vi vi vi ế ế ế ế t t t t l l l l ạ ạ ạ ạ i i i i c c c c á á á á c c c c h h h h à à à à m m m m c c c c ó ó ó ó s s s s ẵ ẵ ẵ ẵ n n n n H ã y đươ ng đầ u v ớ i n ó . Đô i khi th ậ t l à kh ó để tr á nh chuy ệ n n à y. Tr ướ c ti ê n, m ộ t l ậ p tr ì nh vi ê n kh ô ng th ể theo k ị p c á c h à m c ủ a PHP ngay đượ c. V à ai c ó th ờ i gian m à tra c ứ u. T ạ i sao kh ô ng vi ế t l ạ i cho kho ẻ ? C á ch l à m c ủ a t ô i l à lu ô n c ó s ẵ n m ộ t t à i li ệ u ch ỉ d ẫ n PHP ( PHP manual ) m ỗ i khi vi ế t ch ươ ng tr ì nh (t á c gi ả b à i n à y d ù ng m ộ t b ả n PDF c ó t ạ o ch ỉ m ụ c, ri ê ng t ô i, ng ườ i d ị ch, th ì d ù ng m ộ t t à i li ệ u CHM đầ y đủ th ô ng tin v à c ó c ả g ó p ý c ủ a ng ườ i s ử d ụ ng m à b ạ n c ó th ể l ấ y ở http://www.php.net/docs.php) . Sau đó , m ỗ i khi đị nh vi ế t m ộ t h à m m ở r ộ ng cho PHP, t ô i đọ c l ướ t qua t à i li ệ u để xem h à m đó c ó ch ư a. Tuy nhi ê n, c ầ n ch ú ý l à , do b ả n ch ấ t m ã ngu ồ n m ở c ủ a PHP, b ạ n c ó th ể t ì m đượ c c á c h à m do ng ườ i d ù ng đị nh ngh ĩ a tr ướ c khi n ó đượ c th ê m v à o PHP (th í d ụ nh ư h à m t ì m ph ầ n t ử kh á c nhau gi ữ a hai m ả ng). Đ i ề u n à y kh ô ng c ó ngh ĩ a l à b ạ n ph ả i hi ệ u ch ỉ nh l ạ i m ã (This doesn't necessarily mean that you should have to correct the code. - don't understand) 16. 16. 16. 16. Kh Kh Kh Kh ô ô ô ô ng ng ng ng t t t t á á á á ch ch ch ch bi bi bi bi ệ ệ ệ ệ t t t t ph ph ph ph ầ ầ ầ ầ n n n n server server server server v v v v à à à à client client client client V à i l ậ p tr ì nh vi ê n c ố k ế t n ố i c ả ch ươ ng tr ì nh v ớ i nhau, ngh ĩ a l à gh é p chung m ã HTML (client-side - ph ầ n kh á ch) v ớ i m ã PHP (server-side - ph ầ n ch ủ ) v à o trong m ộ t t ậ p tin l ớ n. M ặ c d ù đ i ề u n à y t ố t cho c á c site nh ỏ , nh ư ng n ó c ó th ể tr ở th à nh v ấ n đề l ớ n khi c á c site đó tr ở n ê n l ớ n h ơ n v à đượ c b ổ sung th ê m t í nh n ă ng. L ậ p tr ì nh theo c á ch n à y l à m n ả y sinh v ấ n đề kh ó b ả o tr ì v à c á c t ậ p tin tr ở n ê n c ồ ng k ề nh. 1. 1. 1. 1. H H H H à à à à m m m m API API API API Khi mu ố n t á ch bi ệ t ph ầ n kh á ch - ch ủ , b ạ n c ó v à i l ự a ch ọ n. M ộ t c á ch l à vi ế t nh ữ ng h à m hi ể n th ị n ộ i dung linh độ ng v à đặ t ch ú ng đú ng ch ỗ trong trang web. Th í d ụ d ướ i đâ y minh ho ạ đ i ề u n à y: index.php index.php index.php index.php - ph ầ n kh á ch return strlen ( $str ); } ?> HTML HTML HTML HTML < ?php include_once ("site.lib"); ?> < html > < head > < title > <?php print_header (); ?> < /title > < /head > < body > < h1 > < ?php print_header (); ? > < /h1 > < table border =" 0 " cellpadding=" 0 " cellspacing=" 0 "> < tr > PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 7 7 7 7 Dormitory 204.B5 18:20 PM April 7, 2006 site.lib site.lib site.lib site.lib - ph ầ n ch ủ Nh ư b ạ n th ấ y trong th í d ụ tr ê n, t á ch bi ệ t kh á ch ch ủ l à m t ă ng t í nh d ễ đọ c trong ch ươ ng tr ì nh c ủ a b ạ n. M ộ t l ợ i í ch kh á c l à m ộ t khi b ạ n đã c ó c á c h à m API hi ể n th ị n ộ i dung, b ạ n c ó th ể để cho thi ế t k ế vi ê n tham gia thay đổ i b ố c ụ c m à kh ô ng c ầ n s ử a m ã ch ươ ng t r ì nh. 1.1. 1.1. 1.1. 1.1. L L L L ợ ợ ợ ợ i i i i í í í í ch ch ch ch c c c c ủ ủ ủ ủ a a a a h h h h à à à à m m m m API API API API  T ươ ng đố i s á ng s ủ a  Nhanh, h ầ u nh ư kh ô ng l ã ng ph í th ờ i gian (overhead) 1.2. 1.2. 1.2. 1.2. B B B B ấ ấ ấ ấ t t t t l l l l ợ ợ ợ ợ i i i i < td width =" 25% "> < ?php print_links (); ? > < /td > < td > < ?php print_body (); ? > < /td > < /tr > < /table > < /body > < /html > <?php $dbh = mysql_connect ( "localhost" , "khoa" , "pass" ) or die ( sprintf ( "Khong the ket noi den MySQL [%s]: %s" , mysql_errno (), mysql_error ())); @ mysql_select_db ( "MainSite" ) or die ( sprintf ( "Khong the chon CSDL![%s]: %s" , mysql_errno (), mysql_error ())); $sth = @ mysql_query ( "SELECT * FROM site" , $dbh ) or die ( sprintf ( "Khong the thuc hien truy van [%s]: %s" , mysql_errno (), mysql_error ())); $site_info = mysql_fetch_object ( $sth ); function print_header () { global $site_info ; print $site_info -> header ; } function print_body () { global $site_info ; print nl2br ( $site_info -> body ); } function print_links () { global $site_info ; $links = explode ( "\n" , $site_info -> links ); $names = explode ( "\n" , $site_info -> link_names ); for ( $i = 0 ; $i < count ( $links ); $i ++) { print " \t\t\t <a xhref= \" $links [ $i ]\" >$names [ $i ] </a> \n <br> \n " ; } } ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 8 8 8 8 Dormitory 204.B5 18:20 PM April 7, 2006  Kh ô ng s á ng s ủ a v à d ễ d à ng b ằ ng h ệ th ố ng m ẫ u (template system)  C ầ n m ộ t í t ki ế n th ứ c PHP để s ử a m ẫ u 2. 2. 2. 2. H H H H ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng khu khu khu khu ô ô ô ô n n n n m m m m ẫ ẫ ẫ ẫ u u u u M ộ t c á ch kh á c để t á ch bi ệ t kh á ch ch ủ l à d ù ng h ệ th ố ng khu ô n m ẫ u. Ngh ĩ a l à , c ó m ộ t s ố đá nh d ấ u n ộ i dung sau đó d ù ng ch ươ ng tr ì nh ph â n t í ch, thay th ế c á c đá nh d ấ u đó b ằ ng th ô ng tin c ầ n thi ế t. Th í d ụ , b ạ n c ó th ể t ạ o m ộ t t ậ p tin nh ư th ế n à y: Sau đó c ó th ể vi ế t ch ươ ng tr ì nh ph â n t á ch t ậ p tin, thay th ế c á c th ô ng tin trong d ấ u c á ch %% b ằ ng c á c th ô ng tin th í ch h ợ p. Ghi ch ú : m ộ t l ớ p h ỗ tr ợ h ệ th ố ng khu ô n m ẫ u kh á t ố t l à l ớ p FastTemplate, c ó ở www.thewebmasters.net 2.1. 2.1. 2.1. 2.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m c c c c ủ ủ ủ ủ a a a a h h h h ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng khu khu khu khu ô ô ô ô n n n n m m m m ẫ ẫ ẫ ẫ u u u u  R ấ t trong s á ng  Kh ô ng c ầ n ki ế n th ứ c PHP để s ử a khu ô n m ẫ u 2.2. 2.2. 2.2. 2.2. Nh Nh Nh Nh ượ ượ ượ ượ c c c c đ đ đ đ i i i i ể ể ể ể m m m m  Ch ậ m h ơ n, b ạ n c ầ n ph â n t á ch t ậ p tin khu ô n m ẫ u, sau đó xu ấ t ra  Vi ệ c hi ệ n th ự c ph ứ c t ạ p h ơ n 15. 15. 15. 15. D D D D ù ù ù ù ng ng ng ng c c c c á á á á c c c c c c c c ấ ấ ấ ấ u u u u tr tr tr tr ú ú ú ú c c c c l l l l ỗ ỗ ỗ ỗ i i i i th th th th ờ ờ ờ ờ i i i i C ó nhi ề u ng ườ i c ứ d ù ng m ã i c á c m ã v à th ư vi ệ n l ỗ i th ờ i. Th í d ụ nh ư h ọ đã vi ế t m ộ t h à m d ù ng ở PHP 2, v à v ẫ n c ò n d ù ng n ó ở PHP 4, m ặ c d ù m ộ t h à m c ó c ù ng m ụ c đí ch nh ư th ế đã đượ c th ê m v à o ở PHP 3 D ù ng c á c c ấ u tr ú c l ỗ i th ờ i c ó th ể l à m ch ậ m ch ươ ng tr ì nh c ủ a b ạ n, c ũ ng nh ư l à m cho n ó tr ở n ê n kh ó hi ể u. Ng ườ i đọ c c á c ch ươ ng tr ì nh c ủ a b ạ n c ó th ể kh ô ng quen v ớ i c á c h à m l ỗ i th ờ i c ủ a PHP. Tuy nhi ê n, khi ph á t hi ệ n m ộ t đ o ạ n m ã l ạ c h ậ u, b ạ n đừ ng ngh ĩ r ằ ng c ầ n ph ả i thay th ế n ó . Ch ỉ c ầ n ch ắ c ch ắ n r ằ ng b ạ n s ẽ kh ô ng d ù ng n ó cho c á c ch ươ ng tr ì nh vi ế t trong t ươ ng lai. M ộ t th í d ụ v ề c ấ u tr ú c l ỗ i th ờ i, m à nhi ề u ng ườ i c ó v ẻ c ố n ắ m l ấ y, l à c ú ph á p beginControlStructure beginControlStructure beginControlStructure beginControlStructure endControlStructure endControlStructure endControlStructure endControlStructure ; HTML HTML HTML HTML < html > < head > < title >%%PAGE_TITLE%%< /title > < /head > < body %%BODY_PROPERTIES%% > < h1 >%%PAGE_TITLE%%< /h1 > < table border =" 0 " cellpadding=" 0 " cellspacing=" 0 "> < tr > < td width =" 25% ">%%PAGE_LINKS%%< /td > < td >%%PAGE_CONTENT%%< /td > < /tr > < /table > < /body > < /html > <? PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 9 9 9 9 Dormitory 204.B5 18:20 PM April 7, 2006 Đâ y l à m ộ t th ó i quen x ấ u v ì  N ó kh ô ng đượ c d ù ng r ộ ng r ã i, cho n ê n nhi ề u ng ườ i h ọ c s ẽ b ị l ẫ n l ộ n gi ữ a hai c ú ph á p  N ó kh ô ng t ươ ng th í ch v ớ i ng ô n ng ữ kh á c, ngh ĩ a l à n ó tr ở n ê n kh ó đọ c đố i v ớ i nh ữ ng ng ườ i trong giai đ o ạ n qu á độ (m ớ i chuy ể n t ừ m ộ t ng ô n ng ữ n à o đó sang PHP)  Quan tr ọ ng nh ấ t, l à m ộ t ng à y n à o đó t í nh n ă ng n à y s ẽ b ị xo á x ổ , b ắ t bu ộ c b ạ n ph ả i vi ế t l ạ i to à n b ộ m ã c ó d ù ng n ó . D ấ u ngo ặ c nh ọ n lu ô n lu ô n l à m ộ t ph ầ n c ủ a ng ô n ng ữ PHP. Ở tr ê n ch ỉ l à m ộ t th í d ụ v ề c ấ u tr ú c l ỗ i th ờ i. N ó c ò n nhi ề u n ữ a. Nh ư m ộ t quy t ắ c, b ạ n n ê n theo nh ữ ng c á c vi ế t trong t à i li ệ u PHP. H ầ u h ế t n ó đượ c c ậ p nh ậ t m ớ i. N ó c ũ ng d ù ng c á c h à m m ớ i nh ấ t c ủ a PHP trong th í d ụ c ủ a m ì nh. N ê n th ườ ng xuy ê n ki ể m tra t à i li ệ u khi b ạ n c ó ý mu ố n m ở r ộ ng t í nh n ă ng n à o đó c ủ a PHP. Theo c á ch n à y, b ạ n s ẽ kh ô ng ph ả i vi ế t l ạ i c á c h à m c ó s ẵ n. T T T T ổ ổ ổ ổ ng ng ng ng k k k k ế ế ế ế t t t t Trong b à i n à y b ạ n đã đ i qua 7 tr ê n t ổ ng s ố 21 l ỗ i m à l ậ p tr ì nh vi ê n PHP m ắ c ph ả i. Nh ữ ng l ỗ i gi á o khoa n à y bao g ồ m:     S S S S ử ử ử ử d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai h h h h à à à à m m m m printf() printf() printf() printf()     Á Á Á Á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng ng ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a a a a     Thi Thi Thi Thi ế ế ế ế u u u u t t t t à à à à i i i i li li li li ệ ệ ệ ệ u u u u trong trong trong trong m m m m ã ã ã ã ngu ngu ngu ngu ồ ồ ồ ồ n n n n     D D D D ù ù ù ù ng ng ng ng qu qu qu qu á á á á nhi nhi nhi nhi ề ề ề ề u u u u bi bi bi bi ế ế ế ế n n n n t t t t ạ ạ ạ ạ m m m m     Vi Vi Vi Vi ế ế ế ế t t t t l l l l ạ ạ ạ ạ i i i i c c c c á á á á c c c c h h h h à à à à m m m m c c c c ó ó ó ó s s s s ẵ ẵ ẵ ẵ n n n n     Kh Kh Kh Kh ô ô ô ô ng ng ng ng t t t t á á á á ch ch ch ch bi bi bi bi ệ ệ ệ ệ t t t t ph ph ph ph ầ ầ ầ ầ n n n n kh kh kh kh á á á á ch/ch ch/ch ch/ch ch/ch ủ ủ ủ ủ     D D D D ù ù ù ù ng ng ng ng c c c c á á á á c c c c c c c c ấ ấ ấ ấ u u u u tr tr tr tr ú ú ú ú c c c c l l l l ỗ ỗ ỗ ỗ i i i i th th th th ờ ờ ờ ờ i i i i // Bad/Outdated Practice while ( 1 ): print "5" ; if ( $idx ++ == 5 ): break; endif; endwhile; // Better Practice // (the code could be optimized though) while ( 1 ) { print "5" ; if ( $idx ++ == 5 ) { break; } } ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 10 10 10 10 Dormitory 204.B5 18:20 PM April 7, 2006 PH Ầ N 2 – L Ỗ I NGHI Ê M TR Ọ NG             14. 14. 14. 14. Kh Kh Kh Kh ô ô ô ô ng ng ng ng tu tu tu tu â â â â n n n n th th th th ủ ủ ủ ủ c c c c á á á á c c c c quy quy quy quy ướ ướ ướ ướ c c c c đặ đặ đặ đặ t t t t t t t t ê ê ê ê n n n n M ộ t trong nh ữ ng l ỗ i nghi ê m tr ọ ng m à ng ườ i l ậ p tr ì nh c ó th ể ph ạ m ph ả i l à đị nh ngh ĩ a m ộ t quy ướ c đặ t t ê n t ồ i. T ô i đã ti ế p qu ả n nhi ề u d ự á n m à trong đó t ô i ph ả i b ỏ ra r ấ t nhi ề u th ờ i gi ờ ch ỉ để hi ể u ch ươ ng tr ì nh, do l ậ p tr ì nh vi ê n đặ t t ê n c á c bi ế n l à $fred v à $barney thay cho $email v à $name. T ô i đ ang đề c ậ p đế n m ộ t d ự á n m à ng ườ i l ậ p tr ì nh c ũ đã quy ế t đị nh đư a v à o to à n b ộ ch ươ ng tr ì nh m ộ t ki ể u đặ t t ê n k ì l ạ (a Flinstones naming theme), kh ô ng ph ả i t ô i đù a đâ u. C á ch b ạ n đặ t t ê n bi ế n v à h à m l à trung t â m c ủ a vi ệ c x â y d ự ng m ộ t ch ươ ng tr ì nh d ễ đọ c. C ó nhi ề u l ậ p tr ì nh vi ê n ph ạ m l ỗ i khi đặ t t ê n bi ế n v à h à m m à n ó :  qu á d à i ho ặ c qu á ng ắ n  kh ô ng li ê n quan đế n ng ữ c ả nh  kh ô ng để ý đế n c á ch-vi ế t-ph â n-bi ệ t (case sensitivity)  ng ă n c ả n kh ả n ă ng d ễ đọ c ( đặ c bi ệ t l à c á c h à m) 1. 1. 1. 1. Đặ Đặ Đặ Đặ t t t t t t t t ê ê ê ê n n n n bi bi bi bi ế ế ế ế n n n n 1.1. 1.1. 1.1. 1.1. C C C C á á á á ch ch ch ch vi vi vi vi ế ế ế ế t t t t ph ph ph ph â â â â n n n n bi bi bi bi ệ ệ ệ ệ t t t t Trong PHP, t ê n bi ế n c ó c á ch vi ế t ph â n bi ệ t, ngh ĩ a l à $user v à $User l à ho à n to à n kh á c nhau. V à i ng ườ i d ù ng l ợ i d ụ ng đ i ể m n à y để đặ t c á c bi ê n c ù ng t ê n nh ư ng kh á c c á ch vi ế t. Đâ y l à m ộ t th ó i quen t ồ i t ệ . C á ch vi ế t kh ô ng bao gi ờ n ê n d ù ng để ph â n bi ệ t c á c bi ế n kh á c nhau. M ỗ i t ê n bi ế n, trong c ù ng t ầ m v ự c (scope), n ê n c ó l à tuy ệ t đố i duy nh ấ t. 1.2. 1.2. 1.2. 1.2. T T T T ê ê ê ê n n n n qu qu qu qu á á á á ng ng ng ng ắ ắ ắ ắ n n n n Nhi ề u ng ườ i s ử d ụ ng nh ữ ng ch ữ vi ế t t ắ t đầ u (cryptic acronym) b í ẩ n cho c á c bi ế n c ủ a h ọ , để r ồ i sau n à y h ố i ti ế c v ì qu ê n m ấ t h ọ đã mu ố n á m ch ỉ đ i ề u g ì khi đó . T ê n bi ế n n ê n m ô t ả n ộ i dung n ó (s ẽ ) ch ứ a, d ù ng nguy ê n t ừ ho ặ c nh ữ ng ch ữ vi ế t t ắ t c ó th ể hi ể u đượ c . 1.3. 1.3. 1.3. 1.3. T T T T ê ê ê ê n n n n qu qu qu qu á á á á d d d d à à à à i i i i Ở kh í a c ạ nh kh á c, v à i ng ườ i l ạ i s ử d ụ ng t ê n bi ế n qu á d à i. N ó i chung, t ê n bi ế n kh ô ng n ê n d à i qu á hai t ừ . Hai t ừ c ó th ể đượ c t á ch bi ệ t b ằ ng d ấ u ph â n c á ch "_" ho ặ c l à vi ế t hoa ch ữ đầ u c ủ a t ừ th ứ hai. 1.4. 1.4. 1.4. 1.4. Th Th Th Th ó ó ó ó i i i i quen quen quen quen t t t t ố ố ố ố t t t t D ướ i đâ y l à nh ữ ng th í d ụ t ố t v ề t ê n bi ế n $username = 'phanthanhkieu' ; $password = 'bimat' ; $teachers = array ( 'Sadlon' , 'Lane' , 'Patterson' , 'Perry' , 'Sandler' , 'Mendick' , 'Zung' ); foreach ( $teachers as $teacher ); [...]... làm thế nào để lập trình PHP Vài nơi tốt nhất là  Zend.com bản gốc của bài viết này là ở đó  Professional PHP một trong những sách toàn diện tốt nhất về PHP, tốt cho cả lập trình viên và kh ông -lập trình viên  Web Application Development with PHP Một quy ển sách tuyệt vời dạy bạn cả cách phát triển web lẫn vài tính năng cao cấp của PHP Bao gồm các tài liệu chính thức về Zend API  The PHP Developer's... April 7, 2006 22 PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writting of Sterling Hughes Kh ông d ùng các hàm sẵn có Nhi ều lập trình viên PHP có nền tảng C có vẻ không nhận ra rằng PHP cung cấp nhiều hàm sẵn có giúp thay thế các đoạn mã dài Nếu bạn đến với PHP từ C, tôi khuy ên bạn nên đọc qua tài liệu trước khi viết một khối lệnh để xem PHP có sẵn hàm... việc với các chuỗi lớn 9 Lập tr ình PHP nh ư các ng ôn ng ữ kh ác trì như ngô ngữ Nhi ều người bắt đầu PHP sau khi đã thuần thục một ngôn ngữ khác như Perl, C, Java hay ASP Làm như vậy, họ cũng mang theo những mô hình mà có thể không luôn luôn được dùng bởi PHP Kh ông may thay, vài cá nhân trong số hày kh ông chịu bỏ thời gian để học cách lập trình PHP theo cách phù hợp với PHP Thay vào đó, họ thích PHP. .. sai SQL: kh ô ng lấy nh ững gì b ạn cần khô nhữ NGUYENANH KHOA– Class27K0A – DepartmentOf Information Technology Dormitory 204.B5 18:20 PM April 7, 2006 14 PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writting of Sterling Hughes Nh ư là vấn đề của thực hành, đơn giản là sẽ sai lầm khi dùng PHP xử lí mọi dòng của CSDL Tôi đã bắt gặp người ta dùng PHP. .. trong PHP (do tui - Sterling Hughes - viết cùng Andrei Zmievski) 8 Kh ông nh ận th ức đầy đủ v ề bảo mật nhậ thứ đầy Nh ững người dùng kh ông phải lúc nào cũng làm việc với hệ thống của chúng ta Với tư cách là lập trình viên, trách nhiệm của chúng ta là thiết kế một hệ thống an toàn, dễ chịu có thể làm việc được chung với lỗi của người dùng Khi thiết kế hệ thống, bạn phải đặt mình vào vị trí người. .. 2 Bộ qu ản lí l ỗi tu ỳ chỉ nh quả tuỳ chỉ PHP thường hi ển thị các lỗi thực thi (execution errors) ra trình duy ệt, ngăn bạn xoá (suppress) hoặc bắt (capture) nó Tuy nhi ên, với PHP4 bạn đã có thể bắt lỗi bằng hàm set_error_handler() Hàm set_error_handler() có thể được dùng để ghi lại các lỗi xảy ra với chương trình của bạn Thay vì làm phi ền người dùng với các thông báo lỗi, bạn có thể ghi lại cho... 25 PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writting of Sterling Hughes PHẦN 3: 7 LỖI CHẾT NGƯỜI  7 Chép và dán: kh ông phải h ướng đ i tốt Ché khô phả ướng Tôi đã gặp nhiều tay lập trình mới vào nghề đi chép những đoạn mã (thí dụ như là kiểm tra địa chỉ e-mail, gửi e-mail, lấy giá trị từ form để soạn e-mail) Họ thường dán chúng vào chương trình. .. khi nào đoạn mã ấy đọc được, nhất quán với logic chương trình của bạn, và không có lỗi, thì mới nên sao chép nó Tiến hành lúc này sẽ giúp bạn chỉnh sửa nó phù hợp với các phần còn lại của chương trình một cách thoải mái hơn 2 C ác thư viện r ất tốt thư việ Chỉ dùng các thư viện PHP từ các ngu ồn tin cậy như PEAR hoặc kho các lớp của PHP (PHP Classes Repository) Với các gói API có sẵn, việc dùng các... 2006 17 PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writting of Sterling Hughes Luôn đảm bảo rằng, khi bạn làm việc với các tiến trình hoặc tập tin ngoài PHP, mọi thứ đều vận hành đúng Một thí dụ tuyệt vời là việc ki ểm tra đầu ra của một lời gọi hệ thống khi dùng hàm sql_connect() Xác nhận đầu ra để ki ểm tra liên kết đến CSDL là đúng Làm sai điều... thiết kế chương trình có kh ả năng sửa chữa lỗi này và lấp các lỗ hổng bảo mật Một điều khác cũng quan trọng là: dù xảy ra hư hỏng hay hệ thống bị tấn công là do lỗi của người dùng, chính bạn là người chịu trách nhi ệm nếu bạn đã viết chương trình có nhi ều lỗi hay thiếu những bước ki ểm tra cần thiết dẫn đến hỏng dữ liệu Thí dụ, tôi đã thấy nhi ều chương trình không dùng hàm đã có của PHP mail() vốn . ng sai sai sai sai h h h h à à à à m m m m printf() printf() printf() printf()     Á Á Á Á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng. th ể xem l à ngu ồ n g ố c c ủ a nh ữ ng sai l ầ m s ơ đẳ ng. PH Ầ N 1: 7 L Ỗ I GI Á O KHOA    21. 21. 21. 21. S S S S ử ử ử ử d d d d ụ ụ ụ ụ ng ng

Ngày đăng: 13/12/2013, 04:15

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan