0

lập trình php với netbean

Tài liệu lập trình php với mySQL

Tài liệu lập trình php với mySQL

Kỹ thuật lập trình

... Thông thường người ta dùng kiểu này cho field chứa giá trị Yes hoặc No. Ví dụ: LẬP TRÌNH WEB ĐỘNG VỚI PHP / MySQL  GUESTBOOK  CATALOG  FORUM  SHOPPING CART PHẦN 2 Tống Phước ... từng làm việc với MS SQL Server hay Access chúng đều có hỗ trợ việc tạo CSDL rất là dễ dàng với giao diện trực quan. Đối với MySQL bạn cũng có thể sử dụng công cụ trực quan đó là phpMyadmin. ... cách thao tác với CSDL bằng dòng lệnh, tôi chắc rằng điều này sẽ rất có ích cho bạn. Muốn chương trình của bạn trong lúc chạy thao tác tự động với CSDL thì bạn cần hàng tá lệnh PHP/ SQL để thực...
  • 47
  • 779
  • 4
Lập trình web với php và MySQL

Lập trình web với php và MySQL

Kỹ thuật lập trình

... ngôn ngữ lập trình và một Web Server. Cũng vậy, PHP4 được tích hợp rất tối đối với IIS. Trước đây, có một số vấn đề cần phải bàn về tính ổn định của PHP/ IIS với việc truyền tải lớn, nhưng PHP và ... dụng PHP và MySQL Tại sao có quá nhiều chọn lựa như vậy mà chúng ta lại phải chỉ lấy ra cặp bài trùng PHP/ MySQL mà thôi? Tôi sẽ giải thích điều naỳ ở phần sau. Nói về PHP Các ngôn ngữ lập trình ... thuộc và ngôn ngữ lập trình cũng tương tự như vậy. Ở đây tôi muốn ngụ ý với các bạn là khi lập trình Web, các ngôn ngữ lập trình đều cho kết quả gần giống nhau. Câu hỏi ngôn ngữ nào tốt nhất không...
  • 49
  • 1,245
  • 15
Lập trình động với PHP và MySQL - Giới thiệu

Lập trình động với PHP và MySQL - Giới thiệu

Kỹ thuật lập trình

... thật chính đáng đến các bạn đến với chúng tôi ở đây. Lập trình Web đang là một cuộc chơi đầy hứa hẹn hiện nay cũng như tương lai. Bất kể bạn có kiến thức cơ sở lập trình cho bất kỳ loại ngôn ngữ ... sẽ trở nên dễ dàng nếu bạn muốn duy trì làm việc với môi trường này. Nếu bạn là thành viên của nhóm lập trình Visual Basic, có lẽ bạn sẽ gắn bó với NT/2000/2003. Ngay cả trong trường hợp này, ... phải cài đặt thêm PHP. Còn nữa, bạn phải cài MySQL. Như vậy bộ ba Apache, PHP và MySQL luôn đồng hành với nhau. Bạn xem thêm phần cài Apache server trên các CD thực hành PHP hoặc xem trên các...
  • 41
  • 460
  • 0
Lập trình web với PHP - p33

Lập trình web với PHP - p33

Kỹ thuật lập trình

... <form action=”commit .php? action=< ?php echo $_GET[„action‟]; ?>&type=movie&id=< ?php if (isset($_GET[„id‟])) { echo $_GET[„id‟]; } ?>” method=”post”> < ?php if (!empty($_GET[„error‟])) ... } ?> <option value=”< ?php echo $people_id; ?>” < ?php echo $selected; ?>>< ?php echo $people_fullname; ?></option> < ?php } ... dụng, giúp ta xem lại những phần trước đây. < ?php echo $selected; ?>>< ?php echo $people_fullname; ?></option> < ?php } ?> </select> </td> </tr>...
  • 9
  • 422
  • 0
Lập trình web với PHP - p5

Lập trình web với PHP - p5

Kỹ thuật lập trình

... vào các file movie1 .php, moviesite .php và login .php câu lệnh sau ngay sau thẻ <body>: < ?php include "header .php& quot;; ?> Mở trình duyệt với tên login .php ban sẽ có kết quả ... foreach. 11. While và do/while. 12. Sử dụng lớp và thứ tự với OOP. CÂU LỆNH IF/ELSE Mệnh đề if. Khác với những ngôn ngữ lập trình khác, PHP sử dụng mệnh đề if riêng lẻ, cú pháp như sau: if ... 2.9.3: 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...
  • 9
  • 391
  • 0
Lập trình web với PHP - p34

Lập trình web với PHP - p34

Kỹ thuật lập trình

... href=”index .php >Index</a> </p> < ?php } ?> 4. Lưu với tên commit .php và đưa lên server 5. Mở trình soạn thảo và vào trang 191Hhttp://localhost/chapter8/index .php và thêm ...  2. Lưu file với tên movie .php và đưa đoạn mã mới vào thư mục làm việc của bạn 3. Mở tập lệnh commit .php và chỉnh sửa như những dòng hướng dẫn sau: < ?php // COMMIT ADD AND EDITS ... align=”center” style=”color:#FF0000”> Done. <a href=”index .php >Index</a> </p> < ?php } Nếu biến $sql không được thiết lập trước ( mà có thể xảy ra nếu được gọi ra khỏi nội...
  • 8
  • 266
  • 0
Lập trình web với PHP - p35

Lập trình web với PHP - p35

Kỹ thuật lập trình

... } ?> <option value=”< ?php echo $people_id; ?>” < ?php echo $selected; ?>>< ?php echo $people_fullname; ?></option> < ?php } ?> </selected> </td> ... dùng. 1.Mở file movie .php và thay đổi nó như sau (thay đổi được làm nổi bật) <option value=”< ?php echo $people_id; ?>” < ?php echo $selected; ?>>< ?php echo $people_fullname; ... ?> <option value=”< ?php echo $year; ?>” < ?php echo $selected; ?>>< ?php echo $year; ?></option> < ?php } ?> </select> </td> </tr>...
  • 9
  • 431
  • 0
Lập trình web với PHP - p6

Lập trình web với PHP - p6

Kỹ thuật lập trình

