tài liệp lập trình php

Tài liệu lập trình PHP

Tài liệu lập trình PHP

... movie1 .php ớ ậ ạ ư ư ớ <html> <head> <title>Find my Favorite Movie!</title> </head> <body> < ?php - 18 - là off. Ví d :ụ Thêm vào ví d movie1 .php < ?php session_start(); $_SESSION[‘username’] ... 43 - BEGINNING PHP5 .APACHE.MYSQL WEB DEVELOPMENT - 1 - Ch ng 1:ươ S L C V APACHE, PHP, MYSQL VÀƠ ƯỢ Ề CÁCH CÀI Đ TẶ 1.1. Tóm t t s l c v Apache, PHP, MySQL:ắ ơ ượ ề Apache, PHP, MySQL là các ... else { - 34 - Thêm vào ví d movie1 .php < ?php setcookie(‘username’, ‘Joe’, time()+60); //$_SESSION[‘username’]=”Joe12345”; Thêm vào ví d moviesite .php < ?php echo “Welcome to our site, “; echo...

Ngày tải lên: 17/08/2012, 08:47

258 1,1K 17
Tài liệu Lập trình và Thiết kế Web 1 – Bài 9: PHP nâng cao docx

Tài liệu Lập trình và Thiết kế Web 1 – Bài 9: PHP nâng cao docx

... đến ứng dụng gửi mail (UNIX) Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Cơ chế gửi Email Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT ... session_destroy(); Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi mail sử dụng PHP PEAR package – SMTP Authentication 1. Sử dụng PEAR package Mail .php – require_once(„Mail .php ); 2. ... denied in . Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Nội dung  Upload File  Gửi Email  Cookies  Sessions Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao ©...

Ngày tải lên: 12/12/2013, 18:15

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

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

... , $j ++) { print $j / do_math ( $i , $j ) . "\n" ; } ?> K ế t qu ả hi ệ n ra: -5148.25 -5271 -323.75 -4931 -7713.5 ? -4702.5 -488.5 -928.5 -1394.75 2. 2. 2. 2. B B B B ộ ộ ộ ộ qu qu qu qu ả ả ả ả n n n n l l l l í í í í l l l l ỗ ỗ ỗ ỗ i i i i tu tu tu tu ỳ ỳ ỳ ỳ ch ch ch ch ỉ ỉ ỉ ỉ nh nh nh nh PHP th ườ ng hi ể n th ị c á c l ỗ i th ự c thi (execution errors) ra tr ì nh duy ệ t, ng ă n b ạ n xo á (suppress) ho ặ c b ắ t (capture) n ó . Tuy nhi ê n, v ớ i PHP4 b ạ n đã c ó th ể b ắ t l ỗ i b ằ ng h à m set_error_handler(). H à m set_error_handler() c ó th ể đượ c d ù ng để ghi l ạ i c á c l ỗ i x ả y ra v ớ i ch ươ ng tr ì nh c ủ a b ạ n. Thay v ì l à m phi ề n ng ườ i d ù ng v ớ i c á c th ô ng b á o l ỗ i, b ạ n c ó th ể ghi l ạ i cho ri ê ng b ạ n, b ằ ng c á ch đặ t m ộ t h à m qu ả n l í l ỗ i tu ỳ ch ỉ nh (a custom error handling functio 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 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 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 ); ?> 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 11 11 11 11 Dormitory 204.B5 18:20 PM April 7, 2006 1.5. 1.5. 1.5. 1.5. Th Th Th Th ó ó ó ó i i i i quen quen quen quen x x x x ấ ấ ấ ấ u u u u D ướ i đâ y l à nh ữ ng th í d ụ (ph ó ng đạ i) v ề nh ữ ng t ê n bi ế n t ồ i $username_cua_csdl = 'SINHVIEN' ; $guMbi = 'bimat' ; // for the $password $tentruocdo_cua_giaovien = array ( 'Sadlon' , 'Lane' , 'Patterson' , 'Perry' , 'Sandler' , 'Mendick' , 'Zung' ); foreach ( $tentruocdo_cua_giaovien as $TeaChER ); 2. 2. 2. 2. Đặ Đặ Đặ Đặ t t t t t t t t ê ê ê ê n n n n h h h h à à à à m m m m M ọ i kh á i ni ệ m á p d ụ ng cho t ê n bi ế n c ũ ng á p d ụ ng cho đặ t t ê n h à m. Tuy nhi ê n, ng ữ ph á p đó ng vai tr ò đặ c bi ệ t trong c á c h à m. C á c h à m PHP, đị nh ngh ĩ a s ẵ n ho ặ c do ng ườ i d ù ng đị nh ngh ĩ a, l à kh ô ng-ph â n-bi ệ t-c á ch- vi ế t (not case sensitive) 2.1. 2.1. 2.1. 2.1. D D D D ù ù ù ù ng ng ng ng độ độ độ độ ng ng ng ng t t t t ừ ừ ừ ừ H à m c ủ a PHP t ươ ng đươ ng v ớ i m ộ t độ ng t ừ khi n ó i. T ê n h à m, do đó , n ê n đượ c h ướ ng h à nh độ ng (action oriented). N ó c ũ ng n ê n đượ c d ù ng ở th ì hi ệ n t ạ i. Th í d ụ , b ạ n c ó m ộ t h à m t ạ o m ộ t s ố ng ẫ u nhi ê n v ớ i ph â n b ố Gausse (a gaussian random number), b ạ n n ê n đặ t t ê n n ó l à generate_gaussian_rand(). Ch ú ý c á c s ử d ụ ng độ ng t ừ h à nh độ ng trong t ê n h à m. N ó s ẽ đặ t h à m v à o ng ữ c ả nh th í ch h ợ p < ?php list ( $num1 , $num2 ) = generate_gaussian_rand (); list ( $num3 , $num4 ) = generate_gaussian_rand (); ?> Để so s á nh, h ã y xem th í d ụ : < ?php list ( $num1 , $num2 ) = gaussian_rand_generator (); list ( $num1 , $num2 ) = gaussian_rand_generator (); ?> B ạ n c ó th ấ y s ự kh á c bi ệ t? Th í d ụ th ứ hai s ử d ụ ng danh t ừ , m ặ c d ù v ẫ n chuy ể n t ả i đượ c m ụ c ti ê u c ủ a h à m, nh ư ng n ó ng ă n ng ườ i ta đọ c m ộ t c á ch tr ô i ch ả y. H ã y s ử d ụ ng độ ng t ừ ! 13. 13. 13. 13. Kh Kh Kh Kh ô ô ô ô ng ng ng ng suy suy suy suy ngh ngh ngh ngh ĩ ĩ ĩ ĩ th th th th ấ ấ ấ ấ u u u u đá đá đá đá o: o: o: o: CSDL CSDL CSDL CSDL & & & & SQL SQL SQL SQL S ố c á ch ng ườ i ta truy c ậ p c ơ s ở d ữ li ệ u (CSDL - database) v à l ấ y k ế t qu ả nhi ề u đế n m ứ c th ự c s ự ng ạ c nhi ê n. Nh ữ ng th í d ụ t ô i đã g ặ p bao g ồ m nh ữ ng t ổ h ợ p l ệ nh if v à v ò ng l ặ p do ... , $j ++){ print $j / do_math ( $i , $j ) . "\n" ; } ?> 1.2. 1.2. 1.2. 1.2. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra k k k k ế ế ế ế t t t t qu qu qu qu ả ả ả ả 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 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 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 10 10 10 10 Dormitory 204.B5 18:20 PM April 7, 2006 PH Ầ N 2 – L Ỗ I NGHI Ê M TR Ọ NG             14. 14. 14. 14. Kh Kh Kh Kh ô ô ô ô ng ng ng ng tu tu tu tu â â â â n n n n th th th th ủ ủ ủ ủ c c c c á á á á c c c c quy quy quy quy ướ ướ ướ ướ c c c c đặ đặ đặ đặ t t t t t t t t ê ê ê ê n n n n M ộ t trong nh ữ ng l ỗ i nghi ê m tr ọ ng m à ng ườ i l ậ p tr ì nh c ó th ể ph ạ m ph ả i l à đị nh ngh ĩ a m ộ t quy ướ c đặ t t ê n t ồ i. T ô i đã ti ế p qu ả n nhi ề u d ự á n m à trong đó t ô i ph ả i b ỏ ra r ấ t nhi ề u th ờ i gi ờ ch ỉ để hi ể u ch ươ ng tr ì nh, do l ậ p tr ì nh vi ê n đặ t t ê n c á c bi ế n l à $fred v à $barney thay cho $email v à $name. T ô i đ ang đề c ậ p đế n m ộ t d ự á n m à ng ườ i l ậ p tr ì nh c ũ đã quy ế t đị nh đư a v à o to à n b ộ ch ươ ng tr ì nh m ộ t ki ể u đặ t t ê n k ì l ạ (a Flinstones naming theme), kh ô ng ph ả i t ô i đù a đâ u. C á ch b ạ n đặ t t ê n bi ế n v à h à m l à trung t â m c ủ a vi ệ c x â y d ự ng m ộ t ch ươ ng tr ì nh d ễ đọ c. C ó nhi ề u l ậ p tr ì nh vi ê n ph ạ m l ỗ i khi đặ t t ê n bi ế n v à h à m m à n ó :  qu á d à i ho ặ c qu á ng ắ n  kh ô ng li ê n quan đế n ng ữ c ả nh  kh ô ng để ý đế n c á ch-vi ế t-ph â n-bi ệ t (case sensitivity)  ng ă n c ả n kh ả n ă ng d ễ đọ c ( đặ c bi ệ t l à c á c h à m) 1. 1. 1. 1. Đặ Đặ Đặ Đặ t t t t t t t t ê ê ê ê n n n n bi bi bi bi ế ế ế ế n n n n 1.1. 1.1. 1.1. 1.1. C C C C á á á á ch ch ch ch vi vi vi vi ế ế ế ế t t t t ph ph ph ph â â â â n n n n bi bi bi bi ệ ệ ệ ệ t t t t Trong PHP, t ê n bi ế n c ó c á ch vi ế t ph â n bi ệ t, ngh ĩ a l à $user v à $User l à ho à n to à n kh á c nhau. V à i ng ườ i d ù ng l ợ i d ụ ng đ i ể m n à y để đặ t c á c bi ê n c ù ng t ê n nh ư ng kh á c c á ch vi ế t. Đâ y l à m ộ t th ó i quen t ồ i t ệ . C á ch vi ế t kh ô ng bao gi ờ n ê n d ù ng để ph â n bi ệ t c á c bi ế n kh á c nhau. M ỗ i t ê n bi ế n, trong c ù ng t ầ m v ự c (scope), n ê n c ó l à tuy ệ t đố i duy nh ấ t. 1.2. 1.2. 1.2. 1.2. T T T T ê ê ê ê n n n n qu qu qu qu á á á á ng ng ng ng ắ ắ ắ ắ n n n n Nhi ề u ng ườ i s ử d ụ ng nh ữ ng ch ữ vi ế t t ắ t đầ u (cryptic acronym) b í ẩ n cho c á c bi ế n c ủ a h ọ , để r ồ i sau n à y h ố i ti ế c v ì qu ê n m ấ t h ọ đã mu ố n á m ch ỉ đ i ề u g ì khi đó . T ê n bi ế n n ê n m ô t ả n ộ i dung n ó (s ẽ ) ch ứ a, d ù ng nguy ê n t ừ ho ặ c nh ữ ng ch ữ vi ế t t ắ t c ó th ể hi ể u đượ c . 1.3. 1.3. 1.3. 1.3. T T T T ê ê ê ê n n n n qu qu qu qu á á á á d d d d à à à à i i i i Ở kh í a c ạ nh kh á c, v à i ng ườ i l ạ i s ử d ụ ng t ê n bi ế n qu á d à i. N ó i chung, t ê n bi ế n kh ô ng n ê n d à i qu á hai t ừ . Hai t ừ c ó th ể đượ c t á ch bi ệ t b ằ ng d ấ u ph â n c á ch "_" ho ặ c l à vi ế t hoa ch ữ đầ u c ủ a t ừ th ứ hai. 1.4. 1.4. 1.4. 1.4. Th Th Th Th ó ó ó ó i i i i quen quen quen quen t t t t ố ố ố ố t t t t D ướ i đâ y l à nh ữ ng th í d ụ t ố t v ề t ê n bi ế n $username = 'phanthanhkieu' ; $password = 'bimat' ; $teachers = array ( 'Sadlon' , 'Lane' , 'Patterson' , 'Perry' , 'Sandler' , 'Mendick' , 'Zung' ); foreach ( $teachers as $teacher ); 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 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 16 16 16 16 Dormitory 204.B5 18:20 PM April 7, 2006 M ệ nh đề WHERE cho ph é p b ạ n t ì m ki ế m ch ọ n l ọ c h ơ n. Gi ớ i h ạ n ch ọ n l ọ c c ủ a m ệ nh đề where ch í nh l à m ộ t h à m v ớ i đố i s ố c ủ a n ó . Trong th í d ụ tr ê n đố i s ố l à " MASV='511203008' ". B â y gi ờ ch ú ng ta đã ch ọ n đượ c d ữ li ệ u c ầ n thi ế t, b ạ n ch ỉ vi ệ c d ù ng PHP để in ra sau đó : if (@ sql_num_rows ( $truyvan ) != 1 ) { die ( "Khong dung so mau tin nhan duoc tu CSDL!" ); } $mautin = @ sql_fetch_array ( $truyvan ); print "Ho va ten: $mautin[HOTEN]\n<br>\n" ; print "MASV: $mautin[MASV]\n<br>\n" ; 3. 3. 3. 3. D D D D ù ù ù ù ng ng ng ng PHP PHP PHP PHP s s s s ắ ắ ắ ắ p p p p x x x x ế ế ế ế p p p p k k k k ế ế ế ế t t t t qu qu qu qu ả ả ả ả Nhi ề u ng ườ i l ấ y d ữ li ệ u ở t ì nh tr ạ ng kh ô ng c ó th ứ t ự , nh ư ng r ồ i đ o ạ n m ã PHP ti ế p theo l ạ i s ắ p th ứ t ự ch ú ng. N ê n ch ớ r ằ ng s ắ p x ế p b ằ ng SQL nhanh h ơ n PHP. D ù ng c ú ph á p ORDER BY c ủ a SQL để s ắ p x ế p thay v ì h à m ksort() c ủ a PHP. Th í d ụ d ướ i đâ y d ù ng ksort() để s ắ p x ế p theo t ê n: $strsql = "SELECT name, email, phone FROM some_table " ; $strsql .= "WHERE name IS LIKE '%baggins'" ; $truyvan = @ sql_db_query ( $strsql , "samp_db" , $ketnoi ); if (! $truyvan ) { die ( sprintf ( "Error [%d]: %s" , sql_errno (), sql_error ())); } while ( $mautin = @ sql_fetch_array $truyvan )){ $matches [ $mautin [ name ]] = array ( $mautin [ email ], $mautin [ phone ]); } ksort ( $matches ); Nh ư ng t ạ i sao kh ô ng s ắ p x ế p d ữ li ệ u ngay v à o l ú c n ó đượ c đị nh ngh ĩ a? N ó gi ú p ch ú ng ta đỡ ph ả i duy ệ t qua t ậ p k ế t qu ả l ầ n th ứ hai. Do v ậ y, b ỏ h à m ksort() ra kh ỏ i ch ươ ng tr ì nh tr ê n v à thay đ o ạ n m ã SQL b ằ ng đ o ạ n d ướ i đâ y, c ó d ù ng d ù ng c ú ph á p ORDER BY: $strsql = "SELECT name, email, phone FROM some_table " ; $strsql .= "WHERE name IS LIKE '%baggins' ORDER BY name" ; 12. 12. 12. 12. Thi Thi Thi Thi ế ế ế ế u u u u s s s s ự ự ự ự ki ki ki ki ể ể ể ể m m m m l l l l ỗ ỗ ỗ ỗ i i i i T ô i đã th ấ y nhi ề u ch ươ ng tr ì nh thi ế u m ộ t l ượ ng ki ể m tra l ỗ i đầ y đủ . Nguy ê n nh â n ph ầ n l ớ n l à do l ậ p tr ì nh vi ê n kh ô ng d à nh th ờ i gian để l ê n m ộ t k ế ho ạ ch th í ch h ợ p cho ch ươ ng tr ì nh c ủ a m ì nh, v à x á c đị nh nh ữ ng v ị tr í c ó th ể d ẫ n đế n l ỗ i. Ki ể m tra l ỗ i kh ô ng n ê n th ự c hi ệ n sau khi vi ế t ch ươ ng tr ì nh. S ự thi ế u s ó t trong t ầ m nh ì n tr ướ c c ó th ể d ẫ n đế n nh ữ ng l ỗ i nghi ê m tr ọ ng, kh ô ng nh ữ ng g â y ra k ế t qu ả sai m à th ậ m ch í c ò n l à m h ỏ ng h ệ th ố ng (even cause your system to crash)! 1. 1. 1. 1. Mong Mong Mong Mong đợ đợ đợ đợ i i i i đ đ đ đ i i i i ề ề ề ề u u u u t t t t ệ ệ ệ ệ nh nh nh nh ấ ấ ấ ấ t t t t M ọ i ch ươ ng tr ì nh đề u c ó kh ả n ă ng h ư h ỏ ng trong nh ữ ng t ì nh hu ố ng sai . Để gi ả m thi ể u nh ữ ng r ủ i ro nh ư th ế , b ạ n c ầ n l ê n k ế ho ạ ch để : 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 3 3 3 3 Dormitory 204.B5 18:20 PM April 7, 2006 Đó l à do bi ế n $fp đặ t trong d ấ u nh á y k é p n ê n đượ c chuy ể n th à nh chu ỗ i. Th ế m à h à m fopen() nh ậ n m ộ t đị nh danh t à i nguy ê n (resource identifier) trong tham s ố đầ u c ủ a n ó , ch ứ kh ô ng nh ậ n m ộ t chu ỗ i. Để gi ả i quy ế t v ấ n đề , b ạ n ch ỉ đơ n gi ả n b ỏ d ấ u nh á y k é p đ i 1. 1. 1. 1. C C C C ó ó ó ó th th th th ể ể ể ể tr tr tr tr á á á á nh nh nh nh vi vi vi vi ệ ệ ệ ệ c c c c á á á á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng ng ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a? a? a? a? Our example above generated an error statement. But PHP enables you to customize your scripts to fit a unique scenario or output requirement. So, it is at least theoretically possible to "get away" with misapplying a semantic. T ô i kh ô ng hi ể u, nh ư ng d ị ch t h ế n à y đượ c kh ô ng? Th í d ụ tr ê n c ủ a ch ú ng ta t ạ o ra m ộ t th ô ng b á o l ỗ i. Nh ư ng PHP cho ph é p b ạ n tu ỳ bi ế n c á c script để th í ch h ợ p v ớ i m ộ t k ị ch b ả n kh á c th ườ ng ho ặ c v ớ i c á c đò i h ỏ i c ủ a th ô ng tin ra. Do đó , í t nh ấ t tr ê n l í thuy ế t, b ạ n c ó kh ả n ă ng tr á nh vi ệ c á p d ụ ng sai ng ữ ngh ĩ a. V ậ y, b ạ n c ầ n bi ế t nh ữ ng h ậ u qu ả c ó th ể c ó (possible outcomes) n ế u b ạ n quy ế t đị nh h ọ c v ề ng ữ ngh ĩ a. Á p d ụ ng sai d ẫ n đế n nh ữ ng l ỗ i kh á tinh vi n ế u b ạ n kh ô ng ch ú ý . N ế u b ạ n mu ố n tu ỳ bi ế n script, b ạ n c ầ n hi ể u nh ữ ng ch ủ đề ch í nh sau:  Ki Ki Ki Ki ể ể ể ể u: u: u: u: trong PHP, m ỗ i bi ế n c ó m ộ t ki ể u x á c đị nh ở m ộ t th ờ i đ i ể m x á c đị nh, cho d ù b ạ n c ó th ể t ự do chuy ể n đổ i ki ể u m ộ t bi ế n. N ó i m ộ t c á ch kh á c, kh ô ng c ó bi ế n n à o l ạ i kh ô ng k è m theo t í nh ch ấ t c ủ a ki ể u c ủ a n ó . PHP c ó 7 ki ể u c ơ b ả n: boolean, resource, integer, doubl e, string, array v à object.  T T T T ầ ầ ầ ầ m m m m v v v v ự ự ự ự c: c: c: c: trong PHP, m ỗ i bi ế n c ó m ộ t t ầ m v ự c ri ê ng. T ầ m v ự c bi ế n quy đị nh bi ế n c ó th ể đượ c truy c ậ p t ừ đâ u, t ồ n t ạ i trong th ờ i gian n à o. Hi ể u sai kh á i ni ệ m c ơ b ả n v ề "t ầ m v ự c" d ẫ n đế n nh ữ ng l ỗ i sai tinh t ế v à c ả nh ữ ng l ỗ i l ớ n.  php. ini: php. ini: php. ini: php. ini: khi vi ế t m ộ t script ch ạ y ở nhi ề u m ô i tr ườ ng kh á c nhau, c ầ n bi ế t r ằ ng kh ô ng ph ả i m ọ i c ấ u h ì nh PHP đề u nh ư nhau. Do đó , c ầ n thi ế t nh ữ ng l ệ nh ki ể m tra để đả m b ả o script c ủ a b ạ n ch ạ y t ố t trong c ấ u h ì nh PHP c ủ a ng ườ i kh á c. 19. 19. 19. 19. Thi Thi Thi Thi ế ế ế ế u u u u ghi ghi ghi ghi ch ch ch ch ú ú ú ú Theo ý t ô i, m ã ngu ồ n thi ế u ghi ch ú l à c ă n nguy ê n c ủ a s ự l ậ p tr ì nh í ch k ỉ . N ó d ẫ n t ớ i nh ữ ng hi ệ u ch ỉ nh sai l ầ m, hi ể u sai ý ngh ĩ a v à l à m ng ườ i đọ c m ệ t m ỏ i. N ó i chung, l ậ p tr ì nh ghi ch ú (inline documentation) đượ c m ọ i ng ườ i kh ẳ ng nh ậ n l à đ i ề u t ố t, nh ư ng hi ế m khi n ó t ồ n t ạ i. M ộ t v ấ n đề kh á c l à qu á nhi ề u ghi ch ú . D ù hi ế m g ặ p, nh ư ng n ó l à m cho c á c đ o ạ n m ã b ị c ắ t v ụ n, g â y ra s ự kh ó theo d õ i. D ướ i đâ y l à m ộ t th í d ụ : <? // Bat dau ma PHP $age = 18 ; // Gan 18 den $age $age ++; // Tang $age len 1 don vi // IN ra doan text thong bao: print "You are now 19, which means you have been:" ; print "\n<br>\n<br>\n" ; // Vong lap for in ra tat ca tuoi truoc do for ( $idx = 0 ; $idx < $age ; $idx ++) { <? $fp = @ fopen ( 'vanban.txt' , 'r' ) or die ( ‘ Khong the mo file tailieuphp.txt' ); while ( $line = @ fgets ( $fp , 1024 )) { print $line ; } @ fclose ( $fp ) or die ( Khong the dong file vanban.txt ' ); ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 4 4 4 4 Dormitory 204.B5 18:20 PM April 7, 2006 // In ra tuoi ca nhan print "$idx years old \n <br> \n " ; } / / Ket thuc ma PHP ? > 1. 1. 1. 1. Bao Bao Bao Bao nhi nhi nhi nhi ê ê ê ê u u u u ghi ghi ghi ghi ch ch ch ch ú ú ú ú th th th th ì ì ì ì đủ đủ đủ đủ ? ? ? ? Nhi ế u đế n m ứ c n à o, đ i ề u đó tu ỳ thu ộ c ng â n s á ch c ủ a b ạ n, v à o ch í nh s á ch c ủ a c ô ng ty v à v à o độ ph ứ c t ạ p c ủ a ch ươ ng tr ì nh. Tuy nhi ê n, c ũ ng c ó m ộ t v à i g ợ i ý cho b ạ n  Lu ô n c ó m ộ t m ô t ả ng ắ n v ề m ụ c đí ch c ủ a h à m ngay tr ướ c đị nh ngh ĩ a c ủ a h à m đó  Th ê m ghi ch ú v à o nh ữ ng ch ỗ c ó th ể b ị hack, ho ặ c nh ữ ng ch ỗ t ưở ng r ằ ng sai nh ư ng l ạ i ch ạ y đú ng  N ế u m ộ t đ o ạ n m ã n à o đó c ó th ể g â y nh ầ m l ẫ n, h ã y th ê m m ộ t í t ghi ch ú v ề m ụ c đí ch c ủ a đ o ạ n đó . Sau n à y b ạ n s ẽ th ấ y đượ c l ợ i í ch c ủ a n ó  D ù ng m ộ t ki ể u ghi ch ú nh ấ t qu á n, /* /* /* /* */ */ */ */ ho ặ c l à // // // // (tr (tr (tr (tr á á á á nh nh nh nh d d d d ù ù ù ù ng ng ng ng #) #) #) #) D ướ i đâ y l à m ộ t th í d ụ v ề ghi ch ú t ố t: <? // Random_Numbers.lib // Generate different types of random numbers. mt_srand ((double) microtime ()* 1000000 ); // mixed random_element(array elements[, array weights]) // Extract a random element from elements. Weights is // the relative probability that each element will be // selected. function random_element ( $elements , $weights =array()) { // There must be exactly the same amount of elements as // there are weights for this algorithm to work properly if ( count ( $weights ) == count ( $elements )) { foreach ( $elements as $element ) { foreach ( $weights as $idx ) { // Note: we don't use $idx, since we // don't want to override elements. $randomAr [] = $element ; } } } else { $randomAr = $elements ; } $random_element = mt_rand ( 0 , count ( $randomAr )- 1 ); return $randomAr [ $random_element ]; } ?> 18. 18. 18. 18. Nhi Nhi Nhi Nhi ề ề ề ề u u u u bi bi bi bi ế ế ế ế n, n, n, n, t t t t ố ố ố ố n n n n nhi nhi nhi nhi ề ề ề ề u u u u th th th th ờ ờ ờ ờ i i i i gian gian gian gian C ó v à i ng ườ i b ị á m ả nh b ở i bi ế n trung gian. T ô i kh ô ng th ể hi ể u n ổ i t ạ i sao ai đó c ó th ể vi ế t nh ư th ế n à y: PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 18 18 18 18 Dormitory 204.B5 18:20 PM April 7, 2006 Lu ô n đả m b ả o r ằ ng, khi b ạ n l à m vi ệ c v ớ i c á c ti ế n tr ì nh ho ặ c t ậ p tin ngo à i PHP, m ọ i th ứ đề u v ậ n h à nh đú ng. M ộ t th í d ụ tuy ệ t v ờ i l à vi ệ c ki ể m tra đầ u ra c ủ a m ộ t l ờ i g ọ i h ệ th ố ng khi d ù ng h à m sql_connect(). X á c nh ậ n đầ u ra để ki ể m tra li ê n k ế t đế n CSDL l à đú ng. L à m sai đ i ề u n à y c ó th ể d ẫ n đế n c á c truy v ấ n h ỏ ng v à m ấ t d ữ li ệ u trong khi th ậ m ch í b ạ n kh ô ng bi ế t. $ketnoi = @ sql_connect ( $host , $user , $pass ); if (! $ketnoi ) { die ( sprintf ( "Error [%d]: %s" , sql_errno (), sql_error ())); } 1.3. 1.3. 1.3. 1.3. Đặ Đặ Đặ Đặ t t t t m m m m ứ ứ ứ ứ c c c c error_reporting error_reporting error_reporting error_reporting l l l l à à à à E_ALL E_ALL E_ALL E_ALL trong trong trong trong t t t t ậ ậ ậ ậ p p p p tin tin tin tin php. ini php. ini php. ini php. ini H ã y đả m b ả o b ạ n c ấ u h ì nh v ớ i m ứ c độ b á o l ỗ i cao nh ấ t c ó th ể . N ế u b ạ n kh ô ng đặ t n ó ở m ứ c cao nh ấ t, í t nh ấ t l à trong qu á tr ì nh t ì m l ỗ i (debugging), b ạ n c ó th ể b ỏ qua nh ữ ng l ỗ i nh ư l à bi ể u th ứ c ch í nh quy (regular expressions) kh ô ng h ợ p l ệ v à c á c gi á tr ị kh ô n g ch í nh x á c. Xem l ạ i l ầ n n ữ a th í d ụ t ô i đã đư a trong ph ầ n Ki ể m tra k ế t qu ả l ờ i g ọ i h à m, ở d ướ i đâ y. Gi ả s ử b ạ n đặ t error reporting ở m ứ c th ấ p,E_ERROR. Ch ú ý r ằ ng k ế t qu ả in ra khi ch ươ ng tr ì nh thi h à nh h à m do_math: kh ô ng c ó th ô ng b á o illegal division by zero đã t ừ ng hi ệ n ra l ầ n tr ướ c, ph ầ n $i=$j=0 đơ n thu ầ n kh ô ng hi ệ n k ế t qu ả . < ?php error_reporting ( E_ERROR ); mt_srand ((double) microtime () * 1000000 ); function do_math ( $a , $b ) { return (( $a - $b ) * 2 ) / mt_rand (); } for ( $i = 5 , $j = - 5 ; $i > - 5 ; $i ... , $j ++) { print $j / do_math ( $i , $j ) . "\n" ; } ?> K ế t qu ả hi ệ n ra: -5148.25 -5271 -323.75 -4931 -7713.5 ? -4702.5 -488.5 -928.5 -1394.75 2. 2. 2. 2. B B B B ộ ộ ộ ộ qu qu qu qu ả ả ả ả n n n n l l l l í í í í l l l l ỗ ỗ ỗ ỗ i i i i tu tu tu tu ỳ ỳ ỳ ỳ ch ch ch ch ỉ ỉ ỉ ỉ nh nh nh nh PHP th ườ ng hi ể n th ị c á c l ỗ i th ự c thi (execution errors) ra tr ì nh duy ệ t, ng ă n b ạ n xo á (suppress) ho ặ c b ắ t (capture) n ó . Tuy nhi ê n, v ớ i PHP4 b ạ n đã c ó th ể b ắ t l ỗ i b ằ ng h à m set_error_handler(). H à m set_error_handler() c ó th ể đượ c d ù ng để ghi l ạ i c á c l ỗ i x ả y ra v ớ i ch ươ ng tr ì nh c ủ a b ạ n. Thay v ì l à m phi ề n ng ườ i d ù ng v ớ i c á c th ô ng b á o l ỗ i, b ạ n c ó th ể ghi l ạ i cho ri ê ng b ạ n, b ằ ng c á ch đặ t m ộ t h à m qu ả n l í l ỗ i tu ỳ ch ỉ nh (a custom error handling functio 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 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 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 ); ?> 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 11 11 11 11 Dormitory 204.B5 18:20 PM April 7, 2006 1.5. 1.5. 1.5. 1.5. Th Th Th Th ó ó ó ó i i i i quen quen quen quen x x x x ấ ấ ấ ấ u u u u D ướ i đâ y l à nh ữ ng th í d ụ (ph ó ng đạ i) v ề nh ữ ng t ê n bi ế n t ồ i $username_cua_csdl = 'SINHVIEN' ; $guMbi = 'bimat' ; // for the $password $tentruocdo_cua_giaovien = array ( 'Sadlon' , 'Lane' , 'Patterson' , 'Perry' , 'Sandler' , 'Mendick' , 'Zung' ); foreach ( $tentruocdo_cua_giaovien as $TeaChER ); 2. 2. 2. 2. Đặ Đặ Đặ Đặ t t t t t t t t ê ê ê ê n n n n h h h h à à à à m m m m M ọ i kh á i ni ệ m á p d ụ ng cho t ê n bi ế n c ũ ng á p d ụ ng cho đặ t t ê n h à m. Tuy nhi ê n, ng ữ ph á p đó ng vai tr ò đặ c bi ệ t trong c á c h à m. C á c h à m PHP, đị nh ngh ĩ a s ẵ n ho ặ c do ng ườ i d ù ng đị nh ngh ĩ a, l à kh ô ng-ph â n-bi ệ t-c á ch- vi ế t (not case sensitive) 2.1. 2.1. 2.1. 2.1. D D D D ù ù ù ù ng ng ng ng độ độ độ độ ng ng ng ng t t t t ừ ừ ừ ừ H à m c ủ a PHP t ươ ng đươ ng v ớ i m ộ t độ ng t ừ khi n ó i. T ê n h à m, do đó , n ê n đượ c h ướ ng h à nh độ ng (action oriented). N ó c ũ ng n ê n đượ c d ù ng ở th ì hi ệ n t ạ i. Th í d ụ , b ạ n c ó m ộ t h à m t ạ o m ộ t s ố ng ẫ u nhi ê n v ớ i ph â n b ố Gausse (a gaussian random number), b ạ n n ê n đặ t t ê n n ó l à generate_gaussian_rand(). Ch ú ý c á c s ử d ụ ng độ ng t ừ h à nh độ ng trong t ê n h à m. N ó s ẽ đặ t h à m v à o ng ữ c ả nh th í ch h ợ p < ?php list ( $num1 , $num2 ) = generate_gaussian_rand (); list ( $num3 , $num4 ) = generate_gaussian_rand (); ?> Để so s á nh, h ã y xem th í d ụ : < ?php list ( $num1 , $num2 ) = gaussian_rand_generator (); list ( $num1 , $num2 ) = gaussian_rand_generator (); ?> B ạ n c ó th ấ y s ự kh á c bi ệ t? Th í d ụ th ứ hai s ử d ụ ng danh t ừ , m ặ c d ù v ẫ n chuy ể n t ả i đượ c m ụ c ti ê u c ủ a h à m, nh ư ng n ó ng ă n ng ườ i ta đọ c m ộ t c á ch tr ô i ch ả y. H ã y s ử d ụ ng độ ng t ừ ! 13. 13. 13. 13. Kh Kh Kh Kh ô ô ô ô ng ng ng ng suy suy suy suy ngh ngh ngh ngh ĩ ĩ ĩ ĩ th th th th ấ ấ ấ ấ u u u u đá đá đá đá o: o: o: o: CSDL CSDL CSDL CSDL & & & & SQL SQL SQL SQL S ố c á ch ng ườ i ta truy c ậ p c ơ s ở d ữ li ệ u (CSDL - database) v à l ấ y k ế t qu ả nhi ề u đế n m ứ c th ự c s ự ng ạ c nhi ê n. Nh ữ ng th í d ụ t ô i đã g ặ p bao g ồ m nh ữ ng t ổ h ợ p l ệ nh if v à v ò ng l ặ p do...

