giáo trình lập trình web bằng php

Bài giảng - giáo án: Nhập môn lập trình web với ngôn ngữ PHP bài 1 tổng quan về lập trình web bằng PHP

Bài giảng - giáo án: Nhập môn lập trình web với ngôn ngữ PHP bài 1 tổng quan về lập trình web bằng PHP

Ngày tải lên : 17/04/2014, 18:19
... NHIÊN-TP.HCM NHẬP MÔN LẬP TRÌNH WEB VỚI PHP 21 Bài 1: Tổng quan lập trình PHP Các thao tác cơ bản Các thao tác cơ bản  Tạo trang PHP 24 Bài 1: Tổng quan lập trình PHP 20 Bài 1: Tổng quan lập trình PHP Công ... ứng dụng PHP Công cụ để xây dựng ứng dụng PHP  Macro Media Dream Weaver 7 Bài 1: Tổng quan lập trình PHP Web Server và Web Client Web Server và Web Client  Web Server – Máy tính lưu trữ website – Trả ... trữ ứng dụng  Công cụ để xây dựng ứng dụng PHP  Các thao tác cơ bản 8 Bài 1: Tổng quan lập trình PHP Trình duyệt webWeb Browser Trình duyệt webWeb Browser  Phần mềm dùng để xem các tài...
  • 24
  • 1.3K
  • 3
Giáo trình lập trình PHP và MySQL

Giáo trình lập trình PHP và MySQL

Ngày tải lên : 06/09/2012, 14:50
... 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...
  • 41
  • 1.7K
  • 12
Tài liệu Giáo trình: Lập trình PHP pdf

Tài liệu Giáo trình: Lập trình PHP pdf

Ngày tải lên : 16/12/2013, 08:15
... 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 ...
  • 28
  • 349
  • 1
Bài giảng - Giáo án: lập trinh web development fix

Bài giảng - Giáo án: lập trinh web development fix

Ngày tải lên : 17/04/2014, 07:36
... 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 ... trang web này bằng ba trình duyệt khác nhau thì bạn không thấy gì khác biệt. Điều khác biệt chỉ xảy ra khi chúng ta bắt đầu tương tác với các thành phần trên trang web. Tác giả của trang web ... 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...
  • 264
  • 480
  • 0
Bài giảng - Giáo án: Lập trình google map bằng ngôn ngữ api

Bài giảng - Giáo án: Lập trình google map bằng ngôn ngữ api

Ngày tải lên : 17/04/2014, 21:12
... CSDL .php <? $username="username"; $password="password"; $database="username-databaseName"; ?> • Sử dụng chức năng domxml PHP xuất ra XML. file "xuat_xml .php& quot; < ?php ... vào các trang web, bạn có thể tận dụng lợi thế của các trình duyệt cung cấp đối tượng XMLHttpRequest. Đối tượng này cho phép bạn lấy một tập tin nằm trên cùng tên miền với trang web yêu cầu, ... Với lượng kiến thức tôi trình bày ở trên, và một số kiến thức về PHP/ Mysql cũng đủ giúp chúng ta hiểu và làm được ứng dụng này. • Hướng dẫn dành cho người hay sử dụng PHP, Mysql và làm thế nào...
  • 29
  • 2.4K
  • 36
giáo trình lập trình web asp.net 4.5 dùng ngôn ngữ c#

giáo trình lập trình web asp.net 4.5 dùng ngôn ngữ c#

Ngày tải lên : 18/04/2014, 06:16
... 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...
  • 502
  • 1.8K
  • 5
Giáo trình lập trình web cơ bản nhất (hay)

Giáo trình lập trình web cơ bản nhất (hay)

Ngày tải lên : 17/06/2014, 15:01
... DREAMWEAVER Thiết kế bằng HTML Thiết kế bằng HTML và bằng công cụ Thiết kế bằng công cụ Tiêu đề của trang hiện hành Thể hiện lỗi khi thiết kế Quản lý file Xem thử kết quả bằng trình duyệt Các tùy chọn khi thiết kế ... 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 ... ứng dụng trong Web động. + Flash elements: các thành phần của Flash. GIỚI THIỆU DREAMWEAVER GIỚI THIỆU DREAMWEAVER MÔN HỌC MÔN HỌC : : THIẾT KẾ WEB THIẾT KẾ WEB THIẾT KẾ WEB BẰNG MACROMEDIA...
  • 85
  • 1.1K
  • 1
Giáo trình lập trình ứng dụng CSDL Web ASP pptx

Giáo trình lập trình ứng dụng CSDL Web ASP pptx

Ngày tải lên : 27/06/2014, 12:20
... 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 ... script ðýợc viết bằng ngôn ngữ VBScript (hoặc cũng có thể bằng ỏavaScriptờự dùng ðể lập trình phía máy chủ ộServerờự nghĩa là chúng ðýợc biên dịch và xử lý ngay tại máy chủ bằng trình biên dịch ... 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...
  • 140
  • 369
  • 0
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P7 doc

Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P7 doc

Ngày tải lên : 08/07/2014, 08:20
... 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 ... tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com 34 Ðể truy xuất các giá trị của các control ẳTỹỔ mà ngýời dùng submit bằng phýõng thức POST ta sử...
  • 5
  • 295
  • 0
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P8 docx

Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P8 docx

Ngày tải lên : 08/07/2014, 08:20
... 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...
  • 5
  • 267
  • 0
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P9 doc

Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P9 doc

Ngày tải lên : 08/07/2014, 08:20
... 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...
  • 5
  • 433
  • 1
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P10 pptx

Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P10 pptx

Ngày tải lên : 08/07/2014, 08:20
... 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...
  • 5
  • 263
  • 0
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- P11 pdf

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 === 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...
  • 5
  • 245
  • 0
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P12 potx

Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P12 potx

Ngày tải lên : 08/07/2014, 08:20
... ø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 ... kiện Session_OnEnd và Application_OnEnd. Cú pháp: Server.MapPath (path) Chú ý: Nếu path bắt ðầu bằng ký tự ụ hoặc \ thì các ký tự này ðại diện cho ðýờng dẫn vật lý của thý mục ảo của tập tin ... </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>...
  • 5
  • 282
  • 0
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- P13 pptx

Ngày tải lên : 08/07/2014, 08:20
... ta phải hủy bỏ thực thể ðó bằng cáchồ Set Dic = nothing 2.4.7.2. 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 ... týợng Dictionary ðýợc tạo ra bởi ðối týợng Server bằng việc gọi phýõng thức CreateObject nhý sauồ Gi¸o tr×nh lËp tr×nh øng dông CSDL Web ASP === St by hoangly85 === hoangly85@updatesofts.com ... 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ả...
  • 5
  • 328
  • 0

Xem thêm