... Mảng đa chiều: Ví dụ: < ?php $table1 = array(“husband” => array(“firstname”=>”Albert”, “lastname”=>”Einstein”, Chương 2: TẠO NHỮNG TRANG PHP SỬ DỤNG PHP5 Chương 2 giới thiệu ... foreach. 11. While và do/while. 12. Sử dụng lớp và thứ tự với OOP. Mảng Mảng là một danh sách chứa thông tin với khóa và được lưu trữ với một tên biến. Một mảng có dòng thông tin và khóa, khóa ... 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 URL để truyền biến . 5. Sessions và...
  • 5
  • 425
  • 0
Lập trình web với PHP - p36

Lập trình web với PHP - p36

Kỹ thuật lập trình

... một đối tượng ( khi bạn cố gắng dùng code hướng đối tượng trong PHP, nó rất có ích) Những hàm này là tài liệu PHP trong 192Hwww .php. net/variable Trong trường hợp này sử dụng is_numeric cho phép ... Anh có nghĩa là “Tôi muốn chuỗi bắt đầu với một số hai ký số, đi theo bởi một dấu nối và sau đó nhóm với 2 ký số, rồi đến dấu nối,và cuối cùng nhóm với 4 ký số.” if (!ereg(“([0-9]{2})-([0-9]{2})-([0-9]{4})”, ... style=”color:#FF0000”> Done. <a href=”index .php >Index</a> </p> < ?php } ?> 3. Hãy lưu những file này lại, mở trình duyệt bạn sẽ thấy index. 4.Click bất kỳ một...
  • 12
  • 369
  • 0
Lập trình web với PHP - p7

Lập trình web với PHP - p7

Kỹ thuật lập trình

... động : 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 ... <title>My Movie Site</title> </head> <body> < ?php include "header .php& quot;; ?> < ?php $favmovies = array("Life of Brian", "Stripes", ... đặt danh sách động trong biến, $favmovies với mảng. Sau đó bạn có thể để danh sách movie từng cái một bằng cách sử dụng foreach trong file moviesite .php. Bạn cũng có thể thêm một liên kết để...
  • 8
  • 393
  • 0
Lập trình web với PHP - p8

Lập trình web với PHP - p8

Kỹ thuật lập trình

... Kind”, </head> <body> < ?php include “header .php ?> < ?php $myfavmovie=urlencode(“Life of Brian”); echo “<a href=‟moviesite .php? favmovie=$myfavmovie‟>”; echo “Click ... </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 ... <title>My Movie Site</title> </head> <body> < ?php include “header .php ; ?> < ?php $favmovies = array(“Life of Brian”, “Stripes”, “Office Space”, “The Holy...
  • 7
  • 352
  • 0
Lập trình web với PHP - p37

Lập trình web với PHP - p37

Kỹ thuật lập trình

... NHỮNG LỖI Sau khi viết mã lệnh, người mới lập trình sẽ gặp không ít khó khăn trong việc tìm ra lỗi và chỉnh sửa lỗi. PHP hỗ trợ đầy đủ tính năng lập trình giao diện API (Applications Programming ... thể tìm ra lỗi và khắc phục những lỗi ấy. Ngoài PHP thì Apache Web Server cũng hỗ trợ người lập trình tìm ra lỗi và khắc phục lỗi. Tiếp xúc với lỗi Apache Web Server như thế nào? Apache có ... thông báo lỗi với PHP, vì thế người thăm trang web không thấy buồn chán. PHP tạo ra trang web thông báo lỗi thân thiện cho người dùng. Không giống những trang thông báo lỗi như PHP, trang của...
  • 11
  • 342
  • 0
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

Kỹ thuật lập trình

... ,$j++){print$j/do_math($i,$j)."\n";}?>Kếtquảhiệnra:-5148.25-5271-323.75-4931-7713.5?-4702.5-488.5-928.5-1394.752.2.2.2.BBBBộộộộququququảảảảnnnnllllííííllllỗỗỗỗiiiitutututuỳỳỳỳchchchchỉỉỉỉnhnhnhnh PHP thườnghiểnthịcáclỗithựcthi(executionerrors)ratrìnhduyệt,ngănbạnxoá(suppress)hoặcbắt(capture)nó.Tuynhiên,với PHP4 bạnđãcóthểbắtlỗibằnghàmset_error_handler().Hàmset_error_handler()cóthểđượcdùngđểghilạicáclỗixảyravớichươngtrìnhcủabạn.Thayvìlàmphiềnngườidùngvớicácthôngbáolỗi,bạncóthểghilạichoriêngbạn,bằngcáchđặtmộthàmquảnlílỗituỳchỉnh(acustomerrorhandlingfunction). PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology27272727Dormitory204.B518:20PMApril7,20061.1.1.1.MMMMộộộộttttththththííííddddụụụụmmmmẫẫẫẫuuuuvvvvềềềềđườđườđườđườngngngngllllốốốốiiii5.5.5.5.KhKhKhKhôôôôngngngngxemxemxemxemxxxxééééttttllllạạạạiiiimmmmãããã4.4.4.4.VVVVáááállllỗỗỗỗiiiikhikhikhikhithithithithiếếếếttttkkkkếếếế3.3.3.3.KhKhKhKhôôôôngngngngquanquanquanquanttttââââmmmmđếđếđếđếnnnnngngngngườườườườiiiiddddùùùùngngngngkhikhikhikhithithithithiếếếếttttkkkkếếếế2.2.2.2.KhKhKhKhôôôôngngngngtheotheotheotheossssááááttttkkkkếếếếhohohohoạạạạchchchchccccủủủủaaaađồđồđồđồáááánnnn1.1.1.1.PhPhPhPhííííththththờờờờiiiigiangiangiangian PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology14141414Dormitory204.B518:20PMApril7,20061.4.1.4.1.4.1.4.KhiKhiKhiKhimmmmààààDBMSDBMSDBMSDBMSccccủủủủaaaabbbbạạạạnnnnkhkhkhkhôôôôngngngnghhhhỗỗỗỗtrtrtrtrợợợợsql_num_row()sql_num_row()sql_num_row()sql_num_row()VàiDBMScóthểkhônghỗtrợhàmsql_num_row().TôixinchiasẻvớibạnnếuDBMScủabạnlàmộttrongsốđó.Bạnsẽphảitìmtrongkếtquảrỗngbằngcáchlấydòng.Tuynhiên,trongtrườnghợpnày,nónêndùngmộtbiếnbooleannhưsau:< ?php $timthay=false;while($mautin=sql_fetch_array($truyvan)){$timthay=true;}if(!$timthay){print"Loi!";}?>1.5.1.5.1.5.1.5.LLLLấấấấyyyykkkkếếếếttttququququảảảả::::hhhhããããyyyychchchchọọọọnnnnccccááááchchchchccccóóóóííííchchchchVấnđềthứhaitrongđoạnmãnàylànódùngsql_fetch_row()đểlấytậpkếtquả.Hàmsql_fetch_row()chỉtrảvềmảngđánhchỉsố,trongkhiđósql_fetch_array()trảvềmảngđánhchỉsốvàmảngdùngchuỗi.$mautin=sql_fetch_array($truyvan);print$mautin[1];//Cotthu2print$mautin[name];//TencotChChChChúúúúýýýý::::Cónhiềuquyướckhácnhauvềviệcdùngdấunháykhithêmmộtđốisốkiểuchuỗi.Trongthídụvềtêncộtởtrên,vàsuốtbàiviếtnày,nósẽđượcbỏ.Từquanđiểmcủanhàpháttriển,hàmnàocólợihơn?Mảngdùngchuỗigiúpchongườiđọchiểuđượcbạnđanglấycáigìchỉthôngquaviệcđọcmã,nhưthídụđúngdướiđây:< ?php if(sql_num_rows($truyvan)<=0){print"Motloidaxayra:Khongcomautinnao!";exit;}while($mautin=sql_fetch_array($truyvan)){print"$mautin[name]:$mautin[phone_number]\n<br>\n";}?>1.6.1.6.1.6.1.6.KhiKhiKhiKhinnnnààààoooosql_fetch_row($truyvan)sql_fetch_row($truyvan)sql_fetch_row($truyvan)sql_fetch_row($truyvan)nnnnêêêênnnnđượđượđượđượccccddddùùùùngngngngTôikhôngthựcsựlàfancủathesql_fetch_row().Tuynhiên,cómộttìnhhuốngmàdùngnókhônggiảmkhảnăngdễđọc:khingườidùngđịnhnghĩacâutruyvấn.Cácthídụchođếnlúcnàyđềuđềcậpđếnnhữngcâutruyvấnđượcbiếttrước.Đôikhibạnđểchongườidùngtựđịnhnghĩacâutruyvấn.Trườnghợpnàybạnsẽkhôngbiếtcáccộttrongkếtquả.Dođó,dùnghàmsql_fetch_row()kèmvớicount()sẽxửlíhiệuquảcáccộttrongmộthàng:< ?php for($i=0;$i<count($mautin);$i++){print"Column".($i+1).$mautin[$i]."\n<BR>\n";}?>2.2.2.2.DDDDùùùùngngngngsaisaisaisaiSQL:SQL:SQL:SQL:khkhkhkhôôôôngngngngllllấấấấyyyynhnhnhnhữữữữngngngngggggììììbbbbạạạạnnnnccccầầầầnnnn PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology7777Dormitory204.B518:20PMApril7,2006site.libsite.libsite.libsite.lib-phầnchủNhưbạnthấytrongthídụtrên,táchbiệtkháchchủlàmtăngtínhdễđọctrongchươngtrìnhcủabạn.MộtlợiíchkháclàmộtkhibạnđãcócáchàmAPIhiểnthịnộidung,bạncóthểđểchothiếtkếviênthamgiathayđổibốcụcmàkhôngcầnsửamãchươngtrình.1.1.1.1.1.1.1.1.LLLLợợợợiiiiííííchchchchccccủủủủaaaahhhhààààmmmmAPIAPIAPIAPITươngđốisángsủaNhanh,hầunhưkhônglãngphíthờigian(overhead)1.2.1.2.1.2.1.2.BBBBấấấấttttllllợợợợiiii<tdwidth="25%">< ?php print_links();?></td><td>< ?php print_body();?></td></tr></table></body></html>< ?php $dbh=mysql_connect("localhost","khoa","pass")ordie(sprintf("KhongtheketnoidenMySQL[%s]:%s",mysql_errno(),mysql_error()));@mysql_select_db("MainSite")ordie(sprintf("KhongthechonCSDL![%s]:%s",mysql_errno(),mysql_error()));$sth=@mysql_query("SELECT*FROMsite",$dbh)ordie(sprintf("Khongthethuchientruyvan[%s]:%s",mysql_errno(),mysql_error()));$site_info=mysql_fetch_object($sth);functionprint_header(){global$site_info;print$site_info->header;}functionprint_body(){global$site_info;printnl2br($site_info->body);}functionprint_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<axhref=\"$links[$i]\">$names[$i]</a>\n<br>\n";}}?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology22222222Dormitory204.B518:20PMApril7,20061.1.1.1.CCCCáááácccchhhhààààmmmmccccầầầầnnnnbibibibiếếếếttttCóvàihàmrấtthiếtyếuđểtiếtkiệmthờigianthihànhchươngtrìnhkhidùngthaychobiểuthứcchínhquy.Dướiđâylàdanhsáchcáchàmthiếtyếuđó:strtoupper();strtolower();ucfirst();strtr();str_replace();trim();explode();implode();substr();strcmp()Nếubạnthaythếcácbiểuthứcchínhquycủabạnbằngcáchàmtrên,bạncóthểtrôngđợimộtsựnhảyvọtvềhiệunăng,đặcbiệtkhibạnlàmviệcvớicácchuỗilớn.9.9.9.9.LLLLậậậậpppptrtrtrtrììììnhnhnhnh PHP PHP PHP PHPnhnhnhnhưưưưccccááááccccngngngngôôôônnnnngngngngữữữữkhkhkhkhááááccccNhiềungườibắtđầu PHP saukhiđãthuầnthụcmộtngônngữkhácnhưPerl,C,JavahayASP.Làmnhưvậy,họcũngmangtheonhữngmôhìnhmàcóthểkhôngluônluônđượcdùngbởi PHP. Khôngmaythay,vàicánhântrongsốhàykhôngchịubỏthờigianđểhọccáchlậptrình PHP theocáchphùhợpvới PHP. Thayvàođó,họthích PHP hoạtđộngvớicácítkháiniệmmớicàngtốtKhibạnlậptrình PHP nhưlàtrongcácngônngữkhác,nóthườngdẫnđếnviệclàmchươngtrìnhchậmhơnvàkhóbảotrìmã.Bạnsẽthườngthấyhọphạmvàomộttrongcáclỗisau:PerlPerlPerlPerl"1"1"1"1ddddòòòòng"ng"ng"ng" PHP làmộtngônngữkhôngthựcsựtốiưuchocáchtiếpcận1dòngkhiviếtchươngtrình.Thayvàođó,nómởrộngcáctậphàmphứctạpvàcácbiểuthứcchínhquytheomộtđịnhdạngcócấpbậchơnMMMMããããllllệệệệnhnhnhnhPerlPerlPerlPerlwhile(<STDIN>){@_=split/:/;$quotes{shift}=shift;}printmap{"$_:",reversesplit//,$quotes->{$_},"\n";}keys%quotes;MMMMããããllllệệệệnhnhnhnh PHP) PHP) PHP) PHP) < ?php $fp=@fopen(&apos ;php: //stdin','r');if(!$fp){die('CannotopenSTDIN');}while($line=@fgets($fp,1024)){list($name,$quote)=explode(':',$line);$quotes[$name]=$quote;}foreach($quotesas$name=>$quote){print"$name:";printimplode("",array_reverse(preg_split('//',$quote)));print"\n";}@fclose($fp);?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology6666Dormitory204.B518:20PMApril7,2006Lạicómộtsốngườicốgắngviếtlạicáchàm PHP thôngdụngthayvìđihọcvềhàmđótrongcáctàiliệu PHP cungcấp.Cóítnhất2lídođểkhôngnênlàmđiềunày.Thứnhất,vàtrênnhất,nólàmchonhữngngườiđọc(vàsửa)chươngtrìnhcủabạnkhóhiểuvàcảmthấycóquánhiềuhàmdưthừa.Họtựhỏitạisaobạnlạiđiđịnhnghĩahàmtheokiểuđó,thayvìsửdụngcáchàmđịnhnghĩasẵnbởi PHP. Thứhai,địnhnghĩahàmnhưvậycũngsẽlàmchậmchươngtrìnhcủabạn(mộtcáchkhôngcầnthiết).Khôngchỉphảixửlínhiềumãhơn,màmỗilầngọihàmdobạnđịnhnghĩa,bạnđãtốnthờigianchochínhhàmđó,trướckhihàmnguyênthuỷđượcgọi.1.1.1.1.TrTrTrTráááánhnhnhnhviviviviếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnHãyđươngđầuvớinó.Đôikhithậtlàkhóđểtránhchuyệnnày.Trướctiên,mộtlậptrìnhviênkhôngthểtheokịpcáchàmcủa PHP ngayđược.Vàaicóthờigianmàtracứu.Tạisaokhôngviếtlạichokhoẻ?Cáchlàmcủatôilàluôncósẵnmộttàiliệuchỉdẫn PHP ( PHP manual)mỗikhiviếtchươngtrình(tácgiảbàinàydùngmộtbảnPDFcótạochỉmục,riêngtôi,ngườidịch,thìdùngmộttàiliệuCHMđầyđủthôngtinvàcócảgópýcủangườisửdụngmàbạncóthểlấyởhttp://www .php. net/docs .php) .Sauđó,mỗikhiđịnhviếtmộthàmmởrộngcho PHP, tôiđọclướtquatàiliệuđểxemhàmđócóchưa.Tuynhiên,cầnchúýlà,dobảnchấtmãnguồnmởcủa PHP, bạncóthểtìmđượccáchàmdongườidùngđịnhnghĩatrướckhinóđượcthêmvào PHP (thídụnhưhàmtìmphầntửkhácnhaugiữahaimảng).Điềunàykhôngcónghĩalàbạnphảihiệuchỉnhlạimã(Thisdoesn'tnecessarilymeanthatyoushouldhavetocorrectthecode.-don'tunderstand)16.16.16.16.KhKhKhKhôôôôngngngngttttááááchchchchbibibibiệệệệttttphphphphầầầầnnnnserverserverserverservervvvvààààclientclientclientclientVàilậptrìnhviêncốkếtnốicảchươngtrìnhvớinhau,nghĩalàghépchungmãHTML(client-side-phầnkhách)vớimã PHP (server-side-phầnchủ)vàotrongmộttậptinlớn.Mặcdùđiềunàytốtchocácsitenhỏ,nhưngnócóthểtrởthànhvấnđềlớnkhicácsiteđótrởnênlớnhơnvàđượcbổsungthêmtínhnăng.Lậptrìnhtheocáchnàylàmnảysinhvấnđềkhóbảotrìvàcáctậptintrởnêncồngkềnh.1.1.1.1.HHHHààààmmmmAPIAPIAPIAPIKhimuốntáchbiệtphầnkhách-chủ,bạncóvàilựachọn.Mộtcáchlàviếtnhữnghàmhiểnthịnộidunglinhđộngvàđặtchúngđúngchỗtrongtrangweb.Thídụdướiđâyminhhoạđiềunày:index .php index .php index .php index .php -phầnkháchreturnstrlen($str);}?>HTMLHTMLHTMLHTML< ?php include_once("site.lib");?><html><head><title>< ?php print_header();?></title></head><body><h1>< ?php print_header();?></h1><tableborder="0"cellpadding="0"cellspacing="0"><tr> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology11111111Dormitory204.B518:20PMApril7,20061.5.1.5.1.5.1.5.ThThThThóóóóiiiiquenquenquenquenxxxxấấấấuuuuDướiđâylànhữngthídụ(phóngđại)vềnhữngtênbiếntồi$username_cua_csdl='SINHVIEN';$guMbi='bimat';//forthe$password$tentruocdo_cua_giaovien=array('Sadlon','Lane','Patterson','Perry','Sandler','Mendick','Zung');foreach($tentruocdo_cua_giaovienas$TeaChER);2.2.2.2.ĐặĐặĐặĐặttttttttêêêênnnnhhhhààààmmmmMọikháiniệmápdụngchotênbiếncũngápdụngchođặttênhàm.Tuynhiên,ngữphápđóngvaitròđặcbiệttrongcáchàm.Cáchàm PHP, địnhnghĩasẵnhoặcdongườidùngđịnhnghĩa,làkhông-phân-biệt-cách-viết(notcasesensitive)2.1.2.1.2.1.2.1.DDDDùùùùngngngngđộđộđộđộngngngngttttừừừừHàmcủa PHP tươngđươngvớimộtđộngtừkhinói.Tênhàm,dođó,nênđượchướnghànhđộng(actionoriented).Nócũngnênđượcdùngởthìhiệntại.Thídụ,bạncómộthàmtạomộtsốngẫunhiênvớiphânbốGausse(agaussianrandomnumber),bạnnênđặttênnólàgenerate_gaussian_rand().Chúýcácsửdụngđộngtừhànhđộngtrongtênhàm.Nósẽđặthàmvàongữcảnhthíchhợp< ?php list($num1,$num2)=generate_gaussian_rand();list($num3,$num4)=generate_gaussian_rand();?>Đểsosánh,hãyxemthídụ:< ?php list($num1,$num2)=gaussian_rand_generator();list($num1,$num2)=gaussian_rand_generator();?>Bạncóthấysựkhácbiệt?Thídụthứhaisửdụngdanhtừ,mặcdùvẫnchuyểntảiđượcmụctiêucủahàm,nhưngnóngănngườitađọcmộtcáchtrôichảy.Hãysửdụngđộngtừ!13.13.13.13.KhKhKhKhôôôôngngngngsuysuysuysuynghnghnghnghĩĩĩĩththththấấấấuuuuđáđáđáđáo:o:o:o:CSDLCSDLCSDLCSDL&&&&SQLSQLSQLSQLSốcáchngườitatruycậpcơsởdữliệu(CSDL-database)vàlấykếtquảnhiềuđếnmứcthựcsựngạcnhiên.Nhữngthídụtôiđãgặpbaogồmnhữngtổhợplệnhifvàvònglặpdo ... ,$j++){print$j/do_math($i,$j)."\n";}?>1.2.1.2.1.2.1.2.KiKiKiKiểểểểmmmmtratratratrakkkkếếếếttttququququảảảảllllờờờờiiiiggggọọọọiiiihhhhệệệệththththốốốốngngngng PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology5555Dormitory204.B518:20PMApril7,2006Tạisaophảidùngbiếntrunggian?NókhôngcầnthiếtRủithay,cóvẻnhưrấtnhiềungườikhóbỏđượcthóiquenxấunày.Biếntạmlàmchậmthờigianthihànhchươngtìnhcủabạn.Tốthơnlànênbỏquađóvàgộpcáclờigọihàmvớinhau.Nhữngngườidùngbiếntạmthườnglàmchươngcủahọchạychậmđến25%.Mộtlídokhácđểtránhcóquánhiềubiếntạmlàvìtrôngnókhôngđượcđẹpmắt.Tronghaithídụtrên,thídụnàosúctíchhơn?Thídụnàolàmconmắtdễchịuhơn?Dùngquánhiềubiếntạmcóthểdẫnđếnmãchươngtrìnhkhóđọcvàkhôngsúctích.1.1.1.1.LLLLợợợợiiiiđđđđiiiiểểểểmmmmccccủủủủaaaaddddùùùùngngngngbibibibiếếếếnnnnttttạạạạmmmmCácbiếntạmcólợitrongviệcthaythếcáchàmhaybiểuthứcdàilêthê.Nócóvaitrònhưbídanhgiả.Điềunàyđặcbiệtđúngkhibạndùngmộthàmhaybiểuthứcnhiềulần.Xemxétthídụđây,nókhôngdùngnhiềubiếnhơnmứctốithiểuNộidungtronghàmimplode()dàivàdođókhóđọc.Dùngmộthoặcnhiềubiếntạmcóthểgiúpchúngta:2.2.2.2.CCCCáááácccclulululuậậậậttttchungchungchungchungccccủủủủaaaangngngngóóóónnnntaytaytaytayccccááááiiiiKhiquyếtđịnhcódùngbiếntạmhoặckhông,bạnnênsuynghĩvề2câuhỏi:Bạncódùngbiếnđóítnhấthailần?Tínhđọcđượccủamãcótăngđángkểkhông?Nếuítnhấtmộtcâutrảlờilàcó,thìnêndùngbiếntạm.Cònkhông,vứtnóđivàtổhợpcáchàmlại(nếucần).17.17.17.17.ViViViViếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnMộtsốnơiphổbiếnmãnguồncácscript PHP chủtrươngđổitêncáchàmsẵncóđểtạosựdễdàngchocáclậptrìnhviênchuyểntừVBsang.Thídụ:<?$tmp=date("Fd,h:ia");/*ieJanuary3,2:30pm*/print$tmp;?><?printdate("Fd,h:ia");?>//stringreverse_characters(stringstr)//Reverseallofthecharactersinastring.functionreverse_characters($str){returnimplode("",array_reverse(preg_split("//",$str)));}//stringreverse_characters(stringstr)//Reverseallofthecharactersinastring.functionreverse_characters($str){$characters=preg_split("//",$str);$characters=array_reverse($characters);returnimplode("",$characters);}<?functionlen($str){ PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology15151515Dormitory204.B518:20PMApril7,2006Nhưlàvấnđềcủathựchành,đơngiảnlàsẽsailầmkhidùng PHP xửlímọidòngcủaCSDL.Tôiđãbắtgặpngườitadùng PHP đểchạymộtchươngtrìnhtìmkiếmđơngiảntrên2MBdữliệuvàtựhỏitạisaocáingônngữnàychạylâuthế.Lấy2MBdữliệutừCSDLcóthểlàmbạnchờmãimãi.Ngônngữtruyvấnchuẩn(StandardStandardStandardStandardQueryQueryQueryQueryLanguageLanguageLanguageLanguage----SQLSQLSQLSQL)đượcthiếtkếđặcbiệtđểtruyvấnvàlấydữliệutừcácbảngcủabạn.Ýtưởnglàdùngnóđểlọcdữliệukhôngcầnthiết,đểlạicácthôngtinliênquancho PHP xửlí.Nếubạnlấynhiềudữliệuhơncầnthiết,đólàdấuhiệuchắcchắnrằngmãSQLđangdùngchưađượctốiưuhoá.2.1.2.1.2.1.2.1.MMMMệệệệnhnhnhnhđềđềđềđềWHEREWHEREWHEREWHEREMộtthídụkinhđiểnvềsựhiểuquảcủaSQLliênquanđếnmệnhđềwhere.ĐoạnmãsausẽlấycáckếtquảvàinratênvàmãsinhviêncủasinhviêncóMASV='511203008':< ?php include(“includes/taptinketnoi.inc”);$strsql="SELECTMASV,HOTENFROMSINHVIEN";$truyvan=@sql_query($strsql,$ketnoi);if(!$truyvan){die(sprintf("LOI:[%d]:%s",sql_errno(),sql_error()));}if(@sql_num_rows($truyvan)<=0){die("KhongketquatimduoctuCSDL!");}while($mautin=@sql_fetch_array($truyvan)){if($mautin[MASV]==“511203008”){print"MASV:$mautin[MASV]\n<br>\n";print"Hoten:$mautin[HOTEN]\n<br>\n";break;}}?>Đoạnmãtrênchưađượctốiưu:chúngtađangdùng PHP đểtìmkiếmtrongtoànbộCSDL!NếunhưđiềunàykhôngquantrọngđốivớicácCSDLnhỏ,khikíchthướcCSDLtănglênbạnsẽcảmthấymộtcúđấmnặngnềvềhiệunăng.Lờigiảirấtđơngiản:sửacâuSQLđểchứamệnhđềWHERE:$strsql="SELECT*FROMSINHVIEN";$strsql.="WHEREMASV='511203008'"; PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology10101010Dormitory204.B518:20PMApril7,2006PHẦN2–LỖINGHIÊMTRỌNG14.14.14.14.KhKhKhKhôôôôngngngngtutututuâââânnnnththththủủủủccccááááccccquyquyquyquyướướướướccccđặđặđặđặttttttttêêêênnnnMộttrongnhữnglỗinghiêmtrọngmàngườilậptrìnhcóthểphạmphảilàđịnhnghĩamộtquyướcđặttêntồi.Tôiđãtiếpquảnnhiềudựánmàtrongđótôiphảibỏrarấtnhiềuthờigiờchỉđểhiểuchươngtrình,dolậptrìnhviênđặttêncácbiếnlà$fredvà$barneythaycho$emailvà$name.Tôiđangđềcậpđếnmộtdựánmàngườilậptrìnhcũđãquyếtđịnhđưavàotoànbộchươngtrìnhmộtkiểuđặttênkìlạ(aFlinstonesnamingtheme),khôngphảitôiđùađâu.Cáchbạnđặttênbiếnvàhàmlàtrungtâmcủaviệcxâydựngmộtchươngtrìnhdễđọc.Cónhiềulậptrìnhviênphạmlỗikhiđặttênbiếnvàhàmmànó:quádàihoặcquángắnkhôngliênquanđếnngữcảnhkhôngđểýđếncách-viết-phân-biệt(casesensitivity)ngăncảnkhảnăngdễđọc(đặcbiệtlàcáchàm)1.1.1.1.ĐặĐặĐặĐặttttttttêêêênnnnbibibibiếếếếnnnn1.1.1.1.1.1.1.1.CCCCááááchchchchviviviviếếếếttttphphphphâââânnnnbibibibiệệệệttttTrong PHP, tênbiếncócáchviếtphânbiệt,nghĩalà$uservà$Userlàhoàntoànkhácnhau.Vàingườidùnglợidụngđiểmnàyđểđặtcácbiêncùngtênnhưngkháccáchviết.Đâylàmộtthóiquentồitệ.Cáchviếtkhôngbaogiờnêndùngđểphânbiệtcácbiếnkhácnhau.Mỗitênbiến,trongcùngtầmvực(scope),nêncólàtuyệtđốiduynhất.1.2.1.2.1.2.1.2.TTTTêêêênnnnququququáááángngngngắắắắnnnnNhiềungườisửdụngnhữngchữviếttắtđầu(crypticacronym)bíẩnchocácbiếncủahọ,đểrồisaunàyhốitiếcvìquênmấthọđãmuốnámchỉđiềugìkhiđó.Tênbiếnnênmôtảnộidungnó(sẽ)chứa,dùngnguyêntừhoặcnhữngchữviếttắtcóthểhiểuđược.1.3.1.3.1.3.1.3.TTTTêêêênnnnququququááááddddààààiiiiỞkhíacạnhkhác,vàingườilạisửdụngtênbiếnquádài.Nóichung,tênbiếnkhôngnêndàiquáhaitừ.Haitừcóthểđượctáchbiệtbằngdấuphâncách"_"hoặclàviếthoachữđầucủatừthứhai.1.4.1.4.1.4.1.4.ThThThThóóóóiiiiquenquenquenquenttttốốốốttttDướiđâylànhữngthídụtốtvềtênbiến$username='phanthanhkieu';$password='bimat';$teachers=array('Sadlon','Lane','Patterson','Perry','Sandler','Mendick','Zung');foreach($teachersas$teacher); PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology20202020Dormitory204.B518:20PMApril7,2006TạomộtAPITạomộttrìnhtựtênNhómcáchàmliênquanvàomộttậptin1.1.1.1.1.1.1.1.TTTTạạạạoooommmmộộộộttttAPIAPIAPIAPIÁpdụng3lớpchochươngtrìnhcủabạn:Thứnhất,cáchàmthựcsựthựchiệncôngviệccủabạnThứhai,mộthàmAPI.ĐâylàhàmgiúpbạnxâydựngcácchươngtrìnhđặcthùChươngtrìnhMortgageRate .php < ?php //Theinternalfunctionsarelayer1//Internalfunctiontocalculatethecorrect//interestratetobeusedgiventheamountpermonth//andthetimeitistobepaidinfunction_mort_find_interest_rate($total){if($total<30000)return(7.4);elseif($total>30000)return(3.2);elseif($total>50000)return(2.5);elsereturn(1.7);}//TheAPIislayer2//doublecalculate_mortgage_rate(intmoney,inttime,intmonth)//Calculatethemortgagerategiventhe//thetotalmoney,timeitspaidoverand//theintervalsfunctioncalculate_mortgage_rate($money,$time,$month){$rate=_mort_find_interest_rate($money)/100;$money/=($time/$month);return($rate*$money)+$money;}?>CalcMortgage .php < ?php //Theactualapplicationislayer3//$money,$timeand$periodaresubmitted//fromaforminclude_once'MortgageRate .php& apos;;$price=calculate_mortgage_rate($money,$time,$period);print"Your$periodmonthcostis$price";?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology23232323Dormitory204.B518:20PMApril7,2006KhKhKhKhôôôôngngngngddddùùùùngngngngccccáááácccchhhhààààmmmmssssẵẵẵẵnnnnccccóóóóNhiềulậptrìnhviên PHP cónềntảngCcóvẻkhôngnhậnrarằng PHP cungcấpnhiềuhàmsẵncógiúpthaythếcácđoạnmãdài.Nếubạnđếnvới PHP từC,tôikhuyênbạnnênđọcquatàiliệutrướckhiviếtmộtkhốilệnhđểxem PHP cósẵnhàmnàogiúpcuộcsốngcủabạndễdànghơnkhông.ĐổĐổĐổĐổiiiittttêêêênnnnccccáááácccchhhhààààmmmm PHP PHP PHP PHPđãđãđãđãccccóóóóTôiđãthấyngườitađổitêncáchàmđãcócủa PHP chỉđểgiúphọdễnhớhơn.Điềunàykhôngchỉlàmchậmchươngtrình,màlàmchođoạnmãkhóđọchơn.DDDDùùùùngngngnghhhhướướướướngngngngđốđốđốđốiiiittttượượượượngngngngququququáááámmmmứứứứcccc PHP khôngphảilàmộtngônngữHĐT,dùnócungcấpcáctínhnăngHĐT.BạncầnluônnhậnthứcrằngHĐTtrong PHP sẽlàmchậmđángkểchươngtrình.1.1.1.1.LLLLấấấấyyyyththththôôôôngngngngtintintintinởởởởđâđâđâđâu?u?u?u?Maymắnlàcórấtnhiềuthôngtinvềviệclàmthếnàođểlậptrình PHP. VàinơitốtnhấtlàZend.combảngốccủabàiviếtnàylàởđóProfessional PHP mộttrongnhữngsáchtoàndiệntốtnhấtvề PHP, tốtchocảlậptrìnhviênvàkhông-lậptrìnhviên.WebApplicationDevelopmentwith PHP Mộtquyểnsáchtuyệtvờidạybạncảcáchpháttriểnweblẫnvàitínhnăngcaocấpcủa PHP. BaogồmcáctàiliệuchínhthứcvềZendAPI.The PHP Developer'sCookbookMộtquyểnsáchthiênvềlờigiảiđápchocácvấnđềgặpphảitrong PHP (dotui-SterlingHughes-viếtcùngAndreiZmievski)8.8.8.8.KhKhKhKhôôôôngngngngnhnhnhnhậậậậnnnnththththứứứứccccđầđầđầđầyyyyđủđủđủđủvvvvềềềềbbbbảảảảoooommmmậậậậttttNhữngngườidùngkhôngphảilúcnàocũnglàmviệcvớihệthốngcủachúngta.Vớitưcáchlàlậptrìnhviên,tráchnhiệmcủachúngtalàthiếtkếmộthệthốngantoàn,dễchịucóthểlàmviệcđượcchungvớilỗicủangườidùng.Khithiếtkếhệthống,bạnphảiđặtmìnhvàovịtríngườidùng.Xemxétnhữngchỗhọcóthểgặplỗivàtìmkiếmnhữnglỗhổngbảomậttiềmtàng.Rồibạnthiếtkếchươngtrìnhcókhảnăngsửachữalỗinàyvàlấpcáclỗhổngbảomật.Mộtđiềukháccũngquantrọnglà:dùxảyrahưhỏnghayhệthốngbịtấncônglàdolỗicủangườidùng,chínhbạnlàngườichịutráchnhiệmnếubạnđãviếtchươngtrìnhcónhiềulỗihaythiếunhữngbướckiểmtracầnthiếtdẫnđếnhỏngdữliệu.Thídụ,tôiđãthấynhiềuchươngtrìnhkhôngdùnghàmđãcócủa PHP mail()vốnantoànmàlạiđidùngsendmailthôngquapopen().Nócóthểdẫnđếnnhiềulỗhổngbảomật(thídụnhư/etc/passwdđượcgửiđếnngườidùngcuối).Cóvàinơithườngxảyracácsựcốvềbảomật,hoặctiềmnănggâyrahỏngdữliệurấtlớn:Thựchiệnlờigọihệthống.Tôikhôngcócáchnàodiễntảđượcmứcđộnguyhiểmcủavấnđềnày.Luônđảmbảorằngmọidữliệungườidùngđưavàolàantoàntrướckhichuyểnnóchomộtlờigọihệthống.ĐỪĐỪĐỪĐỪNGNGNGNGBAOBAOBAOBAOGIGIGIGIỜỜỜỜTINTINTINTINNGNGNGNGƯỜƯỜƯỜƯỜIIIIDDDDÙÙÙÙNGNGNGNGMMMMỘỘỘỘTTTTCCCCÁÁÁÁCHCHCHCHMMMMÙÙÙÙQUQUQUQUÁÁÁÁNGNGNGNGKHIKHIKHIKHIĐƯĐƯĐƯĐƯAAAADDDDỮỮỮỮLILILILIỆỆỆỆUUUUCCCCỦỦỦỦAAAAHHHHỌỌỌỌVVVVÀÀÀÀOOOOLLLLỜỜỜỜIIIIGGGGỌỌỌỌIIIIHHHHỆỆỆỆTHTHTHTHỐỐỐỐNGNGNGNGMMMMÀÀÀÀKHKHKHKHÔÔÔÔNGNGNGNGKIKIKIKIỂỂỂỂMMMMTRATRATRATRATRTRTRTRƯỚƯỚƯỚƯỚCCCC.Khiđăngkíngườidùng.Nếubạntrôngmongcókếtquảchínhxác,luônkiểmtravàđảmbảobảnđăngkíđượckiểmtranhữngchỗcầnthiết.Trướctiên,cónhiềucáchđểkiểmtramộtđịachỉe-mailhợplệ.Hơnnữa,bạnnênkiểmtratuổicủangườidùngcónằmtrongphạmvithíchhợpkhông.Vớimộtsựsuyrộng,bạncó PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology16161616Dormitory204.B518:20PMApril7,2006MệnhđềWHEREchophépbạntìmkiếmchọnlọchơn.Giớihạnchọnlọccủamệnhđềwherechínhlàmộthàmvớiđốisốcủanó.Trongthídụtrênđốisốlà"MASV='511203008'".Bâygiờchúngtađãchọnđượcdữliệucầnthiết,bạnchỉviệcdùng PHP đểinrasauđó:if(@sql_num_rows($truyvan)!=1){die("KhongdungsomautinnhanduoctuCSDL!");}$mautin=@sql_fetch_array($truyvan);print"Hovaten:$mautin[HOTEN]\n<br>\n";print"MASV:$mautin[MASV]\n<br>\n";3.3.3.3.DDDDùùùùngngngng PHP PHP PHP PHPssssắắắắppppxxxxếếếếppppkkkkếếếếttttququququảảảảNhiềungườilấydữliệuởtìnhtrạngkhôngcóthứtự,nhưngrồiđoạnmã PHP tiếptheolạisắpthứtựchúng.NênchớrằngsắpxếpbằngSQLnhanhhơn PHP. DùngcúphápORDERBYcủaSQLđểsắpxếpthayvìhàmksort()của PHP. Thídụdướiđâydùngksort()đểsắpxếptheotên:$strsql="SELECTname,email,phoneFROMsome_table";$strsql.="WHEREnameISLIKE'%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ưngtạisaokhôngsắpxếpdữliệungayvàolúcnóđượcđịnhnghĩa?Nógiúpchúngtađỡphảiduyệtquatậpkếtquảlầnthứhai.Dovậy,bỏhàmksort()rakhỏichươngtrìnhtrênvàthayđoạnmãSQLbằngđoạndướiđây,códùngdùngcúphápORDERBY:$strsql="SELECTname,email,phoneFROMsome_table";$strsql.="WHEREnameISLIKE'%baggins'ORDERBYname";12.12.12.12.ThiThiThiThiếếếếuuuussssựựựựkikikikiểểểểmmmmllllỗỗỗỗiiiiTôiđãthấynhiềuchươngtrìnhthiếumộtlượngkiểmtralỗiđầyđủ.Nguyênnhânphầnlớnlàdolậptrìnhviênkhôngdànhthờigianđểlênmộtkếhoạchthíchhợpchochươngtrìnhcủamình,vàxácđịnhnhữngvịtrícóthểdẫnđếnlỗi.Kiểmtralỗikhôngnênthựchiệnsaukhiviếtchươngtrình.Sựthiếusóttrongtầmnhìntrướccóthểdẫnđếnnhữnglỗinghiêmtrọng,khôngnhữnggâyrakếtquảsaimàthậmchícònlàmhỏnghệthống(evencauseyoursystemtocrash)!1.1.1.1.MongMongMongMongđợđợđợđợiiiiđđđđiiiiềềềềuuuuttttệệệệnhnhnhnhấấấấttttMọichươngtrìnhđềucókhảnănghưhỏngtrongnhữngtìnhhuốngsai.Đểgiảmthiểunhữngrủironhưthế,bạncầnlênkếhoạchđể: PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology24242424Dormitory204.B518:20PMApril7,2006thểkhẳngđịnhkháchắcchắnrằngkhôngcómộtngười200tuổinàocókhảnăngdùngmáyvitính.Khichấpnhậnthẻtíndụng.Mộtsốlậptrìnhviênchỉdùngnhữngthuậttoánđơngiảnmàcóthểdễdàngbịđánhlừakhithựchiệnkiếmtrathẻtíndụng.Chỉchấpnhậnthẻcủacáccôngtylớnđểkiểmtratínhhợplệcủasốthẻtrướckhichấpnhậnthẻcủangườidùng.ĐỪĐỪĐỪĐỪNGNGNGNGBAOBAOBAOBAOGIGIGIGIỜỜỜỜTINTINTINTINTTTTƯỞƯỞƯỞƯỞNGNGNGNGMMMMỘỘỘỘTTTTTHUTHUTHUTHUẬẬẬẬTTTTTOTOTOTOÁÁÁÁNNNN1.1.1.1.BBBBảảảảoooommmmậậậậttttccccủủủủaaaallllờờờờiiiiggggọọọọiiiihhhhệệệệththththốốốốngngngngMỗikhibạnđưadữliệucủangườidùngvàolờigọihệthống,bạncầntỉnhtáokiểmtradữliệuđó.Đảmbảorằngkhôngcógìnguyhiểmnằmtrongdữliệuđócóthểlừaphỉnhhệthốngthựchiệnnhữnglệnhkhôngmongmuốn. PHP cungcấpmộthàmlàmđiềuđó:EscapeShellCmd()Bấtcứkhinàobạnchuyểnmộtlệnhcóchứadữliệunhạycảm,trốnthoátdữliệuđóbằnghàmEscapeShellCmdEscapeShellCmdEscapeShellCmdEscapeShellCmd():Trốnthoát(escaping)dữliệucónghĩalàthêmdấusổngược(backslash\)trướckítựcóthểlừaphìnhhệthống(chínhxáclàcáckítự#&;?'\"|*?~<>^()[]{}$\\\x0A\xFF).MMMMããããHTMLHTMLHTMLHTML<html><head><title>NameLookup</title></head><body><h1>NameLookup</h1>< ?php if($name){system(EscapeShellCmd("lookup$name"));print"nn";}?><formaction="<[color=blue] ?php print $PHP_ SELF;?>[/color]"method="GET">Enteranametolookup:<inputtype="text"name="name"><inputtype="submit"value="LookupName"></form></body></html>DùEscapeShellCmd()làmộthàmtốtđểkiểmtralệnh,bạnvẫnnênthửvàthựchiệncáckiểmtrađặcthùphụthuộcvàoloạidữliệu.HàmEscapeShellCmd()sẽkhôngkiểmtratínhđúngđắncủadữliệuđượcđệtrình,nósẽchỉngăncảnngườidùnglàmcácviệckhôngđượcphép.1.1.1.1.1.1.1.1.ĐĐĐĐiiiixaxaxaxahhhhơơơơnnnnmmmmộộộộttttbbbbướướướướccccNhưmộtquyluật,nênkiểmtracáckítựđượcphéphơnlàkiểmcáckítựkhôngđượcphép.Thídụ,đảmbảorằng$namechỉchứacáckítựchữvàsố(alphanumericcharacters).Bằngcáchnày,rấtkhóđểkhaitháclỗhổngtronghệthốngcủabạn.2.2.2.2.KiKiKiKiểểểểmmmmtratratratrađịđịđịđịaaaachchchchỉỉỉỉe-maile-maile-maile-mailMộttrongnhữnghìnhthứckiểmtraphổbiếnnhấtlàxemmộtđịachỉe-mailcóhợplệkhông.Mấytaymớivàonghềsẽchỉdùngcácbiểuthứcchínhquy(màhọlượmđượctrong PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology3333Dormitory204.B518:20PMApril7,2006Đólàdobiến$fpđặttrongdấunháyképnênđượcchuyểnthànhchuỗi.Thếmàhàmfopen()nhậnmộtđịnhdanhtàinguyên(resourceidentifier)trongthamsốđầucủanó,chứkhôngnhậnmộtchuỗi.Đểgiảiquyếtvấnđề,bạnchỉđơngiảnbỏdấunháyképđi1.1.1.1.CCCCóóóóththththểểểểtrtrtrtráááánhnhnhnhviviviviệệệệccccááááppppddddụụụụngngngngsaisaisaisaingngngngữữữữnghnghnghnghĩĩĩĩa?a?a?a?Ourexampleabovegeneratedanerrorstatement.But PHP enablesyoutocustomizeyourscriptstofitauniquescenariooroutputrequirement.So,itisatleasttheoreticallypossibleto"getaway"withmisapplyingasemantic.Tôikhônghiểu,nhưngdịchthếnàyđượckhông?Thídụtrêncủachúngtatạoramộtthôngbáolỗi.Nhưng PHP chophépbạntuỳbiếncácscriptđểthíchhợpvớimộtkịchbảnkhácthườnghoặcvớicácđòihỏicủathôngtinra.Dođó,ítnhấttrênlíthuyết,bạncókhảnăngtránhviệcápdụngsaingữnghĩa.Vậy,bạncầnbiếtnhữnghậuquảcóthểcó(possibleoutcomes)nếubạnquyếtđịnhhọcvềngữnghĩa.Ápdụngsaidẫnđếnnhữnglỗikhátinhvinếubạnkhôngchúý.Nếubạnmuốntuỳbiếnscript,bạncầnhiểunhữngchủđềchínhsau:KiKiKiKiểểểểu:u:u:u:trong PHP, mỗibiếncómộtkiểuxácđịnhởmộtthờiđiểmxácđịnh,chodùbạncóthểtựdochuyểnđổikiểumộtbiến.Nóimộtcáchkhác,khôngcóbiếnnàolạikhôngkèmtheotínhchấtcủakiểucủanó. PHP có7kiểucơbản:boolean,resource,integer,double,string,arrayvàobject.TTTTầầầầmmmmvvvvựựựực:c:c:c:trong PHP, mỗibiếncómộttầmvựcriêng.Tầmvựcbiếnquyđịnhbiếncóthểđượctruycậptừđâu,tồntạitrongthờigiannào.Hiểusaikháiniệmcơbảnvề"tầmvực"dẫnđếnnhữnglỗisaitinhtếvàcảnhữnglỗilớn. php. ini: php. ini: php. ini: php. ini:khiviếtmộtscriptchạyởnhiềumôitrườngkhácnhau,cầnbiếtrằngkhôngphảimọicấuhình PHP đềunhưnhau.Dođó,cầnthiếtnhữnglệnhkiểmtrađểđảmbảoscriptcủabạnchạytốttrongcấuhình PHP củangườikhác.19.19.19.19.ThiThiThiThiếếếếuuuughighighighichchchchúúúúTheoýtôi,mãnguồnthiếughichúlàcănnguyêncủasựlậptrìnhíchkỉ.Nódẫntớinhữnghiệuchỉnhsailầm,hiểusaiýnghĩavàlàmngườiđọcmệtmỏi.Nóichung,lậptrìnhghichú(inlinedocumentation)đượcmọingườikhẳngnhậnlàđiềutốt,nhưnghiếmkhinótồntại.Mộtvấnđềkháclàquánhiềughichú.Dùhiếmgặp,nhưngnólàmchocácđoạnmãbịcắtvụn,gâyrasựkhótheodõi.Dướiđâylàmộtthídụ:<?//Batdauma PHP $age=18;//Gan18den$age$age++;//Tang$agelen1donvi//INradoantextthongbao:print"Youarenow19,whichmeansyouhavebeen:";print"\n<br>\n<br>\n";//Vonglapforinratatcatuoitruocdofor($idx=0;$idx<$age;$idx++){<?$fp=@fopen('vanban.txt','r')ordie(‘Khongthemofiletailieuphp.txt');while($line=@fgets($fp,1024)){print$line;}@fclose($fp)ordie(Khongthedongfilevanban.txt');?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology4444Dormitory204.B518:20PMApril7,2006//Inratuoicanhanprint"$idxyearsold\n<br>\n";}//Ketthucma PHP ?>1.1.1.1.BaoBaoBaoBaonhinhinhinhiêêêêuuuughighighighichchchchúúúúththththììììđủđủđủđủ????Nhiếuđếnmứcnào,điềuđótuỳthuộcngânsáchcủabạn,vàochínhsáchcủacôngtyvàvàođộphứctạpcủachươngtrình.Tuynhiên,cũngcómộtvàigợiýchobạnLuôncómộtmôtảngắnvềmụcđíchcủahàmngaytrướcđịnhnghĩacủahàmđóThêmghichúvàonhữngchỗcóthểbịhack,hoặcnhữngchỗtưởngrằngsainhưnglạichạyđúngNếumộtđoạnmãnàođócóthểgâynhầmlẫn,hãythêmmộtítghichúvềmụcđíchcủađoạnđó.SaunàybạnsẽthấyđượclợiíchcủanóDùngmộtkiểughichúnhấtquán,/*/*/*/**/*/*/*/hoặclà////////(tr(tr(tr(tráááánhnhnhnhddddùùùùngngngng#)#)#)#)Dướiđâylàmộtthídụvềghichútốt:<?//Random_Numbers.lib//Generatedifferenttypesofrandomnumbers.mt_srand((double)microtime()*1000000);//mixedrandom_element(arrayelements[,arrayweights])//Extractarandomelementfromelements.Weightsis//therelativeprobabilitythateachelementwillbe//selected.functionrandom_element($elements,$weights=array()){//Theremustbeexactlythesameamountofelementsas//thereareweightsforthisalgorithmtoworkproperlyif(count($weights)==count($elements)){foreach($elementsas$element){foreach($weightsas$idx){//Note:wedon'tuse$idx,sincewe//don'twanttooverrideelements.$randomAr[]=$element;}}}else{$randomAr=$elements;}$random_element=mt_rand(0,count($randomAr)-1);return$randomAr[$random_element];}?>18.18.18.18.NhiNhiNhiNhiềềềềuuuubibibibiếếếến,n,n,n,ttttốốốốnnnnnhinhinhinhiềềềềuuuuththththờờờờiiiigiangiangiangianCóvàingườibịámảnhbởibiếntrunggian.Tôikhôngthểhiểunổitạisaoaiđócóthểviếtnhưthếnày: PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology18181818Dormitory204.B518:20PMApril7,2006Luônđảmbảorằng,khibạnlàmviệcvớicáctiếntrìnhhoặctậptinngoài PHP, mọithứđềuvậnhànhđúng.Mộtthídụtuyệtvờilàviệckiểmtrađầuracủamộtlờigọihệthốngkhidùnghàmsql_connect().XácnhậnđầurađểkiểmtraliênkếtđếnCSDLlàđúng.Làmsaiđiềunàycóthểdẫnđếncáctruyvấnhỏngvàmấtdữliệutrongkhithậmchíbạnkhôngbiế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.ĐặĐặĐặĐặttttmmmmứứứứccccerror_reportingerror_reportingerror_reportingerror_reportingllllààààE_ALLE_ALLE_ALLE_ALLtrongtrongtrongtrongttttậậậậpppptintintintin php. ini php. ini php. ini php. iniHãyđảmbảobạncấuhìnhvớimứcđộbáolỗicaonhấtcóthể.Nếubạnkhôngđặtnóởmứccaonhất,ítnhấtlàtrongquátrìnhtìmlỗi(debugging),bạncóthểbỏquanhữnglỗinhưlàbiểuthứcchínhquy(regularexpressions)khônghợplệvàcácgiátrịkhôngchínhxác.XemlạilầnnữathídụtôiđãđưatrongphầnKiểmtrakếtquảlờigọihàm,ởdướiđây.Giảsửbạnđặterrorreportingởmứcthấp,E_ERROR.Chúýrằngkếtquảinrakhichươngtrìnhthihànhhàmdo_math:khôngcóthôngbáoillegaldivisionbyzerođãtừnghiệnralầntrước,phần$i=$j=0đơnthuầnkhônghiệnkếtquả.< ?php error_reporting(E_ERROR);mt_srand((double)microtime()*1000000);functiondo_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ếtquảhiệnra:-5148.25-5271-323.75-4931-7713.5?-4702.5-488.5-928.5-1394.752.2.2.2.BBBBộộộộququququảảảảnnnnllllííííllllỗỗỗỗiiiitutututuỳỳỳỳchchchchỉỉỉỉnhnhnhnh PHP thườnghiểnthịcáclỗithựcthi(executionerrors)ratrìnhduyệt,ngănbạnxoá(suppress)hoặcbắt(capture)nó.Tuynhiên,với PHP4 bạnđãcóthểbắtlỗibằnghàmset_error_handler().Hàmset_error_handler()cóthểđượcdùngđểghilạicáclỗixảyravớichươngtrìnhcủabạn.Thayvìlàmphiềnngườidùngvớicácthôngbáolỗi,bạncóthểghilạichoriêngbạn,bằngcáchđặtmộthàmquảnlílỗituỳchỉnh(acustomerrorhandlingfunction). PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology27272727Dormitory204.B518:20PMApril7,20061.1.1.1.MMMMộộộộttttththththííííddddụụụụmmmmẫẫẫẫuuuuvvvvềềềềđườđườđườđườngngngngllllốốốốiiii5.5.5.5.KhKhKhKhôôôôngngngngxemxemxemxemxxxxééééttttllllạạạạiiiimmmmãããã4.4.4.4.VVVVáááállllỗỗỗỗiiiikhikhikhikhithithithithiếếếếttttkkkkếếếế3.3.3.3.KhKhKhKhôôôôngngngngquanquanquanquanttttââââmmmmđếđếđếđếnnnnngngngngườườườườiiiiddddùùùùngngngngkhikhikhikhithithithithiếếếếttttkkkkếếếế2.2.2.2.KhKhKhKhôôôôngngngngtheotheotheotheossssááááttttkkkkếếếếhohohohoạạạạchchchchccccủủủủaaaađồđồđồđồáááánnnn1.1.1.1.PhPhPhPhííííththththờờờờiiiigiangiangiangian PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology14141414Dormitory204.B518:20PMApril7,20061.4.1.4.1.4.1.4.KhiKhiKhiKhimmmmààààDBMSDBMSDBMSDBMSccccủủủủaaaabbbbạạạạnnnnkhkhkhkhôôôôngngngnghhhhỗỗỗỗtrtrtrtrợợợợsql_num_row()sql_num_row()sql_num_row()sql_num_row()VàiDBMScóthểkhônghỗtrợhàmsql_num_row().TôixinchiasẻvớibạnnếuDBMScủabạnlàmộttrongsốđó.Bạnsẽphảitìmtrongkếtquảrỗngbằngcáchlấydòng.Tuynhiên,trongtrườnghợpnày,nónêndùngmộtbiếnbooleannhưsau:< ?php $timthay=false;while($mautin=sql_fetch_array($truyvan)){$timthay=true;}if(!$timthay){print"Loi!";}?>1.5.1.5.1.5.1.5.LLLLấấấấyyyykkkkếếếếttttququququảảảả::::hhhhããããyyyychchchchọọọọnnnnccccááááchchchchccccóóóóííííchchchchVấnđềthứhaitrongđoạnmãnàylànódùngsql_fetch_row()đểlấytậpkếtquả.Hàmsql_fetch_row()chỉtrảvềmảngđánhchỉsố,trongkhiđósql_fetch_array()trảvềmảngđánhchỉsốvàmảngdùngchuỗi.$mautin=sql_fetch_array($truyvan);print$mautin[1];//Cotthu2print$mautin[name];//TencotChChChChúúúúýýýý::::Cónhiềuquyướckhácnhauvềviệcdùngdấunháykhithêmmộtđốisốkiểuchuỗi.Trongthídụvềtêncộtởtrên,vàsuốtbàiviếtnày,nósẽđượcbỏ.Từquanđiểmcủanhàpháttriển,hàmnàocólợihơn?Mảngdùngchuỗigiúpchongườiđọchiểuđượcbạnđanglấycáigìchỉthôngquaviệcđọcmã,nhưthídụđúngdướiđây:< ?php if(sql_num_rows($truyvan)<=0){print"Motloidaxayra:Khongcomautinnao!";exit;}while($mautin=sql_fetch_array($truyvan)){print"$mautin[name]:$mautin[phone_number]\n<br>\n";}?>1.6.1.6.1.6.1.6.KhiKhiKhiKhinnnnààààoooosql_fetch_row($truyvan)sql_fetch_row($truyvan)sql_fetch_row($truyvan)sql_fetch_row($truyvan)nnnnêêêênnnnđượđượđượđượccccddddùùùùngngngngTôikhôngthựcsựlàfancủathesql_fetch_row().Tuynhiên,cómộttìnhhuốngmàdùngnókhônggiảmkhảnăngdễđọc:khingườidùngđịnhnghĩacâutruyvấn.Cácthídụchođếnlúcnàyđềuđềcậpđếnnhữngcâutruyvấnđượcbiếttrước.Đôikhibạnđểchongườidùngtựđịnhnghĩacâutruyvấn.Trườnghợpnàybạnsẽkhôngbiếtcáccộttrongkếtquả.Dođó,dùnghàmsql_fetch_row()kèmvớicount()sẽxửlíhiệuquảcáccộttrongmộthàng:< ?php for($i=0;$i<count($mautin);$i++){print"Column".($i+1).$mautin[$i]."\n<BR>\n";}?>2.2.2.2.DDDDùùùùngngngngsaisaisaisaiSQL:SQL:SQL:SQL:khkhkhkhôôôôngngngngllllấấấấyyyynhnhnhnhữữữữngngngngggggììììbbbbạạạạnnnnccccầầầầnnnn PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology7777Dormitory204.B518:20PMApril7,2006site.libsite.libsite.libsite.lib-phầnchủNhưbạnthấytrongthídụtrên,táchbiệtkháchchủlàmtăngtínhdễđọctrongchươngtrìnhcủabạn.MộtlợiíchkháclàmộtkhibạnđãcócáchàmAPIhiểnthịnộidung,bạncóthểđểchothiếtkếviênthamgiathayđổibốcụcmàkhôngcầnsửamãchươngtrình.1.1.1.1.1.1.1.1.LLLLợợợợiiiiííííchchchchccccủủủủaaaahhhhààààmmmmAPIAPIAPIAPITươngđốisángsủaNhanh,hầunhưkhônglãngphíthờigian(overhead)1.2.1.2.1.2.1.2.BBBBấấấấttttllllợợợợiiii<tdwidth="25%">< ?php print_links();?></td><td>< ?php print_body();?></td></tr></table></body></html>< ?php $dbh=mysql_connect("localhost","khoa","pass")ordie(sprintf("KhongtheketnoidenMySQL[%s]:%s",mysql_errno(),mysql_error()));@mysql_select_db("MainSite")ordie(sprintf("KhongthechonCSDL![%s]:%s",mysql_errno(),mysql_error()));$sth=@mysql_query("SELECT*FROMsite",$dbh)ordie(sprintf("Khongthethuchientruyvan[%s]:%s",mysql_errno(),mysql_error()));$site_info=mysql_fetch_object($sth);functionprint_header(){global$site_info;print$site_info->header;}functionprint_body(){global$site_info;printnl2br($site_info->body);}functionprint_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<axhref=\"$links[$i]\">$names[$i]</a>\n<br>\n";}}?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology22222222Dormitory204.B518:20PMApril7,20061.1.1.1.CCCCáááácccchhhhààààmmmmccccầầầầnnnnbibibibiếếếếttttCóvàihàmrấtthiếtyếuđểtiếtkiệmthờigianthihànhchươngtrìnhkhidùngthaychobiểuthứcchínhquy.Dướiđâylàdanhsáchcáchàmthiếtyếuđó:strtoupper();strtolower();ucfirst();strtr();str_replace();trim();explode();implode();substr();strcmp()Nếubạnthaythếcácbiểuthứcchínhquycủabạnbằngcáchàmtrên,bạncóthểtrôngđợimộtsựnhảyvọtvềhiệunăng,đặcbiệtkhibạnlàmviệcvớicácchuỗilớn.9.9.9.9.LLLLậậậậpppptrtrtrtrììììnhnhnhnh PHP PHP PHP PHPnhnhnhnhưưưưccccááááccccngngngngôôôônnnnngngngngữữữữkhkhkhkhááááccccNhiềungườibắtđầu PHP saukhiđãthuầnthụcmộtngônngữkhácnhưPerl,C,JavahayASP.Làmnhưvậy,họcũngmangtheonhữngmôhìnhmàcóthểkhôngluônluônđượcdùngbởi PHP. Khôngmaythay,vàicánhântrongsốhàykhôngchịubỏthờigianđểhọccáchlậptrình PHP theocáchphùhợpvới PHP. Thayvàođó,họthích PHP hoạtđộngvớicácítkháiniệmmớicàngtốtKhibạnlậptrình PHP nhưlàtrongcácngônngữkhác,nóthườngdẫnđếnviệclàmchươngtrìnhchậmhơnvàkhóbảotrìmã.Bạnsẽthườngthấyhọphạmvàomộttrongcáclỗisau:PerlPerlPerlPerl"1"1"1"1ddddòòòòng"ng"ng"ng" PHP làmộtngônngữkhôngthựcsựtốiưuchocáchtiếpcận1dòngkhiviếtchươngtrình.Thayvàođó,nómởrộngcáctậphàmphứctạpvàcácbiểuthứcchínhquytheomộtđịnhdạngcócấpbậchơnMMMMããããllllệệệệnhnhnhnhPerlPerlPerlPerlwhile(<STDIN>){@_=split/:/;$quotes{shift}=shift;}printmap{"$_:",reversesplit//,$quotes->{$_},"\n";}keys%quotes;MMMMããããllllệệệệnhnhnhnh PHP) PHP) PHP) PHP) < ?php $fp=@fopen(&apos ;php: //stdin','r');if(!$fp){die('CannotopenSTDIN');}while($line=@fgets($fp,1024)){list($name,$quote)=explode(':',$line);$quotes[$name]=$quote;}foreach($quotesas$name=>$quote){print"$name:";printimplode("",array_reverse(preg_split('//',$quote)));print"\n";}@fclose($fp);?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology6666Dormitory204.B518:20PMApril7,2006Lạicómộtsốngườicốgắngviếtlạicáchàm PHP thôngdụngthayvìđihọcvềhàmđótrongcáctàiliệu PHP cungcấp.Cóítnhất2lídođểkhôngnênlàmđiềunày.Thứnhất,vàtrênnhất,nólàmchonhữngngườiđọc(vàsửa)chươngtrìnhcủabạnkhóhiểuvàcảmthấycóquánhiềuhàmdưthừa.Họtựhỏitạisaobạnlạiđiđịnhnghĩahàmtheokiểuđó,thayvìsửdụngcáchàmđịnhnghĩasẵnbởi PHP. Thứhai,địnhnghĩahàmnhưvậycũngsẽlàmchậmchươngtrìnhcủabạn(mộtcáchkhôngcầnthiết).Khôngchỉphảixửlínhiềumãhơn,màmỗilầngọihàmdobạnđịnhnghĩa,bạnđãtốnthờigianchochínhhàmđó,trướckhihàmnguyênthuỷđượcgọi.1.1.1.1.TrTrTrTráááánhnhnhnhviviviviếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnHãyđươngđầuvớinó.Đôikhithậtlàkhóđểtránhchuyệnnày.Trướctiên,mộtlậptrìnhviênkhôngthểtheokịpcáchàmcủa PHP ngayđược.Vàaicóthờigianmàtracứu.Tạisaokhôngviếtlạichokhoẻ?Cáchlàmcủatôilàluôncósẵnmộttàiliệuchỉdẫn PHP ( PHP manual)mỗikhiviếtchươngtrình(tácgiảbàinàydùngmộtbảnPDFcótạochỉmục,riêngtôi,ngườidịch,thìdùngmộttàiliệuCHMđầyđủthôngtinvàcócảgópýcủangườisửdụngmàbạncóthểlấyởhttp://www .php. net/docs .php) .Sauđó,mỗikhiđịnhviếtmộthàmmởrộngcho PHP, tôiđọclướtquatàiliệuđểxemhàmđócóchưa.Tuynhiên,cầnchúýlà,dobảnchấtmãnguồnmởcủa PHP, bạncóthểtìmđượccáchàmdongườidùngđịnhnghĩatrướckhinóđượcthêmvào PHP (thídụnhưhàmtìmphầntửkhácnhaugiữahaimảng).Điềunàykhôngcónghĩalàbạnphảihiệuchỉnhlạimã(Thisdoesn'tnecessarilymeanthatyoushouldhavetocorrectthecode.-don'tunderstand)16.16.16.16.KhKhKhKhôôôôngngngngttttááááchchchchbibibibiệệệệttttphphphphầầầầnnnnserverserverserverservervvvvààààclientclientclientclientVàilậptrìnhviêncốkếtnốicảchươngtrìnhvớinhau,nghĩalàghépchungmãHTML(client-side-phầnkhách)vớimã PHP (server-side-phầnchủ)vàotrongmộttậptinlớn.Mặcdùđiềunàytốtchocácsitenhỏ,nhưngnócóthểtrởthànhvấnđềlớnkhicácsiteđótrởnênlớnhơnvàđượcbổsungthêmtínhnăng.Lậptrìnhtheocáchnàylàmnảysinhvấnđềkhóbảotrìvàcáctậptintrởnêncồngkềnh.1.1.1.1.HHHHààààmmmmAPIAPIAPIAPIKhimuốntáchbiệtphầnkhách-chủ,bạncóvàilựachọn.Mộtcáchlàviếtnhữnghàmhiểnthịnộidunglinhđộngvàđặtchúngđúngchỗtrongtrangweb.Thídụdướiđâyminhhoạđiềunày:index .php index .php index .php index .php -phầnkháchreturnstrlen($str);}?>HTMLHTMLHTMLHTML< ?php include_once("site.lib");?><html><head><title>< ?php print_header();?></title></head><body><h1>< ?php print_header();?></h1><tableborder="0"cellpadding="0"cellspacing="0"><tr> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology11111111Dormitory204.B518:20PMApril7,20061.5.1.5.1.5.1.5.ThThThThóóóóiiiiquenquenquenquenxxxxấấấấuuuuDướiđâylànhữngthídụ(phóngđại)vềnhữngtênbiếntồi$username_cua_csdl='SINHVIEN';$guMbi='bimat';//forthe$password$tentruocdo_cua_giaovien=array('Sadlon','Lane','Patterson','Perry','Sandler','Mendick','Zung');foreach($tentruocdo_cua_giaovienas$TeaChER);2.2.2.2.ĐặĐặĐặĐặttttttttêêêênnnnhhhhààààmmmmMọikháiniệmápdụngchotênbiếncũngápdụngchođặttênhàm.Tuynhiên,ngữphápđóngvaitròđặcbiệttrongcáchàm.Cáchàm PHP, địnhnghĩasẵnhoặcdongườidùngđịnhnghĩa,làkhông-phân-biệt-cách-viết(notcasesensitive)2.1.2.1.2.1.2.1.DDDDùùùùngngngngđộđộđộđộngngngngttttừừừừHàmcủa PHP tươngđươngvớimộtđộngtừkhinói.Tênhàm,dođó,nênđượchướnghànhđộng(actionoriented).Nócũngnênđượcdùngởthìhiệntại.Thídụ,bạncómộthàmtạomộtsốngẫunhiênvớiphânbốGausse(agaussianrandomnumber),bạnnênđặttênnólàgenerate_gaussian_rand().Chúýcácsửdụngđộngtừhànhđộngtrongtênhàm.Nósẽđặthàmvàongữcảnhthíchhợp< ?php list($num1,$num2)=generate_gaussian_rand();list($num3,$num4)=generate_gaussian_rand();?>Đểsosánh,hãyxemthídụ:< ?php list($num1,$num2)=gaussian_rand_generator();list($num1,$num2)=gaussian_rand_generator();?>Bạncóthấysựkhácbiệt?Thídụthứhaisửdụngdanhtừ,mặcdùvẫnchuyểntảiđượcmụctiêucủahàm,nhưngnóngănngườitađọcmộtcáchtrôichảy.Hãysửdụngđộngtừ!13.13.13.13.KhKhKhKhôôôôngngngngsuysuysuysuynghnghnghnghĩĩĩĩththththấấấấuuuuđáđáđáđáo:o:o:o:CSDLCSDLCSDLCSDL&&&&SQLSQLSQLSQLSốcáchngườitatruycậpcơsởdữliệu(CSDL-database)vàlấykếtquảnhiềuđếnmứcthựcsựngạcnhiên.Nhữngthídụtôiđãgặpbaogồmnhữngtổhợplệnhifvàvònglặpdo...
  • 27
  • 328
  • 0
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

Kỹ thuật lập trình

... và thứ tự với OOP. Những cú pháp xen lẫn 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ở ... ích bao gồm một file đơn giản với những hàm trên nó. Đầu tiên, với OOP bạn có thể giữ những bit thông tin có liên quan với nhau và trình bày những nhiệm vụ phức tạp với dữ liệu đó. Thứ hai, bạn ... 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...
  • 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

Kỹ thuật lập trình

... 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 ... biệt sẽ liên kết với nhau nơi mà số ID là như nhau. Điều này cho chúng ta thông tin về khách hàng cùng lúc. 1.1.2. Các kiểu dữ liệu Khi bạn tạo một bảng ban đầu, bạn cần nói với MySQL server ... lưu trữ trên 4294967295 ký tự Blob Bằng với kiểu text, trừ trường hợp dương khi sắp xếp và so sánh, cho phép lưu trữ trên 65535 ký tự tinyblob Bằng với kiểu tinytext, trừ trường hợp dương khi...
  • 6
  • 466
  • 0

Xem thêm

Tìm thêm: xác định các nguyên tắc biên soạn khảo sát các chuẩn giảng dạy tiếng nhật từ góc độ lí thuyết và thực tiễn khảo sát chương trình đào tạo của các đơn vị đào tạo tại nhật bản khảo sát chương trình đào tạo gắn với các giáo trình cụ thể xác định thời lượng học về mặt lí thuyết và thực tế tiến hành xây dựng chương trình đào tạo dành cho đối tượng không chuyên ngữ tại việt nam điều tra với đối tượng sinh viên học tiếng nhật không chuyên ngữ1 khảo sát các chương trình đào tạo theo những bộ giáo trình tiêu biểu nội dung cụ thể cho từng kĩ năng ở từng cấp độ phát huy những thành tựu công nghệ mới nhất được áp dụng vào công tác dạy và học ngoại ngữ mở máy động cơ lồng sóc mở máy động cơ rôto dây quấn hệ số công suất cosp fi p2 đặc tuyến hiệu suất h fi p2 đặc tuyến mômen quay m fi p2 đặc tuyến dòng điện stato i1 fi p2 sự cần thiết phải đầu tư xây dựng nhà máy phần 3 giới thiệu nguyên liệu từ bảng 3 1 ta thấy ngoài hai thành phần chủ yếu và chiếm tỷ lệ cao nhất là tinh bột và cacbonhydrat trong hạt gạo tẻ còn chứa đường cellulose hemicellulose chỉ tiêu chất lượng theo chất lượng phẩm chất sản phẩm khô từ gạo của bộ y tế năm 2008