Ngày tải lên: 13/12/2013, 04:15

27 328 0
Tài liệu Lập trình web động với PHP/MySQL ppt

Tài liệu Lập trình web động với PHP/MySQL ppt

... <h2><a href=”view .php >View My Guest Book!!!</a></h2> < ?php } else { include(“sign .php ); } ?> LẬP TRÌNH WEB ĐỘNG VỚI PHP / MySQL  GUESTBOOK  ... create_entry .php được gọi, form sign .php sẽ được hiển thị. Kế tiếp, dữ liệu sẽ được cập nhật vào CSDL. Hình sau minh hoạ các form được hiển thị: sign .php Trong trường hợp của PHP, các lập trình ... lập trình xuất sắc đợi sẵn và họ sẵn sàng bỏ thời gian ra để tạo những phần mềm tuyệt vời và hầu như miễn phí. Đối với ngôn ngữ thịnh hành như PHP thì ắt hẳn là các rất nhiều các nhà lập trình...

Ngày tải lên: 13/12/2013, 16:16

41 502 3
Tài liệu Lập trình web với PHP - p9 ppt

Tài liệu Lập trình web với PHP - p9 ppt

... trong php. Xen lẫn giữa < ?php và ?> Bạn có thể xem code php trong html trong cách khác - <? và ?> Phải mở trong file php. ini với thẻ mở ngắn. - <% và %> Phải mở trong file php. ini ... lớp. Chương 2: TẠO NHỮNG TRANG PHP SỬ DỤNG PHP5 Chương 2 giới thiệu những phần sau: 1. Sử dụng “echo” để trình bài text. 2. Định dạng text bằng HTML và PHP. 3. Hằng và biến. 4. Sử dụng ... về PHP5 và việc sử dụng OOP. OOP nghĩa là lập trình hướng đối tượng và trong khi nó không là đoạn mã logic tốt nhất nhưng có thể cung cấp một vài tập lệnh tốt. Số lượng lớn về OOP trong PHP5 ...

Ngày tải lên: 14/12/2013, 11:15

6 582 1
Tài liệu Lập trình web với PHP - p10 docx

Tài liệu Lập trình web với PHP - p10 docx

... Chương 3 : SỬ DỤNG PHP VỚI MYSQL Ở chương 2, chúng ta đã tạo được trang Web với việc sử dụng những hàm. Nhưng chúng ta chưa thực sự hiểu mối quan hệ giữa MySQL và PHP. Trong chương này ... thể sử dụng UNIQUE để thể hiện tính độc quyền, không thể chèn thêm dữ liệu, khi thêm vào chương trình sẽ báo lỗi. 1.1.7. Tăng tự động(auto Increment) Bạn có thể thiết kế vùng tăng tự động bằng...

Ngày tải lên: 14/12/2013, 11:15

6 466 0

Bạn có muốn tìm thêm với từ khóa:

w