... dấu nháy đơ n. Giáo trình lập trình Web với PHP& amp;MYSQL Version 1.0 Biên soạn: Lý Trần Thái Học 4 CHƯƠNG 2: THIẾT LẬP WEBSERVER I. Thiết lập webserver với Apache: Web server phổ biến ... 24 CHƯƠNG 8: QUẢN TRỊ PHPMYADMIN 29 CHƯƠNG 9: LẬP TRÌNH FORM 33 CHƯƠNG 10: LẬP TRÌNH KẾT NỐI CSDL MYSQL 37 CHƯƠNG 11: SESSION & COOKIE 39 Giáo trình lập trình Web với PHP& amp;MYSQL Version ... dụng MySQL) Giáo trình lập trình Web với PHP& amp;MYSQL Version 1.0 Biên soạn: Lý Trần Thái Học 10 Bước 7: Mở trình duyệt web Internet Explorer gõ vào http://localhost/phpinfo .php để kiểm...
Ngày tải lên: 06/09/2012, 14:50
Tài liệu Giáo trình: Lập trình PHP pdf
... while c ầ n thi ế t trong tr ườ ng h ợ p n à y v ì khi đó , b ộ đế m c ủ a CSDL đã t ă ng l ê n v à chuy ể n sang d ò ng k ế ti ế p . Do đó , b ạ n ph ả i x ử l í (l ệ nh do )d ò ng đầ u ti ê n v ì n ó đã đượ c l ấ y. C á c l ệ nh ti ế p theo l ấ y c á c d ò ng k ế , v à c ứ th ế . 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 26 26 26 26 Dormitory 204.B5 18:20 PM April 7, 2006 PH Ầ N 3: 7 L Ỗ I CH Ế T NG ƯỜ I 7. 7. 7. 7. Ch Ch Ch Ch é é é é p p p p v v v v à à à à d d d d á á á á n: n: n: n: kh kh kh kh ô ô ô ô ng ng ng ng ph ph ph ph ả ả ả ả i i i i h h h h ướ ướ ướ ướ ng ng ng ng đ đ đ đ i i i i t t t t ố ố ố ố t t t t 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 c ủ a m ì nh v à r ồ i k ế t qu ả l à m ộ t đố ng nh ữ ng c â u l ệ nh g ử i form kh ô ng an to à n. D ù r ằ ng m ộ t đ o ạ n m ã ch ạ y đượ c trong nh ữ ng đ i ề u ki ệ n t ố i ư u, n ó th ườ ng g ặ p l ỗ i trong b ấ t k ì s ự ki ể m tra "m ã t ố t" n à o C ô ng vi ệ c ch ắ p v á s ẽ kh kh kh kh ô ô ô ô ng ng ng ng c ó c á c ư u đ i ể m sau: M M M M ở ở ở ở r r r r ộ ộ ộ ộ ng ng ng ng đượ đượ đượ đượ c: c: c: c: đ o ạ n m ã tr ô ng nh ư c á c m ả nh ri ê ng r ẽ r á p v á v à o nhau. N ế u nh ờ m ộ t l ậ p tr ì nh vi ê n c ó kinh nghi ệ m s ử a ch ươ ng tr ì nh c ủ a b ạ n, h ọ th ườ ng th í ch vi ế t l ạ i to à n b ộ Đ o ạ n m ã kh ô ng đọ c đượ c s ẽ kh ô ng m ở r ộ ng đượ c. An An An An to to to to à à à à n: n: n: n: b ạ n c ó th ể đ ang ch é p m ã c ủ a ng ườ i kh á c v à o ch ươ ng tr ì nh c ủ a m ì nh m à l ạ i kh ô ng hi ể u r õ r à ng đ o ạ n m ã đó . H ã y t ưở ng t ưở ng xem. N ế u đ o ạ n m ã đó c ó m ộ t l ỗ i l à m xo á to à n b ộ đĩ a c ủ a b ạ n H ơ n n ữ a, c ù ng m ộ t đ o ạ n m ã th ì t í nh an to à n kh ô ng gi ố ng nhau tr ê n c á c h ệ th ố ng kh á c nhau. Cu ố i c ù ng, ch ươ ng tr ì nh c ủ a b ạ n s ẽ k ế th ừ a l ỗ i c ủ a ng ườ i kh á c. Nhanh: Nhanh: Nhanh: Nhanh: khi c ắ t d á n c á c đ o ạ n m ã , k ế t qu ả th ườ ng s ẽ ch ạ y kh ô ng nhanh, v ì ch ú ng kh ô ng c ó m ộ t ti ế n tr ì nh chung h ợ p l í ( đâ y l à đ i ề u quan tr ọ ng nh ấ t khi vi ế t c á c ch ươ ng tr ì nh nhanh) 1. 1. 1. 1. L L L L à à à à m m m m đú đú đú đú ng ng ng ng ph ph ph ph ươ ươ ươ ươ ng ng ng ng ph ph ph ph á á á á p: p: p: p: t t t t ì ì ì ì m m m m hi hi hi hi ể ể ể ể u u u u tr tr tr tr ướ ướ ướ ướ c, c, c, c, sao sao sao sao ch ch ch ch é é é é p p p p sau sau sau sau Nghi ê n c ứ u m ã c ủ a ng ườ i kh á c k ĩ l ưỡ ng tr ướ c khi sao ch é p. Ph â n t í ch xem n ó l à m g ì . Ch ỉ 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. 2. 2. 2. C C C C á á á á c c c c th th th th ư ư ư ư vi vi vi vi ệ ệ ệ ệ n n n n r r r r ấ ấ ấ ấ t t t t t t t t ố ố ố ố t t t t 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 h à m c ủ a n ó c ũ ng kh ô ng th à nh v ấ n đề . Th ự c ra, n ế u b ạ n t ì m đượ c m ộ t th ư vi ệ n vi ế t s ẵ n b ở i m ộ t ngu ồ n tin c ậ y, th ì th ườ ng n ó s ẽ l à m ộ t l ự a ch ọ n t ố t để d ù ng cho ch ươ ng tr ì nh (thay v ì t ự vi ế t l ấ y). 6. 6. 6. 6. Kh Kh Kh Kh ô ô ô ô ng ng ng ng c c c c ó ó ó ó đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i ( ( ( ( guidelines ) ) ) ) cho cho cho cho đồ đồ đồ đồ á á á á n n n n M ộ t l ầ n khi t ô i m ớ i b ắ t đầ u l ậ p tr ì nh, t ô i l à m vi ệ c tr ê n m ộ t đồ á n kh á c ơ b ả n (v ớ i Perl) c ù ng 3 l ậ p t ì nh vi ê n kh á c. V ì t ô i c ò n tr ẻ (v à kh ô ng ph ả i tr ưở ng nh ó m), ch ú ng t ô i kh ô ng c ó đườ ng l ố i vi ế t m ã cho đồ á n. M ỗ i ng ườ i đượ c giao m ộ t ph ầ n c ô ng vi ệ c, v à l à m ri ê ng r ẽ . Khi ch ú ng t ô i nh ậ p chung l ạ i để ch ạ y ch ươ ng tr ì nh cu ố i c ù ng, m ỗ i ph ầ n c ủ a đồ á n nh ì n kh á c h ẳ n nhau 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 23 23 23 23 Dormitory 204.B5 18:20 PM April 7, 2006 Kh Kh Kh Kh ô ô ô ô ng ng ng ng d d d d ù ù ù ù ng ng ng ng c c c c á á á á c c c c h h h h à à à à m m m m s s s s ẵ ẵ ẵ ẵ n n n n c c c 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 n à o gi ú p cu ộ c s ố n g c ủ a b ạ n d ễ d à ng h ơ n kh ô ng. Đổ Đổ Đổ Đổ i i i i t t t t ê ê ê ê n n n n c c c c á á á á c c c c h h h h à à à à m m m m PHP PHP PHP PHP đã đã đã đã c c c c ó ó ó ó T ô i đã th ấ y ng ườ i ta đổ i t ê n c á c h à m đã c ó c ủ a PHP ch ỉ để gi ú p h ọ d ễ nh ớ h ơ n. Đ i ề u n à y kh ô ng ch ỉ l à m ch ậ m ch ươ ng tr ì nh, m à l à m cho đ o ạ n m ã kh ó đọ c h ơ n. D D D D ù ù ù ù ng ng ng ng h h h h ướ ướ ướ ướ ng ng ng ng đố đố đố đố i i i i t t t t ượ ượ ượ ượ ng ng ng ng qu qu qu qu á á á á m m m m ứ ứ ứ ứ c c c c PHP kh ô ng ph ả i l à m ộ t ng ô n ng ữ H Đ T, d ù n ó cung c ấ p c á c t í nh n ă ng H Đ T. B ạ n c ầ n lu ô n nh ậ n th ứ c r ằ ng H Đ T trong PHP s ẽ l à m ch ậ m đá ng k ể ch ươ ng tr ì nh. 1. 1. 1. 1. L L L L ấ ấ ấ ấ y y y y th th th th ô ô ô ô ng ng ng ng tin tin tin tin ở ở ở ở đâ đâ đâ đâ u? u? u? u? May m ắ n l à c ó r ấ t nhi ề u th ô ng tin v ề vi ệ c 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 Cookbook M ộ t quy ể n s á ch thi ê n v ề l ờ i gi ả i đá p cho c á c v ấ n đề g ặ p ph ả i trong PHP (do tui - Sterling Hughes - vi ế t c ù ng Andrei Zmievski) 8. 8. 8. 8. Kh Kh Kh Kh ô ô ô ô ng ng ng ng nh nh nh nh ậ ậ ậ ậ n n n n th th th th ứ ứ ứ ứ c c c c đầ đầ đầ đầ y y y y đủ đủ đủ đủ v v v v ề ề ề ề b b b b ả ả ả ả o o o o m m m m ậ ậ ậ ậ t t t t 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 d ù ng. Xem x é t nh ữ ng ch ỗ h ọ c ó th ể g ặ p l ỗ i v à t ì m ki ế m nh ữ ng l ỗ h ổ ng b ả o m ậ t ti ề m t à ng. R ồ i b ạ n 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 an to à n m à l ạ i đ i d ù ng sendmail th ô ng qua popen() . N ó c ó th ể d ẫ n đế n nhi ề u l ỗ h ổ ng b ả o m ậ t (th í d ụ nh ư /etc/passwd đượ c g ử i đế n ng ườ i d ù ng cu ố i). C ó v à i n ơ i th ườ ng x ả y ra c á c s ự c ố v ề b ả o m ậ t, ho ặ c ti ề m n ă ng g â y ra h ỏ ng d ữ li ệ u r ấ t l ớ n: Th ự c hi ệ n l ờ i g ọ i h ệ th ố ng. T ô i kh ô ng c ó c á ch n à o di ễ n t ả đượ c m ứ c độ nguy hi ể m c ủ a v ấ n đề n à y. Lu ô n đả m b ả o r ằ ng m ọ i d ữ li ệ u ng ườ i d ù ng đư a v à o l à an to à n tr ướ c khi chuy ể n n ó cho m ộ t l ờ i g ọ i h ệ th ố ng. ĐỪ ĐỪ ĐỪ ĐỪ NG NG NG NG BAO BAO BAO BAO GI GI GI GI Ờ Ờ Ờ Ờ TIN TIN TIN TIN NG NG NG NG ƯỜ ƯỜ ƯỜ ƯỜ I I I I D D D D Ù Ù Ù Ù NG NG NG NG M M M M Ộ Ộ Ộ Ộ T T T T C C C C Á Á Á Á CH CH CH CH M M M M Ù Ù Ù Ù QU QU QU QU Á Á Á Á NG NG NG NG KHI KHI KHI KHI ĐƯ ĐƯ ĐƯ ĐƯ A A A A D D D D Ữ Ữ Ữ Ữ LI LI LI LI Ệ Ệ Ệ Ệ U U U U C C C C Ủ Ủ Ủ Ủ A A A A H H H H Ọ Ọ Ọ Ọ V V V V À À À À O O O O L L L L Ờ Ờ Ờ Ờ I I I I G G G G Ọ Ọ Ọ Ọ I I I I H H H H Ệ Ệ Ệ Ệ TH TH TH TH Ố Ố Ố Ố NG NG NG NG M M M M À À À À KH KH KH KH Ô Ô Ô Ô NG NG NG NG KI KI KI KI Ể Ể Ể Ể M M M M TRA TRA TRA TRA TR TR TR TR ƯỚ ƯỚ ƯỚ ƯỚ C C C C . Khi đă ng k í ng ườ i d ù ng. N ế u b ạ n tr ô ng mong c ó k ế t qu ả ch í nh x á c, lu ô n ki ể m tra v à đả m b ả o b ả n đă ng k í đượ c ki ể m tra nh ữ ng ch ỗ c ầ n thi ế t. Tr ướ c ti ê n, c ó nhi ề u c á ch để ki ể m tra m ộ t đị a ch ỉ e-mail h ợ p l ệ . H ơ n n ữ a, b ạ n n ê n ki ể m tra tu ổ i c ủ a ng ườ i d ù ng c ó n ằ m trong ph ạ m vi th í ch h ợ p kh ô ng. V ớ i m ộ t s ự suy r ộ ng, b ạ n c ó 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 25 25 25 25 Dormitory 204.B5 18:20 PM April 7, 2006 m ộ t nh ó m th ư t í n, hay trong m ộ t kho m ã ngu ồ n n à o đó ). Tuy nhi ê n, m ộ t bi ể u th ứ c ch í nh quy kh ô ng đủ n ế u b ạ n mu ố n c ó k ế t qu ả ch í nh x á c. C ó v à i c á ch an to à n h ơ n m à b ạ n c ó th ể d ù ng: 2.1. 2.1. 2.1. 2.1. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra k k k k ế ế ế ế t t t t n n n n ố ố ố ố i i i i (socket (socket (socket (socket validation) validation) validation) validation) M ộ t c á ch để ki ể m đị nh đị a ch ỉ e-mail m à kh ô ng qu ấ y r ầ y tr ự c ti ế p đế n ng ườ i d ù ng l à t ạ o m ộ t k ế t n ố i đế n server nh ậ n đượ c trong đị a ch ỉ e-mail, sau đó t ì m t ê n đă ng k í c ủ a h ọ . 2.1.1. 2.1.1. 2.1.1. 2.1.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m Kh ô ng g â y b ấ t ti ệ n cho ng ườ i d ù ng v ì n ó đượ c ti ế n h à nh trong su ố t. Ph á t hi ệ n nhi ề u đị a ch ỉ ma m à bi ể u th ứ c ch í nh quy kh ô ng bi ế t (nh ư l à joe@fgsdh.com). 2.1.2. 2.1.2. 2.1.2. 2.1.2. Khuy Khuy Khuy Khuy ế ế ế ế t t t t đ đ đ đ i i i i ể ể ể ể m m m m Kh ô ng ph á t hi ệ n đượ c đị a ch ỉ b ị đá nh c ắ p. Th í d ụ , n ế u John Doe đư a đị a ch ỉ e- mail c ủ a t ô i (phanthanhkieu @php. net), m ọ i th ứ v ẫ n ti ế n h à nh b ì nh th ườ ng, d ù n ó l à đị a ch ỉ c ủ a t ô i ch ứ kh ô ng ph ả i c ủ a h ắ n ta. Ki ể m tra ch ậ m h ơ n bi ể u th ứ c ch í nh quy. Mail server c ủ a ng ườ i d ù ng c ó th ể t ạ m ng ư ng ho ạ t độ ng trong th ờ i gian ng ắ n, l à m cho m ộ t đị a ch ỉ e-mail h ợ p l ệ b ị t ừ ch ố i 2.2. 2.2. 2.2. 2.2. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra t t t t ươ ươ ươ ươ ng ng ng ng t t t t á á á á c c c c M ộ t c á ch kh á c để ki ể m đị nh đị a ch ỉ e-mail l à g ử i m ộ t kho á đặ c bi ệ t đế n h ộ p th ư ng ườ i d ù ng, v à b ắ t h ọ nh ậ p kho á đó để ti ế p t ụ c. Đ i ề u n à y đả m b ả o r ằ ng kh ô ng nh ữ ng đị a ch ỉ e-mail l à h ợ p l ệ , m à ng ườ i d ù ng c ó quy ề n truy xu ấ t v à o đị a ch ỉ đó . 2.2.1. 2.2.1. 2.2.1. 2.2.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m L à c á ch t ố t nh ấ t để ki ể m tra ng ườ i d ù ng c ó m ộ t đị a ch ỉ e-mail h ợ p l ệ 2.2.2. 2.2.2. 2.2.2. 2.2.2. Khuy Khuy Khuy Khuy ế ế ế ế t t t t đ đ đ đ i i i i ể ể ể ể m m m m Đò i h ỏ i ng ườ i d ù ng ph ả i ti ế n h à nh th ê m b ướ c ph ụ . Đ i ề u n à y qu ấ y r ầ y m ấ y ng ườ i c ó ý đị nh l à m phi ề n b ạ n. Gi ố ng nh ư m ọ i c á ch kh á c, n ó kh ô ng đả m b ả o đượ c ch ố ng- đá nh-l ừ a. Ng ườ i d ù ng c ó th ể t ạ o m ộ t đị a ch ỉ t ạ m ở Hotmail hay Netaddress v à sau 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 20 20 20 20 Dormitory 204.B5 18:20 PM April 7, 2006 T ạ o m ộ t API T ạ o m ộ t tr ì nh t ự t ê n Nh ó m c á c h à m li ê n quan v à o m ộ t t ậ p tin 1.1. 1.1. 1.1. 1.1. T T T T ạ ạ ạ ạ o o o o m m m m ộ ộ ộ ộ t t t t API API API API Á p d ụ ng 3 l ớ p cho ch ươ ng tr ì nh c ủ a b ạ n: Th ứ nh ấ t, c á c h à m th ự c s ự th ự c hi ệ n c ô ng vi ệ c c ủ a b ạ n Th ứ hai, m ộ t h à m API. Đâ y l à h à m gi ú p b ạ n x â y d ự ng c á c ch ươ ng tr ì nh đặ c th ù Ch ươ ng tr ì nh MortgageRate .php < ?php // The internal functions are layer 1 // Internal function to calculate the correct // interest rate to be used given the amount per month // and the time it is to be paid in function _mort_find_interest_rate ( $total ) { if ( $total < 30000 ) return ( 7.4 ); elseif ( $total > 30000 ) return ( 3.2 ); elseif ( $total > 50000 ) return ( 2.5 ); else return ( 1.7 ); } // The API is layer 2 // double calculate_mortgage_rate (int money, int time, int month ) // Calculate the mortgage rate given the // the total money, time its paid over and // the intervals function calculate_mortgage_rate ( $money , $time , $month ) { $rate = _mort_find_interest_rate ( $money ) / 100 ; $money /= ( $time / $month ); return ( $rate * $money ) + $money ; } ?> CalcMortgage .php < ?php // The actual application is layer 3 // $money, $time and $period are submitted // from a form include_once 'MortgageRate .php& apos; ; $price = calculate_mortgage_rate ( $money , $time , $period ); print "Your $period month cost is $price" ; ?> 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 24 24 24 24 Dormitory 204.B5 18:20 PM April 7, 2006 th ể kh ẳ ng đị nh kh á ch ắ c ch ắ n r ằ ng kh ô ng c ó m ộ t ng ườ i 200 tu ổ i n à o c ó kh ả n ă ng d ù ng m á y vi t í nh. Khi ch ấ p nh ậ n th ẻ t í n d ụ ng. M ộ t s ố l ậ p tr ì nh vi ê n ch ỉ d ù ng nh ữ ng thu ậ t to á n đơ n gi ả n m à c ó th ể d ễ d à ng b ị đá nh l ừ a khi th ự c hi ệ n ki ế m tra th ẻ t í n d ụ ng. Ch ỉ ch ấ p nh ậ n th ẻ c ủ a c á c c ô ng ty l ớ n để ki ể m tra t í nh h ợ p l ệ c ủ a s ố th ẻ tr ướ c khi ch ấ p nh ậ n th ẻ c ủ a ng ườ i d ù ng. ĐỪ ĐỪ ĐỪ ĐỪ NG NG NG NG BAO BAO BAO BAO GI GI GI GI Ờ Ờ Ờ Ờ TIN TIN TIN TIN T T T T ƯỞ ƯỞ ƯỞ ƯỞ NG NG NG NG M M M M Ộ Ộ Ộ Ộ T T T T THU THU THU THU Ậ Ậ Ậ Ậ T T T T TO TO TO TO Á Á Á Á N N N N 1. 1. 1. 1. B B B B ả ả ả ả o o o o m m m m ậ ậ ậ ậ t t t t c c c c ủ ủ ủ ủ a a a a l l l l ờ ờ ờ ờ i i i i g g g g ọ ọ ọ ọ i i i i h h h h ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng M ỗ i khi b ạ n đư a d ữ li ệ u c ủ a ng ườ i d ù ng v à o l ờ i g ọ i h ệ th ố ng, b ạ n c ầ n t ỉ nh t á o ki ể m tra d ữ li ệ u đó . Đả m b ả o r ằ ng kh ô ng c ó g ì nguy hi ể m n ằ m trong d ữ li ệ u đó c ó th ể l ừ a ph ỉ nh h ệ th ố ng th ự c hi ệ n nh ữ ng l ệ nh kh ô ng mong mu ố n. PHP cung c ấ p m ộ t h à m l à m đ i ề u đó : EscapeShellCmd() B ấ t c ứ khi n à o b ạ n chuy ể n m ộ t l ệ nh c ó ch ứ a d ữ li ệ u nh ạ y c ả m, tr ố n tho á t d ữ li ệ u đó b ằ ng h à m EscapeShellCmd EscapeShellCmd EscapeShellCmd EscapeShellCmd (): Tr ố n tho á t (escaping) d ữ li ệ u c ó ngh ĩ a l à th ê m d ấ u s ổ ng ượ c (backslash \) tr ướ c k í t ự c ó th ể l ừ a ph ì nh h ệ th ố ng (ch í nh x á c l à c á c k í t ự #&;?'\"|*?~<>^()[]{}$\\\x0A\xFF ). M M M M ã ã ã ã HTML HTML HTML HTML < html > < head > < title >Name Lookup< /title > < /head > < body > < h1 >Name Lookup< /h1 > < ?php if ($name) { system (EscapeShellCmd ("lookup $name")); print " nn"; } ?> < form action =" <[color=blue] ?php print $PHP_ SELF; ?>[/color] " method=" GET "> Enter a name to lookup: < input type =" text " name=" name "> < input type =" submit " value=" Lookup Name "> < /form > < /body > < /html > D ù EscapeShellCmd() l à m ộ t h à m t ố t để ki ể m tra l ệ nh, b ạ n v ẫ n n ê n th ử v à th ự c hi ệ n c á c ki ể m tra đặ c th ù ph ụ thu ộ c v à o lo ạ i d ữ li ệ u. H à m EscapeShellCmd() s ẽ kh ô ng ki ể m tra t í nh đú ng đắ n c ủ a d ữ li ệ u đượ c đệ tr ì nh, n ó s ẽ ch ỉ ng ă n c ả n ng ườ i d ù ng l à m c á c vi ệ c k h ô ng đượ c ph é p. 1.1. 1.1. 1.1. 1.1. Đ Đ Đ Đ i i i i xa xa xa xa h h h h ơ ơ ơ ơ n n n n m m m m ộ ộ ộ ộ t t t t b b b b ướ ướ ướ ướ c c c c Nh ư m ộ t quy lu ậ t, n ê n ki ể m tra c á c k í t ự đượ c ph é p h ơ n l à ki ể m c á c k í t ự kh ô ng đượ c ph é p . Th í d ụ , đả m b ả o r ằ ng $name ch ỉ ch ứ a c á c k í t ự ch ữ v à s ố (alphanumeric characters). B ằ ng c á ch n à y, r ấ t kh ó để khai th á c l ỗ h ổ ng trong h ệ th ố ng c ủ a b ạ n. 2. 2. 2. 2. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra đị đị đị đị a a a a ch ch ch ch ỉ ỉ ỉ ỉ e-mail e-mail e-mail e-mail M ộ t trong nh ữ ng h ì nh th ứ c ki ể m tra ph ổ bi ế n nh ấ t l à xem m ộ t đị a ch ỉ e-mail c ó h ợ p l ệ kh ô ng. M ấ y tay m ớ i v à o ngh ề s ẽ ch ỉ d ù ng c á c bi ể u th ứ c ch í nh quy (m à h ọ l ượ m đượ c trong 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 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 14 14 14 14 Dormitory 204.B5 18:20 PM April 7, 2006 1.4. 1.4. 1.4. 1.4. Khi Khi Khi Khi m m m m à à à à DBMS DBMS DBMS DBMS c c c c ủ ủ ủ ủ a a a a b b b b ạ ạ ạ ạ n n n n kh kh kh kh ô ô ô ô ng ng ng ng h h h h ỗ ỗ ỗ ỗ tr tr tr tr ợ ợ ợ ợ sql_num_row() sql_num_row() sql_num_row() sql_num_row() V à i DBMS c ó th ể kh ô ng h ỗ tr ợ h à m sql_num_row(). T ô i xin chia s ẻ v ớ i b ạ n n ế u DBMS c ủ a b ạ n l à m ộ t trong s ố đó . B ạ n s ẽ ph ả i t ì m trong k ế t qu ả r ỗ ng b ằ ng c á ch l ấ y d ò ng. Tuy nhi ê n, trong tr ườ ng h ợ p n à y, n ó n ê n d ù ng m ộ t bi ế n boolean nh ư sau: < ?php $timthay = false ; while ( $mautin = sql_fetch_array ( $truyvan )){ $timthay = true ; } if (! $timthay ){ print "Loi!" ; } ?> 1.5. 1.5. 1.5. 1.5. L L L L ấ ấ ấ ấ y y y y k k k k ế ế ế ế t t t t qu qu qu qu ả ả ả ả : : : : h h h h ã ã ã ã y y y y ch ch ch ch ọ ọ ọ ọ n n n n c c c c á á á á ch ch ch ch c c c c ó ó ó ó í í í í ch ch ch ch V ấ n đề th ứ hai trong đ o ạ n m ã n à y l à n ó d ù ng sql_fetch_row() để l ấ y t ậ p k ế t qu ả . H à m sql_fetch_row() ch ỉ tr ả v ề m ả ng đá nh ch ỉ s ố , trong khi đó sql_fetch_array() tr ả v ề m ả ng đá nh ch ỉ s ố v à m ả ng d ù ng chu ỗ i. $mautin = sql_fetch_array ( $truyvan ); print $mautin [ 1 ]; // Cot thu 2 print $mautin [ name ]; // Ten cot Ch Ch Ch Ch ú ú ú ú ý ý ý ý : : : : C ó nhi ề u quy ướ c kh á c nhau v ề vi ệ c d ù ng d ấ u nh á y khi th ê m m ộ t đố i s ố ki ể u chu ỗ i. Trong th í d ụ v ề t ê n c ộ t ở tr ê n, v à su ố t b à i vi ế t n à y, n ó s ẽ đượ c b ỏ . T ừ quan đ i ể m c ủ a nh à ph á t tri ể n, h à m n à o c ó l ợ i h ơ n? M ả ng d ù ng chu ỗ i gi ú p cho ng ườ i đọ c hi ể u đượ c b ạ n đ ang l ấ y c á i g ì ch ỉ th ô ng qua vi ệ c đọ c m ã , nh ư th í d ụ đú ng d ướ i đâ y: < ?php if ( sql_num_rows ( $truyvan )<= 0 ) { print "Mot loi da xay ra: Khong co mau tin nao!" ; exit; } while ( $mautin = sql_fetch_array ( $truyvan )) { print "$mautin[name]: $mautin[phone_number]\n<br>\n" ; } ?> 1.6. 1.6. 1.6. 1.6. Khi Khi Khi Khi n n n n à à à à o o o o sql_fetch_row($truyvan) sql_fetch_row($truyvan) sql_fetch_row($truyvan) sql_fetch_row($truyvan) n n n n ê ê ê ê n n n n đượ đượ đượ đượ c c c c d d d d ù ù ù ù ng ng ng ng T ô i kh ô ng th ự c s ự l à fan c ủ a the sql_fetch_row(). Tuy nhi ê n, c ó m ộ t t ì nh hu ố ng m à d ù ng n ó kh ô ng gi ả m kh ả n ă ng d ễ đọ c: khi ng ườ i d ù ng đị nh ngh ĩ a c â u truy v ấ n. C á c th í d ụ cho đế n l ú c n à y đề u đề c ậ p đế n nh ữ ng c â u truy v ấ n đượ c bi ế t tr ướ c. Đô i khi b ạ n để cho ng ườ i d ù ng t ự đị nh ngh ĩ a c â u truy v ấ n. Tr ườ ng h ợ p n à y b ạ n s ẽ kh ô ng bi ế t c á c c ộ t trong k ế t qu ả . Do đó , d ù ng h à m sql_fetch_row() k è m v ớ i count() s ẽ x ử l í hi ệ u qu ả c á c c ộ t trong m ộ t h à ng: < ?php for ( $i = 0 ; $i < count ( $mautin ); $i ++){ print "Column" . ( $i + 1 ). $mautin [ $i ]. "\n<BR>\n" ; } ?> 2. 2. 2. 2. D D D D ù ù ù ù ng ng ng ng sai sai sai sai SQL: SQL: SQL: SQL: kh kh kh kh ô ô ô ô ng ng ng ng l l l l ấ ấ ấ ấ y y y y nh nh nh nh ữ ữ ữ ữ ng ng ng ng g g g g ì ì ì ì b b b b ạ ạ ạ ạ n n n n c c c c ầ ầ ầ ầ n n n 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 27 27 27 27 Dormitory 204.B5 18:20 PM April 7, 2006 1. 1. 1. 1. M M M M ộ ộ ộ ộ t t t t th th th th í í í í d d d d ụ ụ ụ ụ m m m m ẫ ẫ ẫ ẫ u u u u v v v v ề ề ề ề đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i 5. 5. 5. 5. Kh Kh Kh Kh ô ô ô ô ng ng ng ng xem xem xem xem x x x x é é é é t t t t l l l l ạ ạ ạ ạ i i i i m m m m ã ã ã ã 4. 4. 4. 4. V V V V á á á á l l l l ỗ ỗ ỗ ỗ i i i i khi khi khi khi thi thi thi thi ế ế ế ế t t t t k k k k ế ế ế ế 3. 3. 3. 3. Kh Kh Kh Kh ô ô ô ô ng ng ng ng quan quan quan quan t t t t â â â â m m m m đế đế đế đế n n n n ng ng ng ng ườ ườ ườ ườ i i i i d d d d ù ù ù ù ng ng ng ng khi khi khi khi thi thi thi thi ế ế ế ế t t t t k k k k ế ế ế ế 2. 2. 2. 2. Kh Kh Kh Kh ô ô ô ô ng ng ng ng theo theo theo theo s s s s á á á á t t t t k k k k ế ế ế ế ho ho ho ho ạ ạ ạ ạ ch ch ch ch c c c c ủ ủ ủ ủ a a a a đồ đồ đồ đồ á á á á n n n n 1. 1. 1. 1. Ph Ph Ph Ph í í í í th th th th ờ ờ ờ ờ i i i i gian gian gian gian 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 19 19 19 19 Dormitory 204.B5 18:20 PM April 7, 2006 Trong th í d ụ d ướ i, set_error_handler() đượ c d ù ng để ch ỉ đị nh h à m error_handler() l à b ộ qu ả n l í l ỗ i m ặ c đị nh. Khi m ộ t l ỗ i x ả y ra, error_handler() đượ c g ọ i v à h à m PHP error_log() đượ c d ù ng để ghi l ỗ i v à o t ậ p tin error_file. N ế u m à l ỗ i thu ộ c lo ạ i E_ERROR, ch ú ng ta s ẽ tho á t ch ươ ng tr ì nh v à in th ô ng b á o l ỗ i. < ?php // void error_handler(string type, string message, string file, int line) // Custom error handler, set by the set_error_handler() // function. function error_handler ( $type , $message , $file = __FILE__ , $line = __LINE__ ) { error_log ( "$message, $file, $line" , 3 , 'error_file' ); if ( $type & E_ERROR ) { print 'An error occurred, it has been logged and it will be addressed.' ; exit; } } set_error_handler ( 'error_handler' ); ?> 11. 11. 11. 11. L L L L ạ ạ ạ ạ m m m m d d d d ụ ụ ụ ụ ng ng ng ng H H H H ướ ướ ướ ướ ng ng ng ng đố đố đố đố i i i i t t t t ượ ượ ượ ượ ng ng ng ng (H (H (H (H Đ Đ Đ Đ T) T) T) T) M ô h ì nh h ướ ng đố i t ượ ng l à m ộ t kh á i ni ệ m tuy ệ t v ờ i. N ó c ó r ấ t nhi ề u l ợ i đ i ể m, m à đá ng ch ú ý nh ấ t l à kh ả n ă ng d ù ng l ạ i m ã d ễ d à ng. Tuy nhi ê , theo nh ư ch ú ng ta đượ c hi ể u: PHP kh ô ng ph ả i l à m ộ t ng ô n ng ữ H Đ T. M ặ c d ù PHP c ó m ộ t s ự h ỗ tr ợ đầ y đủ v ề H Đ T, n ó kh ô ng hi ệ u qu ả l ẫ n kh ô ng kh ô n ngoan n ế u d ù ng t í nh n ă ng H Đ T c ủ a n ó khi b ạ n c ó c á c h à m kh á c để đạ t đượ c c ù ng k ế t qu ả . L í do l à s ự h ỗ tr ợ H Đ T c ủ a PHP kh ô ng đượ c ph á t tri ể n m ạ nh. Trong khi c ó h ầ u h ế t c á c ph ầ n t ử ch í nh y ế u, PHP v ẫ n c ò n thi ế u v à i t í nh n ă ng cao c ấ p (nh ư c á c kh á i ni ệ m protected, private) m à m ộ t ng ô n ng ữ H Đ T th ự c s ự (th í d ụ nh ư C++ , Java) ph ả i c ó . C á c m ã h ỗ tr ợ H Đ T c ủ a PHP kh ô ng đượ c tinh ch ỉ nh v à c ũ ng kh ô ng hi ệ u qu ả . Ngh ĩ a l à n ế u b ạ n d ù ng m ô h ì nh H Đ T trong PHP, b ạ n c ó th ể l à m ch ậ m ch ươ ng tr ì nh đá ng k ể . N ó i chung, m ộ t ứ ng d ụ ng d ù ng H Đ T s ẽ ch ậ m đ i, c ũ ng nh ư l à b ạ n d ù ng eval() th ì s ẽ ch ậ m h ơ n l à d ù ng m ã b ì nh th ườ ng. Để minh ho ạ đầ y đủ h ơ n vi ệ c H Đ T c ó g ì đó kh ô ng t ố t, t ô i đã t ừ ng ph ả i d ù ng nh ữ ng t í nh n ă ng v à kh á i ni ệ m cao c ấ p c ủ a PHP, m ộ t v à i trong s ố đó th ậ m ch í ch ư a c ó t à i li ệ u ch ỉ d ẫ n. 1. 1. 1. 1. Ch Ch Ch Ch ú ú ú ú ng ng ng ng ta ta ta ta c c c c ó ó ó ó th th th th ể ể ể ể l l l l à à à à m m m m g g g g ì ì ì ì m m m m à à à à kh kh kh kh ô ô ô ô ng ng ng ng c c c c ầ ầ ầ ầ n n n n H H H H Đ Đ Đ Đ T? T? T? T? N ế u b ạ n chuy ể n sang PHP t ừ c á c ng ô n ng ữ nh ư Java hay C++ (n ơ i b ạ n b ạ n th ự c s ự kh ô ng th ể t ạ o c á c ch ươ ng tr ì nh ph ứ c t ạ p m à kh ô ng d ù ng c á c t í nh n ă ng H Đ T), vi ệ c b ỏ qua kh ả n ă ng H Đ T c ủ a PHP c ó th ể s ẽ kh ó kh ă n. D ù sao, t ô i v ẫ n c ó th ể tr ấ n an b ạ n l à c á c ch ươ ng t r ì nh r ấ t m ạ nh c ó th ể đượ c vi ế t m à kh ô ng d ù ng m ấ t c ứ kh á i ni ệ m v à m ô h ì nh H Đ T n à o (PHP đượ c vi ế t b ằ ng C, ng ô n ng ữ kh ô ng h ỗ tr ợ H Đ T). Để d à nh cho nh ữ ng ai kh ô ng quen v ớ i k ĩ n ă ng phi-H Đ T, d ướ i đâ y l à v à i k ĩ thu ậ t để t ạ o ch ươ ng tr ì nh c ó t í nh k ế t d í nh v à d ễ m ở r ộ ng m à kh ô ng d ù ng m ô h ì nh H Đ T: 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 ... while, c á c c â u g ọ i nhi ề u l ầ n, v à c á c h à m sql_result() trong v ò ng for. Nh ữ ng ng ườ i n à y c ó ngh ĩ h ọ đ ang l à m g ì kh ô ng? Vi ệ c vi ế t c á c m ã tr ậ t-ho ặ c-tr ú ng (hit-or-miss code) ch ứ ng minh s ự thi ế u t ậ p trung. Nh ữ ng c á nh â n đó x á c đị nh n ỗ l ự c c ủ a h ọ d ù ng để ho à n th à nh c ô ng vi ệ c h ơ n l à để ho à n th à nh đú ng c ô ng vi ệ c, k ế t qu ả l à l à m cho c á c ô ng ch ủ qu ă ng th ờ i gian v à ti ề n b ạ c ra đườ ng. 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 15 15 15 15 Dormitory 204.B5 18:20 PM April 7, 2006 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 để ch ạ y m ộ t ch ươ ng tr ì nh t ì m ki ế m đơ n gi ả n tr ê n 2MB d ữ li ệ u v à t ự h ỏ i t ạ i sao c á i ng ô n ng ữ n à y ch ạ y l â u th ế . L ấ y 2MB d ữ li ệ u t ừ CSDL c ó th ể l à m b ạ n ch ờ m ã i m ã i. Ng ô n ng ữ truy v ấ n chu ẩ n ( Standard Standard Standard Standard Query Query Query Query Language Language Language Language - - - - SQL SQL SQL SQL ) đượ c thi ế t k ế đặ c bi ệ t để truy v ấ n v à l ấ y d ữ li ệ u t ừ c á c b ả ng c ủ a b ạ n. Ý t ưở ng l à d ù ng n ó để l ọ c d ữ li ệ u kh ô ng c ầ n thi ế t, để l ạ i c á c th ô ng tin li ê n quan cho PHP x ử l í . N ế u b ạ n l ấ y nhi ề u d ữ li ệ u h ơ n c ầ n thi ế t, đó l à d ấ u hi ệ u ch ắ c ch ắ n r ằ ng m ã SQL đ ang d ù ng ch ư a đượ c t ố i ư u ho á . 2.1. 2.1. 2.1. 2.1. M M M M ệ ệ ệ ệ nh nh nh nh đề đề đề đề WHERE WHERE WHERE WHERE M ộ t th í d ụ kinh đ i ể n v ề s ự hi ể u qu ả c ủ a SQL li ê n quan đế n m ệ nh đề where. Đ o ạ n m ã sau s ẽ l ấ y c á c k ế t qu ả v à in ra t ê n v à m ã sinh vi ê n c ủ a sinh vi ê n c ó MASV='511203008' : < ?php include ( “ includes/taptinketnoi.inc ” ) ; $strsql = "SELECT MASV, HOTEN FROM SINHVIEN" ; $truyvan = @ sql_query ( $strsql , $ketnoi ); if (! $truyvan ) { die ( sprintf ( "LOI: [%d]: %s" , sql_errno (), sql_error ())); } if (@ sql_num_rows ( $truyvan ) <= 0 ) { die ( "Khong ket qua tim duoc tu CSDL!" ); } while ( $mautin = @ sql_fetch_array ( $truyvan )){ if ( $mautin [ MASV ] == “ 511203008 ” ) { print "MASV: $mautin[MASV]\n<br>\n" ; print "Ho ten: $mautin[HOTEN]\n<br>\n" ; break; } } ?> Đ o ạ n m ã tr ê n ch ư a đượ c t ố i ư u: ch ú ng ta đ ang d ù ng PHP để t ì m ki ế m trong to à n b ộ CSDL! N ế u nh ư đ i ề u n à y kh ô ng quan tr ọ ng đố i v ớ i c á c CSDL nh ỏ , khi k í ch th ướ c CSDL t ă ng l ê n b ạ n s ẽ c ả m th ấ y m ộ t c ú đấ m n ặ ng n ề v ề hi ệ u n ă ng. L ờ i gi ả i r ấ t đơ n gi ả n: s ử a c â u SQL để ch ứ a m ệ nh đề WHERE: $strsql = "SELECT * FROM SINHVIEN" ; $strsql .= " WHERE MASV='511203008'" ; 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 22 22 22 22 Dormitory 204.B5 18:20 PM April 7, 2006 1. 1. 1. 1. C C C C á á á á c c c c h h h h à à à à m m m m c c c c ầ ầ ầ ầ n n n n bi bi bi bi ế ế ế ế t t t t C ó v à i h à m r ấ t thi ế t y ế u để ti ế t ki ệ m th ờ i gian thi h à nh ch ươ ng tr ì nh khi d ù ng thay cho bi ể u th ứ c ch í nh quy. D ướ i đâ y l à danh s á ch c á c h à m thi ế t y ế u đó : strtoupper(); strtolower(); ucfirst(); strtr(); str_replace(); trim(); explode(); implode(); substr(); strcmp() N ế u b ạ n thay th ế c á c bi ể u th ứ c ch í nh quy c ủ a b ạ n b ằ ng c á c h à m tr ê n, b ạ n c ó th ể tr ô ng đợ i m ộ t s ự nh ả y v ọ t v ề hi ệ u n ă ng, đặ c bi ệ t khi b ạ n l à m vi ệ c v ớ i c á c chu ỗ i l ớ n. 9. 9. 9. 9. L L L L ậ ậ ậ ậ p p p p tr tr tr tr ì ì ì ì nh nh nh nh PHP PHP PHP PHP nh nh nh nh ư ư ư ư 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 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 ho ạ t độ ng v ớ i c á c í t kh á i ni ệ m m ớ i c à ng t ố t Khi b ạ n l ậ p tr ì nh PHP nh ư l à trong c á c ng ô n ng ữ kh á c, n ó th ườ ng d ẫ n đế n vi ệ c l à m ch ươ ng tr ì nh ch ậ m h ơ n v à kh ó b ả o tr ì m ã . B ạ n s ẽ th ườ ng th ấ y h ọ ph ạ m v à o m ộ t trong c á c l ỗ i sau: Perl Perl Perl Perl "1 "1 "1 "1 d d d d ò ò ò ò ng" ng" ng" ng" PHP l à m ộ t ng ô n ng ữ kh ô ng th ự c s ự t ố i ư u cho c á ch ti ế p c ậ n 1 d ò ng khi vi ế t ch ươ ng tr ì nh . Thay v à o đó , n ó m ở r ộ ng c á c t ậ p h à m ph ứ c t ạ p v à c á c bi ể u th ứ c ch í nh quy theo m ộ t đị nh d ạ ng c ó c ấ p b ậ c h ơ n M M M M ã ã ã ã l l l l ệ ệ ệ ệ nh nh nh nh Perl Perl Perl Perl while (<STDIN>) { @_ = split /:/; $quotes{shift} = shift; } print map { "$_: ", reverse split //,$quotes->{$_},"\n";} keys %quotes; M M M M ã ã ã ã l l l l ệ ệ ệ ệ nh nh nh nh PHP) PHP) PHP) PHP) < ?php $fp = @ fopen ( &apos ;php: //stdin' , 'r' ); if (! $fp ) { die ( 'Cannot open STDIN' ); } while ( $line = @ fgets ( $fp , 1024 )) { list( $name , $quote ) = explode ( ':' , $line ); $quotes [ $name ] = $quote ; } foreach ( $quotes as $name => $quote ) { print "$name: " ; print implode ( " " , array_reverse ( preg_split ( '//' , $quote ))); print "\n" ; } @ fclose ( $fp ); ?> ... while c ầ n thi ế t trong tr ườ ng h ợ p n à y v ì khi đó , b ộ đế m c ủ a CSDL đã t ă ng l ê n v à chuy ể n sang d ò ng k ế ti ế p . Do đó , b ạ n ph ả i x ử l í (l ệ nh do )d ò ng đầ u ti ê n v ì n ó đã đượ c l ấ y. C á c l ệ nh ti ế p theo l ấ y c á c d ò ng k ế , v à c ứ th ế . 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 26 26 26 26 Dormitory 204.B5 18:20 PM April 7, 2006 PH Ầ N 3: 7 L Ỗ I CH Ế T NG ƯỜ I 7. 7. 7. 7. Ch Ch Ch Ch é é é é p p p p v v v v à à à à d d d d á á á á n: n: n: n: kh kh kh kh ô ô ô ô ng ng ng ng ph ph ph ph ả ả ả ả i i i i h h h h ướ ướ ướ ướ ng ng ng ng đ đ đ đ i i i i t t t t ố ố ố ố t t t t 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 c ủ a m ì nh v à r ồ i k ế t qu ả l à m ộ t đố ng nh ữ ng c â u l ệ nh g ử i form kh ô ng an to à n. D ù r ằ ng m ộ t đ o ạ n m ã ch ạ y đượ c trong nh ữ ng đ i ề u ki ệ n t ố i ư u, n ó th ườ ng g ặ p l ỗ i trong b ấ t k ì s ự ki ể m tra "m ã t ố t" n à o C ô ng vi ệ c ch ắ p v á s ẽ kh kh kh kh ô ô ô ô ng ng ng ng c ó c á c ư u đ i ể m sau: M M M M ở ở ở ở r r r r ộ ộ ộ ộ ng ng ng ng đượ đượ đượ đượ c: c: c: c: đ o ạ n m ã tr ô ng nh ư c á c m ả nh ri ê ng r ẽ r á p v á v à o nhau. N ế u nh ờ m ộ t l ậ p tr ì nh vi ê n c ó kinh nghi ệ m s ử a ch ươ ng tr ì nh c ủ a b ạ n, h ọ th ườ ng th í ch vi ế t l ạ i to à n b ộ Đ o ạ n m ã kh ô ng đọ c đượ c s ẽ kh ô ng m ở r ộ ng đượ c. An An An An to to to to à à à à n: n: n: n: b ạ n c ó th ể đ ang ch é p m ã c ủ a ng ườ i kh á c v à o ch ươ ng tr ì nh c ủ a m ì nh m à l ạ i kh ô ng hi ể u r õ r à ng đ o ạ n m ã đó . H ã y t ưở ng t ưở ng xem. N ế u đ o ạ n m ã đó c ó m ộ t l ỗ i l à m xo á to à n b ộ đĩ a c ủ a b ạ n H ơ n n ữ a, c ù ng m ộ t đ o ạ n m ã th ì t í nh an to à n kh ô ng gi ố ng nhau tr ê n c á c h ệ th ố ng kh á c nhau. Cu ố i c ù ng, ch ươ ng tr ì nh c ủ a b ạ n s ẽ k ế th ừ a l ỗ i c ủ a ng ườ i kh á c. Nhanh: Nhanh: Nhanh: Nhanh: khi c ắ t d á n c á c đ o ạ n m ã , k ế t qu ả th ườ ng s ẽ ch ạ y kh ô ng nhanh, v ì ch ú ng kh ô ng c ó m ộ t ti ế n tr ì nh chung h ợ p l í ( đâ y l à đ i ề u quan tr ọ ng nh ấ t khi vi ế t c á c ch ươ ng tr ì nh nhanh) 1. 1. 1. 1. L L L L à à à à m m m m đú đú đú đú ng ng ng ng ph ph ph ph ươ ươ ươ ươ ng ng ng ng ph ph ph ph á á á á p: p: p: p: t t t t ì ì ì ì m m m m hi hi hi hi ể ể ể ể u u u u tr tr tr tr ướ ướ ướ ướ c, c, c, c, sao sao sao sao ch ch ch ch é é é é p p p p sau sau sau sau Nghi ê n c ứ u m ã c ủ a ng ườ i kh á c k ĩ l ưỡ ng tr ướ c khi sao ch é p. Ph â n t í ch xem n ó l à m g ì . Ch ỉ 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. 2. 2. 2. C C C C á á á á c c c c th th th th ư ư ư ư vi vi vi vi ệ ệ ệ ệ n n n n r r r r ấ ấ ấ ấ t t t t t t t t ố ố ố ố t t t t 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 h à m c ủ a n ó c ũ ng kh ô ng th à nh v ấ n đề . Th ự c ra, n ế u b ạ n t ì m đượ c m ộ t th ư vi ệ n vi ế t s ẵ n b ở i m ộ t ngu ồ n tin c ậ y, th ì th ườ ng n ó s ẽ l à m ộ t l ự a ch ọ n t ố t để d ù ng cho ch ươ ng tr ì nh (thay v ì t ự vi ế t l ấ y). 6. 6. 6. 6. Kh Kh Kh Kh ô ô ô ô ng ng ng ng c c c c ó ó ó ó đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i ( ( ( ( guidelines ) ) ) ) cho cho cho cho đồ đồ đồ đồ á á á á n n n n M ộ t l ầ n khi t ô i m ớ i b ắ t đầ u l ậ p tr ì nh, t ô i l à m vi ệ c tr ê n m ộ t đồ á n kh á c ơ b ả n (v ớ i Perl) c ù ng 3 l ậ p t ì nh vi ê n kh á c. V ì t ô i c ò n tr ẻ (v à kh ô ng ph ả i tr ưở ng nh ó m), ch ú ng t ô i kh ô ng c ó đườ ng l ố i vi ế t m ã cho đồ á n. M ỗ i ng ườ i đượ c giao m ộ t ph ầ n c ô ng vi ệ c, v à l à m ri ê ng r ẽ . Khi ch ú ng t ô i nh ậ p chung l ạ i để ch ạ y ch ươ ng tr ì nh cu ố i c ù ng, m ỗ i ph ầ n c ủ a đồ á n nh ì n kh á c h ẳ n nhau 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 23 23 23 23 Dormitory 204.B5 18:20 PM April 7, 2006 Kh Kh Kh Kh ô ô ô ô ng ng ng ng d d d d ù ù ù ù ng ng ng ng c c c c á á á á c c c c h h h h à à à à m m m m s s s s ẵ ẵ ẵ ẵ n n n n c c c 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 n à o gi ú p cu ộ c s ố n g c ủ a b ạ n d ễ d à ng h ơ n kh ô ng. Đổ Đổ Đổ Đổ i i i i t t t t ê ê ê ê n n n n c c c c á á á á c c c c h h h h à à à à m m m m PHP PHP PHP PHP đã đã đã đã c c c c ó ó ó ó T ô i đã th ấ y ng ườ i ta đổ i t ê n c á c h à m đã c ó c ủ a PHP ch ỉ để gi ú p h ọ d ễ nh ớ h ơ n. Đ i ề u n à y kh ô ng ch ỉ l à m ch ậ m ch ươ ng tr ì nh, m à l à m cho đ o ạ n m ã kh ó đọ c h ơ n. D D D D ù ù ù ù ng ng ng ng h h h h ướ ướ ướ ướ ng ng ng ng đố đố đố đố i i i i t t t t ượ ượ ượ ượ ng ng ng ng qu qu qu qu á á á á m m m m ứ ứ ứ ứ c c c c PHP kh ô ng ph ả i l à m ộ t ng ô n ng ữ H Đ T, d ù n ó cung c ấ p c á c t í nh n ă ng H Đ T. B ạ n c ầ n lu ô n nh ậ n th ứ c r ằ ng H Đ T trong PHP s ẽ l à m ch ậ m đá ng k ể ch ươ ng tr ì nh. 1. 1. 1. 1. L L L L ấ ấ ấ ấ y y y y th th th th ô ô ô ô ng ng ng ng tin tin tin tin ở ở ở ở đâ đâ đâ đâ u? u? u? u? May m ắ n l à c ó r ấ t nhi ề u th ô ng tin v ề vi ệ c 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 Cookbook M ộ t quy ể n s á ch thi ê n v ề l ờ i gi ả i đá p cho c á c v ấ n đề g ặ p ph ả i trong PHP (do tui - Sterling Hughes - vi ế t c ù ng Andrei Zmievski) 8. 8. 8. 8. Kh Kh Kh Kh ô ô ô ô ng ng ng ng nh nh nh nh ậ ậ ậ ậ n n n n th th th th ứ ứ ứ ứ c c c c đầ đầ đầ đầ y y y y đủ đủ đủ đủ v v v v ề ề ề ề b b b b ả ả ả ả o o o o m m m m ậ ậ ậ ậ t t t t 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 d ù ng. Xem x é t nh ữ ng ch ỗ h ọ c ó th ể g ặ p l ỗ i v à t ì m ki ế m nh ữ ng l ỗ h ổ ng b ả o m ậ t ti ề m t à ng. R ồ i b ạ n 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 an to à n m à l ạ i đ i d ù ng sendmail th ô ng qua popen() . N ó c ó th ể d ẫ n đế n nhi ề u l ỗ h ổ ng b ả o m ậ t (th í d ụ nh ư /etc/passwd đượ c g ử i đế n ng ườ i d ù ng cu ố i). C ó v à i n ơ i th ườ ng x ả y ra c á c s ự c ố v ề b ả o m ậ t, ho ặ c ti ề m n ă ng g â y ra h ỏ ng d ữ li ệ u r ấ t l ớ n: Th ự c hi ệ n l ờ i g ọ i h ệ th ố ng. T ô i kh ô ng c ó c á ch n à o di ễ n t ả đượ c m ứ c độ nguy hi ể m c ủ a v ấ n đề n à y. Lu ô n đả m b ả o r ằ ng m ọ i d ữ li ệ u ng ườ i d ù ng đư a v à o l à an to à n tr ướ c khi chuy ể n n ó cho m ộ t l ờ i g ọ i h ệ th ố ng. ĐỪ ĐỪ ĐỪ ĐỪ NG NG NG NG BAO BAO BAO BAO GI GI GI GI Ờ Ờ Ờ Ờ TIN TIN TIN TIN NG NG NG NG ƯỜ ƯỜ ƯỜ ƯỜ I I I I D D D D Ù Ù Ù Ù NG NG NG NG M M M M Ộ Ộ Ộ Ộ T T T T C C C C Á Á Á Á CH CH CH CH M M M M Ù Ù Ù Ù QU QU QU QU Á Á Á Á NG NG NG NG KHI KHI KHI KHI ĐƯ ĐƯ ĐƯ ĐƯ A A A A D D D D Ữ Ữ Ữ Ữ LI LI LI LI Ệ Ệ Ệ Ệ U U U U C C C C Ủ Ủ Ủ Ủ A A A A H H H H Ọ Ọ Ọ Ọ V V V V À À À À O O O O L L L L Ờ Ờ Ờ Ờ I I I I G G G G Ọ Ọ Ọ Ọ I I I I H H H H Ệ Ệ Ệ Ệ TH TH TH TH Ố Ố Ố Ố NG NG NG NG M M M M À À À À KH KH KH KH Ô Ô Ô Ô NG NG NG NG KI KI KI KI Ể Ể Ể Ể M M M M TRA TRA TRA TRA TR TR TR TR ƯỚ ƯỚ ƯỚ ƯỚ C C C C . Khi đă ng k í ng ườ i d ù ng. N ế u b ạ n tr ô ng mong c ó k ế t qu ả ch í nh x á c, lu ô n ki ể m tra v à đả m b ả o b ả n đă ng k í đượ c ki ể m tra nh ữ ng ch ỗ c ầ n thi ế t. Tr ướ c ti ê n, c ó nhi ề u c á ch để ki ể m tra m ộ t đị a ch ỉ e-mail h ợ p l ệ . H ơ n n ữ a, b ạ n n ê n ki ể m tra tu ổ i c ủ a ng ườ i d ù ng c ó n ằ m trong ph ạ m vi th í ch h ợ p kh ô ng. V ớ i m ộ t s ự suy r ộ ng, b ạ n c ó 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 25 25 25 25 Dormitory 204.B5 18:20 PM April 7, 2006 m ộ t nh ó m th ư t í n, hay trong m ộ t kho m ã ngu ồ n n à o đó ). Tuy nhi ê n, m ộ t bi ể u th ứ c ch í nh quy kh ô ng đủ n ế u b ạ n mu ố n c ó k ế t qu ả ch í nh x á c. C ó v à i c á ch an to à n h ơ n m à b ạ n c ó th ể d ù ng: 2.1. 2.1. 2.1. 2.1. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra k k k k ế ế ế ế t t t t n n n n ố ố ố ố i i i i (socket (socket (socket (socket validation) validation) validation) validation) M ộ t c á ch để ki ể m đị nh đị a ch ỉ e-mail m à kh ô ng qu ấ y r ầ y tr ự c ti ế p đế n ng ườ i d ù ng l à t ạ o m ộ t k ế t n ố i đế n server nh ậ n đượ c trong đị a ch ỉ e-mail, sau đó t ì m t ê n đă ng k í c ủ a h ọ . 2.1.1. 2.1.1. 2.1.1. 2.1.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m Kh ô ng g â y b ấ t ti ệ n cho ng ườ i d ù ng v ì n ó đượ c ti ế n h à nh trong su ố t. Ph á t hi ệ n nhi ề u đị a ch ỉ ma m à bi ể u th ứ c ch í nh quy kh ô ng bi ế t (nh ư l à joe@fgsdh.com). 2.1.2. 2.1.2. 2.1.2. 2.1.2. Khuy Khuy Khuy Khuy ế ế ế ế t t t t đ đ đ đ i i i i ể ể ể ể m m m m Kh ô ng ph á t hi ệ n đượ c đị a ch ỉ b ị đá nh c ắ p. Th í d ụ , n ế u John Doe đư a đị a ch ỉ e- mail c ủ a t ô i (phanthanhkieu @php. net), m ọ i th ứ v ẫ n ti ế n h à nh b ì nh th ườ ng, d ù n ó l à đị a ch ỉ c ủ a t ô i ch ứ kh ô ng ph ả i c ủ a h ắ n ta. Ki ể m tra ch ậ m h ơ n bi ể u th ứ c ch í nh quy. Mail server c ủ a ng ườ i d ù ng c ó th ể t ạ m ng ư ng ho ạ t độ ng trong th ờ i gian ng ắ n, l à m cho m ộ t đị a ch ỉ e-mail h ợ p l ệ b ị t ừ ch ố i 2.2. 2.2. 2.2. 2.2. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra t t t t ươ ươ ươ ươ ng ng ng ng t t t t á á á á c c c c M ộ t c á ch kh á c để ki ể m đị nh đị a ch ỉ e-mail l à g ử i m ộ t kho á đặ c bi ệ t đế n h ộ p th ư ng ườ i d ù ng, v à b ắ t h ọ nh ậ p kho á đó để ti ế p t ụ c. Đ i ề u n à y đả m b ả o r ằ ng kh ô ng nh ữ ng đị a ch ỉ e-mail l à h ợ p l ệ , m à ng ườ i d ù ng c ó quy ề n truy xu ấ t v à o đị a ch ỉ đó . 2.2.1. 2.2.1. 2.2.1. 2.2.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m L à c á ch t ố t nh ấ t để ki ể m tra ng ườ i d ù ng c ó m ộ t đị a ch ỉ e-mail h ợ p l ệ 2.2.2. 2.2.2. 2.2.2. 2.2.2. Khuy Khuy Khuy Khuy ế ế ế ế t t t t đ đ đ đ i i i i ể ể ể ể m m m m Đò i h ỏ i ng ườ i d ù ng ph ả i ti ế n h à nh th ê m b ướ c ph ụ . Đ i ề u n à y qu ấ y r ầ y m ấ y ng ườ i c ó ý đị nh l à m phi ề n b ạ n. Gi ố ng nh ư m ọ i c á ch kh á c, n ó kh ô ng đả m b ả o đượ c ch ố ng- đá nh-l ừ a. Ng ườ i d ù ng c ó th ể t ạ o m ộ t đị a ch ỉ t ạ m ở Hotmail hay Netaddress v à sau 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 20 20 20 20 Dormitory 204.B5 18:20 PM April 7, 2006 T ạ o m ộ t API T ạ o m ộ t tr ì nh t ự t ê n Nh ó m c á c h à m li ê n quan v à o m ộ t t ậ p tin 1.1. 1.1. 1.1. 1.1. T T T T ạ ạ ạ ạ o o o o m m m m ộ ộ ộ ộ t t t t API API API API Á p d ụ ng 3 l ớ p cho ch ươ ng tr ì nh c ủ a b ạ n: Th ứ nh ấ t, c á c h à m th ự c s ự th ự c hi ệ n c ô ng vi ệ c c ủ a b ạ n Th ứ hai, m ộ t h à m API. Đâ y l à h à m gi ú p b ạ n x â y d ự ng c á c ch ươ ng tr ì nh đặ c th ù Ch ươ ng tr ì nh MortgageRate .php < ?php // The internal functions are layer 1 // Internal function to calculate the correct // interest rate to be used given the amount per month // and the time it is to be paid in function _mort_find_interest_rate ( $total ) { if ( $total < 30000 ) return ( 7.4 ); elseif ( $total > 30000 ) return ( 3.2 ); elseif ( $total > 50000 ) return ( 2.5 ); else return ( 1.7 ); } // The API is layer 2 // double calculate_mortgage_rate (int money, int time, int month ) // Calculate the mortgage rate given the // the total money, time its paid over and // the intervals function calculate_mortgage_rate ( $money , $time , $month ) { $rate = _mort_find_interest_rate ( $money ) / 100 ; $money /= ( $time / $month ); return ( $rate * $money ) + $money ; } ?> CalcMortgage .php < ?php // The actual application is layer 3 // $money, $time and $period are submitted // from a form include_once 'MortgageRate .php& apos; ; $price = calculate_mortgage_rate ( $money , $time , $period ); print "Your $period month cost is $price" ; ?> 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 24 24 24 24 Dormitory 204.B5 18:20 PM April 7, 2006 th ể kh ẳ ng đị nh kh á ch ắ c ch ắ n r ằ ng kh ô ng c ó m ộ t ng ườ i 200 tu ổ i n à o c ó kh ả n ă ng d ù ng m á y vi t í nh. Khi ch ấ p nh ậ n th ẻ t í n d ụ ng. M ộ t s ố l ậ p tr ì nh vi ê n ch ỉ d ù ng nh ữ ng thu ậ t to á n đơ n gi ả n m à c ó th ể d ễ d à ng b ị đá nh l ừ a khi th ự c hi ệ n ki ế m tra th ẻ t í n d ụ ng. Ch ỉ ch ấ p nh ậ n th ẻ c ủ a c á c c ô ng ty l ớ n để ki ể m tra t í nh h ợ p l ệ c ủ a s ố th ẻ tr ướ c khi ch ấ p nh ậ n th ẻ c ủ a ng ườ i d ù ng. ĐỪ ĐỪ ĐỪ ĐỪ NG NG NG NG BAO BAO BAO BAO GI GI GI GI Ờ Ờ Ờ Ờ TIN TIN TIN TIN T T T T ƯỞ ƯỞ ƯỞ ƯỞ NG NG NG NG M M M M Ộ Ộ Ộ Ộ T T T T THU THU THU THU Ậ Ậ Ậ Ậ T T T T TO TO TO TO Á Á Á Á N N N N 1. 1. 1. 1. B B B B ả ả ả ả o o o o m m m m ậ ậ ậ ậ t t t t c c c c ủ ủ ủ ủ a a a a l l l l ờ ờ ờ ờ i i i i g g g g ọ ọ ọ ọ i i i i h h h h ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng M ỗ i khi b ạ n đư a d ữ li ệ u c ủ a ng ườ i d ù ng v à o l ờ i g ọ i h ệ th ố ng, b ạ n c ầ n t ỉ nh t á o ki ể m tra d ữ li ệ u đó . Đả m b ả o r ằ ng kh ô ng c ó g ì nguy hi ể m n ằ m trong d ữ li ệ u đó c ó th ể l ừ a ph ỉ nh h ệ th ố ng th ự c hi ệ n nh ữ ng l ệ nh kh ô ng mong mu ố n. PHP cung c ấ p m ộ t h à m l à m đ i ề u đó : EscapeShellCmd() B ấ t c ứ khi n à o b ạ n chuy ể n m ộ t l ệ nh c ó ch ứ a d ữ li ệ u nh ạ y c ả m, tr ố n tho á t d ữ li ệ u đó b ằ ng h à m EscapeShellCmd EscapeShellCmd EscapeShellCmd EscapeShellCmd (): Tr ố n tho á t (escaping) d ữ li ệ u c ó ngh ĩ a l à th ê m d ấ u s ổ ng ượ c (backslash \) tr ướ c k í t ự c ó th ể l ừ a ph ì nh h ệ th ố ng (ch í nh x á c l à c á c k í t ự #&;?'\"|*?~<>^()[]{}$\\\x0A\xFF ). M M M M ã ã ã ã HTML HTML HTML HTML < html > < head > < title >Name Lookup< /title > < /head > < body > < h1 >Name Lookup< /h1 > < ?php if ($name) { system (EscapeShellCmd ("lookup $name")); print " nn"; } ?> < form action =" <[color=blue] ?php print $PHP_ SELF; ?>[/color] " method=" GET "> Enter a name to lookup: < input type =" text " name=" name "> < input type =" submit " value=" Lookup Name "> < /form > < /body > < /html > D ù EscapeShellCmd() l à m ộ t h à m t ố t để ki ể m tra l ệ nh, b ạ n v ẫ n n ê n th ử v à th ự c hi ệ n c á c ki ể m tra đặ c th ù ph ụ thu ộ c v à o lo ạ i d ữ li ệ u. H à m EscapeShellCmd() s ẽ kh ô ng ki ể m tra t í nh đú ng đắ n c ủ a d ữ li ệ u đượ c đệ tr ì nh, n ó s ẽ ch ỉ ng ă n c ả n ng ườ i d ù ng l à m c á c vi ệ c k h ô ng đượ c ph é p. 1.1. 1.1. 1.1. 1.1. Đ Đ Đ Đ i i i i xa xa xa xa h h h h ơ ơ ơ ơ n n n n m m m m ộ ộ ộ ộ t t t t b b b b ướ ướ ướ ướ c c c c Nh ư m ộ t quy lu ậ t, n ê n ki ể m tra c á c k í t ự đượ c ph é p h ơ n l à ki ể m c á c k í t ự kh ô ng đượ c ph é p . Th í d ụ , đả m b ả o r ằ ng $name ch ỉ ch ứ a c á c k í t ự ch ữ v à s ố (alphanumeric characters). B ằ ng c á ch n à y, r ấ t kh ó để khai th á c l ỗ h ổ ng trong h ệ th ố ng c ủ a b ạ n. 2. 2. 2. 2. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra đị đị đị đị a a a a ch ch ch ch ỉ ỉ ỉ ỉ e-mail e-mail e-mail e-mail M ộ t trong nh ữ ng h ì nh th ứ c ki ể m tra ph ổ bi ế n nh ấ t l à xem m ộ t đị a ch ỉ e-mail c ó h ợ p l ệ kh ô ng. M ấ y tay m ớ i v à o ngh ề s ẽ ch ỉ d ù ng c á c bi ể u th ứ c ch í nh quy (m à h ọ l ượ m đượ c trong 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 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 14 14 14 14 Dormitory 204.B5 18:20 PM April 7, 2006 1.4. 1.4. 1.4. 1.4. Khi Khi Khi Khi m m m m à à à à DBMS DBMS DBMS DBMS c c c c ủ ủ ủ ủ a a a a b b b b ạ ạ ạ ạ n n n n kh kh kh kh ô ô ô ô ng ng ng ng h h h h ỗ ỗ ỗ ỗ tr tr tr tr ợ ợ ợ ợ sql_num_row() sql_num_row() sql_num_row() sql_num_row() V à i DBMS c ó th ể kh ô ng h ỗ tr ợ h à m sql_num_row(). T ô i xin chia s ẻ v ớ i b ạ n n ế u DBMS c ủ a b ạ n l à m ộ t trong s ố đó . B ạ n s ẽ ph ả i t ì m trong k ế t qu ả r ỗ ng b ằ ng c á ch l ấ y d ò ng. Tuy nhi ê n, trong tr ườ ng h ợ p n à y, n ó n ê n d ù ng m ộ t bi ế n boolean nh ư sau: < ?php $timthay = false ; while ( $mautin = sql_fetch_array ( $truyvan )){ $timthay = true ; } if (! $timthay ){ print "Loi!" ; } ?> 1.5. 1.5. 1.5. 1.5. L L L L ấ ấ ấ ấ y y y y k k k k ế ế ế ế t t t t qu qu qu qu ả ả ả ả : : : : h h h h ã ã ã ã y y y y ch ch ch ch ọ ọ ọ ọ n n n n c c c c á á á á ch ch ch ch c c c c ó ó ó ó í í í í ch ch ch ch V ấ n đề th ứ hai trong đ o ạ n m ã n à y l à n ó d ù ng sql_fetch_row() để l ấ y t ậ p k ế t qu ả . H à m sql_fetch_row() ch ỉ tr ả v ề m ả ng đá nh ch ỉ s ố , trong khi đó sql_fetch_array() tr ả v ề m ả ng đá nh ch ỉ s ố v à m ả ng d ù ng chu ỗ i. $mautin = sql_fetch_array ( $truyvan ); print $mautin [ 1 ]; // Cot thu 2 print $mautin [ name ]; // Ten cot Ch Ch Ch Ch ú ú ú ú ý ý ý ý : : : : C ó nhi ề u quy ướ c kh á c nhau v ề vi ệ c d ù ng d ấ u nh á y khi th ê m m ộ t đố i s ố ki ể u chu ỗ i. Trong th í d ụ v ề t ê n c ộ t ở tr ê n, v à su ố t b à i vi ế t n à y, n ó s ẽ đượ c b ỏ . T ừ quan đ i ể m c ủ a nh à ph á t tri ể n, h à m n à o c ó l ợ i h ơ n? M ả ng d ù ng chu ỗ i gi ú p cho ng ườ i đọ c hi ể u đượ c b ạ n đ ang l ấ y c á i g ì ch ỉ th ô ng qua vi ệ c đọ c m ã , nh ư th í d ụ đú ng d ướ i đâ y: < ?php if ( sql_num_rows ( $truyvan )<= 0 ) { print "Mot loi da xay ra: Khong co mau tin nao!" ; exit; } while ( $mautin = sql_fetch_array ( $truyvan )) { print "$mautin[name]: $mautin[phone_number]\n<br>\n" ; } ?> 1.6. 1.6. 1.6. 1.6. Khi Khi Khi Khi n n n n à à à à o o o o sql_fetch_row($truyvan) sql_fetch_row($truyvan) sql_fetch_row($truyvan) sql_fetch_row($truyvan) n n n n ê ê ê ê n n n n đượ đượ đượ đượ c c c c d d d d ù ù ù ù ng ng ng ng T ô i kh ô ng th ự c s ự l à fan c ủ a the sql_fetch_row(). Tuy nhi ê n, c ó m ộ t t ì nh hu ố ng m à d ù ng n ó kh ô ng gi ả m kh ả n ă ng d ễ đọ c: khi ng ườ i d ù ng đị nh ngh ĩ a c â u truy v ấ n. C á c th í d ụ cho đế n l ú c n à y đề u đề c ậ p đế n nh ữ ng c â u truy v ấ n đượ c bi ế t tr ướ c. Đô i khi b ạ n để cho ng ườ i d ù ng t ự đị nh ngh ĩ a c â u truy v ấ n. Tr ườ ng h ợ p n à y b ạ n s ẽ kh ô ng bi ế t c á c c ộ t trong k ế t qu ả . Do đó , d ù ng h à m sql_fetch_row() k è m v ớ i count() s ẽ x ử l í hi ệ u qu ả c á c c ộ t trong m ộ t h à ng: < ?php for ( $i = 0 ; $i < count ( $mautin ); $i ++){ print "Column" . ( $i + 1 ). $mautin [ $i ]. "\n<BR>\n" ; } ?> 2. 2. 2. 2. D D D D ù ù ù ù ng ng ng ng sai sai sai sai SQL: SQL: SQL: SQL: kh kh kh kh ô ô ô ô ng ng ng ng l l l l ấ ấ ấ ấ y y y y nh nh nh nh ữ ữ ữ ữ ng ng ng ng g g g g ì ì ì ì b b b b ạ ạ ạ ạ n n n n c c c c ầ ầ ầ ầ n n n 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 27 27 27 27 Dormitory 204.B5 18:20 PM April 7, 2006 1. 1. 1. 1. M M M M ộ ộ ộ ộ t t t t th th th th í í í í d d d d ụ ụ ụ ụ m m m m ẫ ẫ ẫ ẫ u u u u v v v v ề ề ề ề đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i 5. 5. 5. 5. Kh Kh Kh Kh ô ô ô ô ng ng ng ng xem xem xem xem x x x x é é é é t t t t l l l l ạ ạ ạ ạ i i i i m m m m ã ã ã ã 4. 4. 4. 4. V V V V á á á á l l l l ỗ ỗ ỗ ỗ i i i i khi khi khi khi thi thi thi thi ế ế ế ế t t t t k k k k ế ế ế ế 3. 3. 3. 3. Kh Kh Kh Kh ô ô ô ô ng ng ng ng quan quan quan quan t t t t â â â â m m m m đế đế đế đế n n n n ng ng ng ng ườ ườ ườ ườ i i i i d d d d ù ù ù ù ng ng ng ng khi khi khi khi thi thi thi thi ế ế ế ế t t t t k k k k ế ế ế ế 2. 2. 2. 2. Kh Kh Kh Kh ô ô ô ô ng ng ng ng theo theo theo theo s s s s á á á á t t t t k k k k ế ế ế ế ho ho ho ho ạ ạ ạ ạ ch ch ch ch c c c c ủ ủ ủ ủ a a a a đồ đồ đồ đồ á á á á n n n n 1. 1. 1. 1. Ph Ph Ph Ph í í í í th th th th ờ ờ ờ ờ i i i i gian gian gian gian 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 19 19 19 19 Dormitory 204.B5 18:20 PM April 7, 2006 Trong th í d ụ d ướ i, set_error_handler() đượ c d ù ng để ch ỉ đị nh h à m error_handler() l à b ộ qu ả n l í l ỗ i m ặ c đị nh. Khi m ộ t l ỗ i x ả y ra, error_handler() đượ c g ọ i v à h à m PHP error_log() đượ c d ù ng để ghi l ỗ i v à o t ậ p tin error_file. N ế u m à l ỗ i thu ộ c lo ạ i E_ERROR, ch ú ng ta s ẽ tho á t ch ươ ng tr ì nh v à in th ô ng b á o l ỗ i. < ?php // void error_handler(string type, string message, string file, int line) // Custom error handler, set by the set_error_handler() // function. function error_handler ( $type , $message , $file = __FILE__ , $line = __LINE__ ) { error_log ( "$message, $file, $line" , 3 , 'error_file' ); if ( $type & E_ERROR ) { print 'An error occurred, it has been logged and it will be addressed.' ; exit; } } set_error_handler ( 'error_handler' ); ?> 11. 11. 11. 11. L L L L ạ ạ ạ ạ m m m m d d d d ụ ụ ụ ụ ng ng ng ng H H H H ướ ướ ướ ướ ng ng ng ng đố đố đố đố i i i i t t t t ượ ượ ượ ượ ng ng ng ng (H (H (H (H Đ Đ Đ Đ T) T) T) T) M ô h ì nh h ướ ng đố i t ượ ng l à m ộ t kh á i ni ệ m tuy ệ t v ờ i. N ó c ó r ấ t nhi ề u l ợ i đ i ể m, m à đá ng ch ú ý nh ấ t l à kh ả n ă ng d ù ng l ạ i m ã d ễ d à ng. Tuy nhi ê , theo nh ư ch ú ng ta đượ c hi ể u: PHP kh ô ng ph ả i l à m ộ t ng ô n ng ữ H Đ T. M ặ c d ù PHP c ó m ộ t s ự h ỗ tr ợ đầ y đủ v ề H Đ T, n ó kh ô ng hi ệ u qu ả l ẫ n kh ô ng kh ô n ngoan n ế u d ù ng t í nh n ă ng H Đ T c ủ a n ó khi b ạ n c ó c á c h à m kh á c để đạ t đượ c c ù ng k ế t qu ả . L í do l à s ự h ỗ tr ợ H Đ T c ủ a PHP kh ô ng đượ c ph á t tri ể n m ạ nh. Trong khi c ó h ầ u h ế t c á c ph ầ n t ử ch í nh y ế u, PHP v ẫ n c ò n thi ế u v à i t í nh n ă ng cao c ấ p (nh ư c á c kh á i ni ệ m protected, private) m à m ộ t ng ô n ng ữ H Đ T th ự c s ự (th í d ụ nh ư C++ , Java) ph ả i c ó . C á c m ã h ỗ tr ợ H Đ T c ủ a PHP kh ô ng đượ c tinh ch ỉ nh v à c ũ ng kh ô ng hi ệ u qu ả . Ngh ĩ a l à n ế u b ạ n d ù ng m ô h ì nh H Đ T trong PHP, b ạ n c ó th ể l à m ch ậ m ch ươ ng tr ì nh đá ng k ể . N ó i chung, m ộ t ứ ng d ụ ng d ù ng H Đ T s ẽ ch ậ m đ i, c ũ ng nh ư l à b ạ n d ù ng eval() th ì s ẽ ch ậ m h ơ n l à d ù ng m ã b ì nh th ườ ng. Để minh ho ạ đầ y đủ h ơ n vi ệ c H Đ T c ó g ì đó kh ô ng t ố t, t ô i đã t ừ ng ph ả i d ù ng nh ữ ng t í nh n ă ng v à kh á i ni ệ m cao c ấ p c ủ a PHP, m ộ t v à i trong s ố đó th ậ m ch í ch ư a c ó t à i li ệ u ch ỉ d ẫ n. 1. 1. 1. 1. Ch Ch Ch Ch ú ú ú ú ng ng ng ng ta ta ta ta c c c c ó ó ó ó th th th th ể ể ể ể l l l l à à à à m m m m g g g g ì ì ì ì m m m m à à à à kh kh kh kh ô ô ô ô ng ng ng ng c c c c ầ ầ ầ ầ n n n n H H H H Đ Đ Đ Đ T? T? T? T? N ế u b ạ n chuy ể n sang PHP t ừ c á c ng ô n ng ữ nh ư Java hay C++ (n ơ i b ạ n b ạ n th ự c s ự kh ô ng th ể t ạ o c á c ch ươ ng tr ì nh ph ứ c t ạ p m à kh ô ng d ù ng c á c t í nh n ă ng H Đ T), vi ệ c b ỏ qua kh ả n ă ng H Đ T c ủ a PHP c ó th ể s ẽ kh ó kh ă n. D ù sao, t ô i v ẫ n c ó th ể tr ấ n an b ạ n l à c á c ch ươ ng t r ì nh r ấ t m ạ nh c ó th ể đượ c vi ế t m à kh ô ng d ù ng m ấ t c ứ kh á i ni ệ m v à m ô h ì nh H Đ T n à o (PHP đượ c vi ế t b ằ ng C, ng ô n ng ữ kh ô ng h ỗ tr ợ H Đ T). Để d à nh cho nh ữ ng ai kh ô ng quen v ớ i k ĩ n ă ng phi-H Đ T, d ướ i đâ y l à v à i k ĩ thu ậ t để t ạ o ch ươ ng tr ì nh c ó t í nh k ế t d í nh v à d ễ m ở r ộ ng m à kh ô ng d ù ng m ô h ì nh H Đ T: 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 ...
Ngày tải lên: 16/12/2013, 08:15
Bài giảng - Giáo án: lập trinh web development fix
... Phát triển Web 2012 40 www.izwebz.com Demon Warlock Chương 2 : Thiết kế và xây dựng website Tôi nên làm trang web về chủ đề gì? Muốn tạo ra được một trang web thực sự có ích ... Phát triển Web 2012 45 www.izwebz.com Demon Warlock Bây giờ hãy áp chữ Z lên layout trên: Phát triển Web 2012 80 www.izwebz.com Demon Warlock Với trình duyệt IE ... Z-Layout 1. AVISIO Phát triển Web 2012 33 www.izwebz.com Demon Warlock AW là một website được thành lập nhầm công nhận những tài năng trong làng Webdesign. Họ có một ban giám khảo...
Ngày tải lên: 17/04/2014, 07:36
giáo trình lập trình web asp.net 4.5 dùng ngôn ngữ c#
... System.Linq; using System .Web; using System .Web. Security; using System .Web. UI; using System .Web. UI.HtmlControls; using System .Web. UI.WebControls; using System .Web. UI.WebControls.WebParts; using ... HTML, thiết kế web, mà nó còn hỗ trợ mạnh lập trình hướng đối tượng trong quá trình xây dựng và phát triển ứng dụng Web. ASP.Net là kỹ thuật lập trình và phát triển ứng dụng web ở phía Server ... Giới thiệu Web services. 415 13.2. Kiến trúc và các thành phần Web services 416 13.3. Xây Dựng Ứng Dụng Web Service 420 Chƣơng 14. Xây dựng Website bán hàng 427 Chƣơng 15. Thiết kế Website bán...
Ngày tải lên: 18/04/2014, 06:16
Giáo trình lập trình web cơ bản nhất (hay)
... THIẾT KẾ TRANG WEB THIẾT KẾ TRANG WEB 2) Định dạng tổng quát cho trang Web: + Title/Encoding: THIẾT KẾ TRANG WEB THIẾT KẾ TRANG WEB Định dạng kiểu mã hóa Tiêu đề của trang Web 2) Định dạng ... dạng tổng quát cho trang Web: Hộp thoại Page Properties THIẾT KẾ TRANG WEB THIẾT KẾ TRANG WEB 7) Liên kết: Tạo liên kết: có 3 cách tạo THIẾT KẾ TRANG WEB THIẾT KẾ TRANG WEB + Thanh công cụ Properties: + ... trang Web: + Cách 1: vào menu Text + Cách 2: click phải trên màn hình thiết kế. THIẾT KẾ TRANG WEB THIẾT KẾ TRANG WEB 7) Liên kết: Các hình thức liên kết: THIẾT KẾ TRANG WEB THIẾT KẾ TRANG WEB +...
Ngày tải lên: 17/06/2014, 15:01
Giáo trình lập trình ứng dụng CSDL Web ASP pptx
... trýờng lập trình phía máy chủự cho phép ta xây dựng các trang Web có nội dung ðộng ộinteractive Web pages) và những ứng dụng mãnh mẽ trên nền Web. Khác với những ngôn ngữ lập trình Web khác ... xuống cho browser thì ta gọi phýõng thức clear trýớc khi gọi phýõng thức nàyứ Giáo trình lập trình ứng dụng CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 2 Lời nói đầu ... việc lập trình máy chủ và tạo ra các Web động một cách hiệu quả - đó là ASP ( Active Server Pages). ASP sẽ giúp cho các nhà thiết kế và nhà quản trị có thể tạo ra các Website có các trang Web...
Ngày tải lên: 27/06/2014, 12:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P7 doc
... ngýời dùng yêu cầu một trang hay ðệ trình ộsubmitờ một biểu mẫu ộformờ, ðối týợng Request sẽ lýu trữ và cung cấp tất cả các thông tin từ browser (trình duyệt Web) gửi ðến serverự ðối týợng này ... là các thuộc tính còn các thao tác là các phýõng thứcứ ắác ðối týợng trong ĩSP cho phép ngýời lập trình giao tiếpự týõng tác với cả server lẫn clientứ Trong ĩSP có hai loại ðối týợng ðó làồ Các ... ngýời dùng thãm một Website, ta có thể bí mật gắn một tập tin chứa các thông tin mà mình muốn lên ðĩa cứng của họ, chẳng hạn nhý thông tin về user, thông tin về số lần truy cập website, Tuy nhiên...
Ngày tải lên: 08/07/2014, 08:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P8 docx
... xác lập trýớc tag <HTML> trong tập tin .asp. Còn nếu thuộc tính ởuffer nhận giá trị False thì kết quả sẽ ðýợc gởi ði ngay khi nó ðýợc xử lýứ Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP ... code sau ðây kiểm tra ngýời dùng còn kết nối hay khôngẻ Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 36 Ðối týợng Request chỉ có một ... ðối týợng Response Tập hợp của ðối týợng Response chỉ có cookies. Ðối týợng Response có thể xác lập giá trị của bất kỳ cookies nào mà ta muốn ðặt trên hệ thống của client. Nếu cookies không tồn...
Ngày tải lên: 08/07/2014, 08:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P9 doc
... một một chuỗi vào cuối mục log của trình chủ. Bạn có thể gọi phýõng thức này nhiều lần trong một script, mỗi lần gọi sẽ gắn thêm một chuỗi vào mục log của trình chủ. Cú pháp: Response.AppendToLog ... của trang Web. Nội dung này sẽ ðýợc gởi tới ngýời dùngỉụPặ <P> Bắt ðầu xóa ởuffer ỉụPặ <% Response.Clear %> </BODY> </HTML> Kết quả khi duyệt trang web này là ... cần ghi vào mục log không ðýợc chứa bất kỳ dấu phẩy (,) nàoứ Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 44 Redirect Phýõng thức này...
Ngày tải lên: 08/07/2014, 08:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P10 pptx
... Ví dụ: Ðoạn chýõng trình sau ðây hiển thị ra màn hình con số ỡừứ <HTML> <BODY> <CENTER> Số ỡừ của bạn làồ <% Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 ... FormatCurrency(540)& “ỉởRặ”ờ Response.Write (“ỉụPặ”ờ %> </BODY> </HTML> Khi ðó kết quả của trình duyệt sẽ làồ SessionID Thuộc tính SessionID trả về một con số id duy nhất dùng ðể nhận ... Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 48 Response.Write (“ỉpặ”ờ Response.Write...
Ngày tải lên: 08/07/2014, 08:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P11 pdf
... Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 54 2.4.4.2. Các phýõng thức của ... gọi phýõng thức Unlock ngay khi thực hiện xongứ Ví dụ: Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 52 Contents.RemoveAll() Thay ... Session.Contents.RemoveAll() 2.4.3.4. Các sự kiện của ðối týợng Session Session_OnStart Sự kiện này xuất hiện khi trình chủ tạo một session mớiứ ắài ðặt của sự kiện này ðýợc ðặt trong tập tin global.asa. Session_OnEnd...
Ngày tải lên: 08/07/2014, 08:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P12 potx
... øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 57 GetLastError Phýõng thức này trả về một ðối týợng ASPError mô tả lỗi xuất hiệnứ ỹặc ðịnh trang web dùng tập ... </HTML> Khi duyệt trang testứasp này ta ðýợc kết quả nhý sauồ Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 58 <HTML> <BODY> ... value="Login "></TD> </TR> </TABLE> Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 56 Cú pháp: Server.CreateObject...
Ngày tải lên: 08/07/2014, 08:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P13 pptx
... Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 64 <% Dim Dic Set Dic = ... Các thuộc tính của ðối týợng Dictionary CompareMode Ta dùng thuộc tính CompareMode ðể thiết lập hoặc nhận về chế ðộ so sánh ðể so sánh các khoá trong ðối týợng Dictionary. Cú pháp: Dictionary.CompareMode ... Dic.Add “hn”ự “ẳà ẹam” %> </BODY> </HTML> Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 65 Count Thuộc tính này trả...
Ngày tải lên: 08/07/2014, 08:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P14 potx
... Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 66 %> </BODY> </HTML> ... này sẽ bị saiứ Cú pháp: Dictionary.Add (key, value) Ví dụ: Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 70 RemoveAll Phýõng thức này ... FILESYSTEMOBJECT Ðối týợng FileSystemObject cung cấp thông tin về hệ thống tập tinự thý mục trên trình chủ và ta có thể sử dung ðối týợng này ðể thao tác với các tập tinự thý mụcựứ 2.4.8.1. Tạo...
Ngày tải lên: 08/07/2014, 08:20
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P15 docx
... mục con của thý mục C: \Web vào thý mục D:\ASP <HTML> <BODY> <% Dim fso Set fso = Server.CreateObject(“ScriptingứỳileSystemỨbject”ờ fso.CopyFolder “ắồ \Web\ *”ự “ừồ\ASP” Set ... Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 72 </BODY> </HTML> ... FileSystemObject.CreateFolder (Foldername) Ví dụ: Tạo thý mục C:\ASP Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 75 Phýõng thức này trả về phần...
Ngày tải lên: 08/07/2014, 08:20
Bạn có muốn tìm thêm với từ khóa: