0

php for the web

Writing for the web its not what you learned in english class

Writing for the web its not what you learned in english class

Internet Marketing

... how to write f or the web, online writing, search engine optimization, SEO, web writing,website copywriting, website writing, writing, writing f or the web, writing tipsAbout the AuthorConnie ... the Public Relations Manager at VerticalResponse.vert icalresponse .co mhttp://www.verticalrespo nse.com/blo g/writing-fo r -the- web- its-no t-what-you-learned-in-english-class/Writing for the ... call f rom her the other day: “I’m building mywebsite, but I have no idea how to write anything f orit. Help!”Writing doesn’t come easy f or many people, letalone writing f or the Web. Sure,...
  • 3
  • 428
  • 0
A WEB APPLICANTION FOR THE TOURISM INDUSTRY IN HANOI   by   Dinh Huu Son

A WEB APPLICANTION FOR THE TOURISM INDUSTRY IN HANOI by Dinh Huu Son

Báo cáo khoa học

... publishing : The web was designed in order to share the information in the network. It was used as the distribution channel for the published documents. The on line publishers can earn their own ... allows the internet user go to other web pages from the current web site. This partnership provides surfers the chance to see the overall picture of “this industry”. By traveling among the websites, ... at the center of the triangular basin of the Red River. The tourist site of Tam Dao lies 50 km from Hanoi to the north. Ba Vi is the same distance to the south-west. In the Hanoi region, the...
  • 58
  • 472
  • 0
PHP programming dynamic web for everybody

PHP programming dynamic web for everybody

Kỹ thuật lập trình

... endControlStructureendControlStructureendControlStructureendControlStructure;HTMLHTMLHTMLHTML<html><head><title>%%PAGE_TITLE%%</title></head><body%%BODY_PROPERTIES%%><h1>%%PAGE_TITLE%%</h1><tableborder="0"cellpadding="0"cellspacing="0"><tr><tdwidth="25%">%%PAGE_LINKS%%</td><td>%%PAGE_CONTENT%%</td></tr></table></body></html><? PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology21212121Dormitory204.B518:20PMApril7,20061.2.1.2.1.2.1.2.TTTTạạạạoooommmmộộộộtttttrtrtrtrììììnhnhnhnhttttựựựựttttêêêênnnnvvvvààààlulululuôôôônnnntutututuâââânnnnththththủủủủMộttrongnhữngvấnđềchínhtrongbấtcứmộtdựánlớnnàolàsựxungđộtvềtên.Cáclớpcóthểphânđoạntên.Dođó,cáclớpkhácnhaucóthể:ĐượcgánmộtthuộctínhvớitêngiốngnhauChứacácphươngthứcvớitêngiốngnhauThídụ,lớpPhillipsvàlớpNormalcóthểcùngcóphươngthứctênscrewdriver.Nóichung,trướckhibắtđầumộtdựánlớnnào,bạnnêncómộttrìnhtựtênchomọithứ,cụthểlàcáchbạntáchcácbiếntoàncụcracácbiếnthôngthường,cáchđịnhnghĩahàmtrongthưviệnv.v.1.3.1.3.1.3.1.3.NhNhNhNhóóóómmmmccccááááccccýýýýninininiệệệệmmmmchungchungchungchungvvvvààààoooommmmộộộộttttttttậậậậpppptintintintinNhómcáchàmAPItươngtựvàochungmộttậptincũnggiốngnhưnhómcácphươngthứctươngtựvàomộtlớp.Cốgắngtưởngtượngmỗitậptinbạntạolàmộtlớp,mỗihàmtrongđólàmộtphươngthức.Bằngcáchnày,cáchàmcủabạnsẽcóđịnhnghĩavàcấutrúcsángsủa.Thídụ,bạncóthểmuốnnhómmọihàmliênquanđếntruycậpCSDLvàomộttậptinDB .php. 2.2.2.2.HHHHĐĐĐĐT,T,T,T,gigigigiốốốốngngngngmmmmọọọọiiiiththththứứứứ,,,,ttttốốốốttttkhikhikhikhiccccóóóóđđđđiiiiềềềềuuuuđộđộđộđộĐểtôilàmsángtỏmộtviệc.TôikhôngphảiđangcốbiệnhộđểbạntừbỏhẳnHĐTtrong PHP. Đúngra,tôichỉđangcốcảnhbáobạnđừngnêndùng PHP nhưJavahayC++,nơimàHĐTcóthểdùngthoảimái.HãycẩnthậnđánhgiálợivàhạitrướckhibạndùngmộttiếpcậnHĐTvới PHP. 10.10.10.10.DDDDùùùùngngngngnhnhnhnhầầầầmmmmBiBiBiBiểểểểuuuuththththứứứứccccChChChChíííínhnhnhnhquyquyquyquyBiểuthứcchínhquy(Regularexpressions)làcôngcụmạnhđểtìmvàtổchứcdữliệu,nhưlàkiểmđịnhđịachỉe-mailhoặckiểmtramộtURL.Tuynhiên,nóchậmhơncáccôngcụcủa PHP trongmộtsốtácvụđơngiản.Thídụ,nếubạnmuốnviếthoatoànbộmôtchuỗi,mộtlínhmớicủa PHP cóthểlàmnhưsau:< ?php $URL="http://www .php. net";$fp=@fopen($URL,"r");if(!$fp){die("Cannotopenwebsite$URL!");}while($line=@fgets($fp,1024)){$data.=$line;}@fclose($fp)orwarn("Cannotclosewebsitehandle,$URL");$data=ereg_replace("[a-z]","[A-Z]",$data);print$data;?>Tuynhiên,sẽphíthờigiankhibạndùnghàmereg_replace()(chậmhơn)đểlàmcôngviệcmàstrtoupper()(nhanhhơn)cóthểthựchiệntốthơn.$data=strtoupper($data);Nóichung,bạnluôncốgắngdùngcácthaythếđơngiảncủabiểuthứcchínhquyvìnósẽlàmtăngkhánhiềutốcđộchươngtrình. PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology9999Dormitory204.B518:20PMApril7,2006ĐâylàmộtthóiquenxấuvìNókhôngđượcdùngrộngrãi,chonênnhiềungườihọcsẽbịlẫnlộngiữahaicúphápNókhôngtươngthíchvớingônngữkhác,nghĩalànótrởnênkhóđọcđốivớinhữngngườitronggiaiđoạnquáđộ(mớichuyểntừmộtngônngữnàođósang PHP) Quantrọngnhất,làmộtngàynàođótínhnăngnàysẽbịxoáxổ,bắtbuộcbạnphảiviếtlạitoànbộmãcódùngnó.Dấungoặcnhọnluônluônlàmộtphầncủangônngữ PHP. Ởtrênchỉlàmộtthídụvềcấutrúclỗithời.Nócònnhiềunữa.Nhưmộtquytắc,bạnnêntheonhữngcácviếttrongtàiliệu PHP. Hầuhếtnóđượccậpnhậtmới.Nócũngdùngcáchàmmớinhấtcủa PHP trongthídụcủamình.Nênthườngxuyênkiểmtratàiliệukhibạncóýmuốnmởrộngtínhnăngnàođócủa PHP. Theocáchnày,bạnsẽkhôngphảiviếtlạicáchàmcósẵn.TTTTổổổổngngngngkkkkếếếếttttTrongbàinàybạnđãđiqua7trêntổngsố21lỗimàlậptrìnhviên PHP mắcphải.Nhữnglỗigiáokhoanàybaogồm:SSSSửửửửddddụụụụngngngngsaisaisaisaihhhhààààmmmmprintf()printf()printf()printf()ÁÁÁÁppppddddụụụụngngngngsaisaisaisaingngngngữữữữnghnghnghnghĩĩĩĩaaaaThiThiThiThiếếếếuuuuttttààààiiiililililiệệệệuuuutrongtrongtrongtrongmmmmããããngungungunguồồồồnnnnDDDDùùùùngngngngququququáááánhinhinhinhiềềềềuuuubibibibiếếếếnnnnttttạạạạmmmmViViViViếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnKhKhKhKhôôôôngngngngttttááááchchchchbibibibiệệệệttttphphphphầầầầnnnnkhkhkhkháááách/chch/chch/chch/chủủủủDDDDùùùùngngngngccccááááccccccccấấấấuuuutrtrtrtrúúúúccccllllỗỗỗỗiiiiththththờờờờiiii//Bad/OutdatedPracticewhile(1):print"5";if($idx++==5):break;endif;endwhile;//BetterPractice// (the codecouldbeoptimizedthough)while(1){print"5";if($idx++==5){break;}}?> PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology19191919Dormitory204.B518:20PMApril7,2006Trongthídụdưới,set_error_handler()đượcdùngđểchỉđịnhhàmerror_handler()làbộquảnlílỗimặcđịnh.Khimộtlỗixảyra,error_handler()đượcgọivàhàm PHP error_log()đượcdùngđểghilỗivàotậptinerror_file.NếumàlỗithuộcloạiE_ERROR,chúngtasẽthoátchươngtrìnhvàinthôngbáolỗi.< ?php //voiderror_handler(stringtype,stringmessage,stringfile,intline)//Customerrorhandler,setby the set_error_handler()//function.functionerror_handler($type,$message,$file=__FILE__,$line=__LINE__){error_log("$message,$file,$line",3,'error_file');if($type&E_ERROR){print'Anerroroccurred,ithasbeenloggedanditwillbeaddressed.';exit;}}set_error_handler('error_handler');?>11.11.11.11.LLLLạạạạmmmmddddụụụụngngngngHHHHướướướướngngngngđốđốđốđốiiiittttượượượượngngngng(H(H(H(HĐĐĐĐT)T)T)T)Môhìnhhướngđốitượnglàmộtkháiniệmtuyệtvời.Nócórấtnhiềulợiđiểm,màđángchúýnhấtlàkhảnăngdùnglạimãdễdàng.Tuynhiê,theonhưchúngtađượchiểu: PHP khôngphảilàmộtngônngữHĐT.Mặcdù PHP cómộtsựhỗtrợđầyđủvềHĐT,nókhônghiệuquảlẫnkhôngkhônngoannếudùngtínhnăngHĐTcủanókhibạncócáchàmkhácđểđạtđượccùngkếtquả.LídolàsựhỗtrợHĐTcủa PHP khôngđượcpháttriểnmạnh.Trongkhicóhầuhếtcácphầntửchínhyếu, PHP vẫncònthiếuvàitínhnăngcaocấp(nhưcáckháiniệmprotected,private)màmộtngônngữHĐTthựcsự(thídụnhưC++,Java)phảicó.CácmãhỗtrợHĐTcủa PHP khôngđượctinhchỉnhvàcũngkhônghiệuquả.NghĩalànếubạndùngmôhìnhHĐTtrong PHP, bạncóthểlàmchậmchươngtrìnhđángkể.Nóichung,mộtứngdụngdùngHĐTsẽchậmđi,cũngnhưlàbạndùngeval()thìsẽchậmhơnlàdùngmãbìnhthường.ĐểminhhoạđầyđủhơnviệcHĐTcógìđókhôngtốt,tôiđãtừngphảidùngnhữngtínhnăngvàkháiniệmcaocấpcủa PHP, mộtvàitrongsốđóthậmchíchưacótàiliệuchỉdẫn.1.1.1.1.ChChChChúúúúngngngngtatatataccccóóóóththththểểểểllllààààmmmmggggììììmmmmààààkhkhkhkhôôôôngngngngccccầầầầnnnnHHHHĐĐĐĐT?T?T?T?Nếubạnchuyểnsang PHP từcácngônngữnhưJavahayC++(nơibạnbạnthựcsựkhôngthểtạocácchươngtrìnhphứctạpmàkhôngdùngcáctínhnăngHĐT),việcbỏquakhảnăngHĐTcủa PHP cóthểsẽkhókhăn.Dùsao,tôivẫncóthểtrấnanbạnlàcácchươngtrìnhrấtmạnhcóthểđượcviếtmàkhôngdùngmấtcứkháiniệmvàmôhìnhHĐTnào (PHP đượcviếtbằngC,ngônngữkhônghỗtrợHĐT).Đểdànhchonhữngaikhôngquenvớikĩnăngphi-HĐT,dướiđâylàvàikĩthuậtđểtạochươngtrìnhcótínhkếtdínhvàdễmởrộngmàkhôngdùngmôhìnhHĐT: PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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. Web ApplicationDevelopmentwith PHP Mộtquyểnsáchtuyệtvờidạybạncảcáchpháttriển web lẫ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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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ủa the sql_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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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)//Reverseallof the charactersinastring.functionreverse_characters($str){returnimplode("",array_reverse(preg_split("//",$str)));}//stringreverse_characters(stringstr)//Reverseallof the charactersinastring.functionreverse_characters($str){$characters=preg_split("//",$str);$characters=array_reverse($characters);returnimplode("",$characters);}<?functionlen($str){ PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology1111Dormitory204.B518:20PMApril7,2006àiviếtnàydànhchonhữnglậptrìnhviên PHP quantâmđếnviệctránhnhữnglỗithườnggặpkhisửdụng PHP. Ngườiđọcphảibiếtcáccúphápcủa PHP, vànênbiếtcôngdụngcủacáchàmtrong PHP. Mộttrongnhữngđiểmmạnhnhấtcủa PHP vôtìnhtrởthànhmộttrongnhữngđiểmyếunhấtcủanó:ttttíííínhnhnhnhddddễễễễssssửửửửddddụụụụngngngng.Nhiếungườichọn PHP vìtínhdễsửdụng,đãkhôngnhậnrarằng:sửdụngđúng PHP PHP PHP PHPccccòòòònnnnkhkhkhkhóóóóhhhhơơơơnnnnccccááááccccngngngngôôôônnnnngngngngữữữữkhkhkhkháááácccc.Trongloạtbàinàysẽlầnlượtnêura21lỗi,từnhữngsailầmgiáokhoa(làmscripttrởnênchậmvàkhóquảnlí)đếnnhữngsailầmchếtngười-cóthểxemlànguồngốccủanhữngsailầmsơđẳng.PHẦN1:7LỖIGIÁOKHOA21.21.21.21.SSSSửửửửddddụụụụngngngngprintf()printf()printf()printf()khkhkhkhôôôôngngngngththththííííchchchchhhhhợợợợppppHàmprintf()dùngđểindữliệucóđịnhdạngNócóthểđượcdùng,thídụ,khibạnmộtinmộtsốkiểudoublevới2sốlẻ,hoặctrongbấtkìtìnhhuốngnàobạnmuốnthayđổiđịnhdạngtrướckhiin.Thídụdướiđâyminhhoạcáchdùngđúngcủaprintf():địnhdạngsốPivớiđộchínhxáctheoýmuốnMMMMããããllllệệệệnhnhnhnh (PHP) <?/* The threefacesofΠ*/printf("Piis:%.2f\n<br>\n",M_PI);printf("Piisalso:%.3f\n<br>\n",M_PI);printf("Piisalso:%.4f\n<br>\n",M_PI);?>ChChChChúúúúýýýý....Tôiđãtừnggặpnhữngngườisợdùngprintf(),thayvàođólạidùngnhữnghàmđịnhdạngtựviết,dàiđến30-40dòng,trongđimộtcâuprintf()cóthểlàmmọithứanhtamongmuốn.Nhiếulậptrìnhviêndùngsaiprintf():incácbiến,cácgiátrịtrảvềcủahàmhoặcthỉnhthoảng,chỉlàdữliệuthôngthường.Thườngxảyratronghaitìnhhuống:Câulệnhprint()thíchhợphơnHiểnthịgiátrịtrảvềcủamộthàm1.1.1.1.KhiKhiKhiKhinnnnààààooooprint()print()print()print()ththththííííchchchchhhhhợợợợpppphhhhơơơơn?n?n?n?Cáclậptrìnhviênthườngsửdụngprintf()trongkhichỉprint()làđủ.Xétthídụsau:<?$name='NguyenAnhKhoa';$nghenghiep='Sinhvien';$diachi='Phong204.B5–KTX–DHSPDongThap';$email='khoa_computer2004@yahoo.com';printf("Tencuatuila:%s\n<br>\nHiendangla:%s,%s\n<br>\nLienhevoitoiquaEmail:%s\n<br>\n",$name,$nghenghiep,$diachi,$email);?>Hàmprint()print()print()print()cóthểdùngthaychoprintf()nhưsau:B PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology12121212Dormitory204.B518:20PMApril7,2006Sựlấymẫukhôngchínhxáclàmộtthídụhayvềvấnđềnày.Vàingườiviếtlệnhkhôngdànhthờigianđểnghĩthấuđáo.Đúnglàkhôngchỉcóduynhấtmộtcách“đúng”đểlấymẫudữliệu,nhưngnócórấtnhiềucáchkhôngđúng.Phầnnàybaogồmcácchủđề:ÁpdụngsaicáchàmvềCSDLDùngsaiSQL:khônglấynhữngthứbạncầnDùng PHP đểsắpxếpkếtquả1.1.1.1.DDDDùùùùngngngngsaisaisaisaiccccáááácccchhhhààààmmmmCSDLCSDLCSDLCSDLMộtđoạnmã PHP đãdùngcúphápsauđểlấykếtquảtừCSDL(presentedbelowusingageneralizedsetofSQLfunctions):if(!($mautin=sql_fetch_row($truyvan))){print"Motloixayra:Khongtimthaymautinnao!";exit;}do{print"$mautin[0]:$mautin[1]\n<br>\n";}while($mautin=sql_fetch_row($truyvan));ChChChChúúúúýýýý::::Ởtrên,vàcácthídụsaunữa,$truyvandiễntảhandlehoặcpointerđếnmộttậpkếtquảtruyvấn ... ,$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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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'tnecessarilymeanthatyoushouldhavetocorrect the code.-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ỗtrongtrang web. 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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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 ... while,cáccâugọinhiềulần,vàcáchàmsql_result()trongvòng for. Nhữngngườinàycónghĩhọđanglàmgìkhông?Việcviếtcácmãtrật-hoặc-trúng(hit-or-misscode)chứngminhsựthiếutậptrung.Nhữngcánhânđóxácđịnhnỗlựccủahọdùngđểhoànthànhcôngviệchơnlàđểhoànthànhđúngcôngviệc,kếtquảlàlàmchocácôngchủquăngthờigianvàtiềnbạcrađường. PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology26262626Dormitory204.B518:20PMApril7,2006PHẦN3:7LỖICHẾTNGƯỜI7.7.7.7.ChChChChééééppppvvvvààààddddáááán:n:n:n:khkhkhkhôôôôngngngngphphphphảảảảiiiihhhhướướướướngngngngđđđđiiiittttốốốốttttTôiđãgặpnhiềutaylậptrìnhmớivàonghềđichépnhữngđoạnmã(thídụnhưlàkiểmtrađịachỉe-mail,gửie-mail,lấygiátrịtừformđểsoạne-mail).Họthườngdánchúngvàochươngtrìnhcủamìnhvàrồikếtquảlàmộtđốngnhữngcâulệnhgửiformkhôngantoàn.Dùrằngmộtđoạnmãchạyđượctrongnhữngđiềukiệntốiưu,nóthườnggặplỗitrongbấtkìsựkiểmtra"mãtốt"nàoCôngviệcchắpvásẽkhkhkhkhôôôôngngngngcócácưuđiểmsau:MMMMởởởởrrrrộộộộngngngngđượđượđượđược:c:c:c:đoạnmãtrôngnhưcácmảnhriêngrẽrápvávàonhau.Nếunhờmộtlậptrìnhviêncókinhnghiệmsửachươngtrìnhcủabạn,họthườngthíchviếtlạitoànbộĐoạnmãkhôngđọcđượcsẽkhôngmởrộngđược.AnAnAnAntotototoààààn:n:n:n:bạncóthểđangchépmãcủangườikhácvàochươngtrìnhcủamìnhmàlạikhônghiểurõràngđoạnmãđó.Hãytưởngtưởngxem.NếuđoạnmãđócómộtlỗilàmxoátoànbộđĩacủabạnHơnnữa,cùngmộtđoạnmãthìtínhantoànkhônggiốngnhautrêncáchệthốngkhácnhau.Cuốicùng,chươngtrìnhcủabạnsẽkếthừalỗicủangườikhác.Nhanh:Nhanh:Nhanh:Nhanh:khicắtdáncácđoạnmã,kếtquảthườngsẽchạykhôngnhanh,vìchúngkhôngcómộttiếntrìnhchunghợplí(đâylàđiềuquantrọngnhấtkhiviếtcácchươngtrìnhnhanh)1.1.1.1.LLLLààààmmmmđúđúđúđúngngngngphphphphươươươươngngngngphphphphááááp:p:p:p:ttttììììmmmmhihihihiểểểểuuuutrtrtrtrướướướước,c,c,c,saosaosaosaochchchchééééppppsausausausauNghiêncứumãcủangườikháckĩlưỡngtrướckhisaochép.Phântíchxemnólàmgì.Chỉkhinàođoạnmãấyđọcđược,nhấtquánvớilogicchươngtrìnhcủabạn,vàkhôngcólỗi,thìmớinênsaochépnó.Tiếnhànhlúcnàysẽgiúpbạnchỉnhsửanóphùhợpvớicácphầncònlạicủachươngtrìnhmộtcáchthoảimáihơn.2.2.2.2.CCCCááááccccththththưưưưviviviviệệệệnnnnrrrrấấấấttttttttốốốốttttChỉdùngcácthưviện PHP từcácnguồntincậynhưPEARhoặckhocáclớpcủa PHP (PHP ClassesRepository).VớicácgóiAPIcósẵn,việcdùngcáchàmcủanócũngkhôngthànhvấnđề.Thựcra,nếubạntìmđượcmộtthưviệnviếtsẵnbởimộtnguồntincậy,thìthườngnósẽlàmộtlựachọntốtđểdùngchochươngtrình(thayvìtựviếtlấy).6.6.6.6.KhKhKhKhôôôôngngngngccccóóóóđườđườđườđườngngngngllllốốốốiiii((((guidelines))))chochochochođồđồđồđồáááánnnnMộtlầnkhitôimớibắtđầulậptrình,tôilàmviệctrênmộtđồánkhácơbản(vớiPerl)cùng3lậptìnhviênkhác.Vìtôicòntrẻ(vàkhôngphảitrưởngnhóm),chúngtôikhôngcóđườnglốiviếtmãchođồán.Mỗingườiđượcgiaomộtphầncôngviệc,vàlàmriêngrẽ.Khichúngtôinhậpchunglạiđểchạychươngtrìnhcuốicùng,mỗiphầncủađồánnhìnkháchẳnnhau PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology2222Dormitory204.B518:20PMApril7,2006printprintprintprint"Tencuatuila:$name\n\n\n\n<br>\n\n\n\nHiendangla:$nghenghiep,$diachi\n\n\n\n<br>\n\n\n\nLienhevoitoiquaEmail:$email\n\n\n\n<br>\n\n\n\n";;;;Khikhôngcầnđịnhdạngsửliệu,dùngprint()thaychoprintf()cónhữnglợiíchsau:ThiThiThiThihhhhàààànhnhnhnhnhanhnhanhnhanhnhanhhhhhơơơơn:n:n:n:hàmprintf()địnhdạngdữliệucủabạntrướckhihiểnthị,nósẽchậmhơnprint()hoặcecho()MMMMããããssssáááángngngngssssủủủủa:a:a:a:hãyxem,dùnghàmprintf()sẽlàmchongườiđọchơibịlẫnlộn(tấtnhiêntrừkhihọcónềntảngC).Nóđòihỏikiếnthứcvềcúphápprintf()(thídụ,%sthaychochuỗicòn%dlàsố)vàvềkiểubiến2.2.2.2.DDDDùùùùngngngngprintf()printf()printf()printf()đểđểđểđểxuxuxuxuấấấấttttddddữữữữlilililiệệệệuuuutrtrtrtrảảảảvvvvềềềềttttừừừừggggọọọọiiiihhhhààààmmmmMộtlỗithườnggặpkháclàdùnprintf()đểxuấtdữliệutrảvềtừgọihàm,thídụnhưhàmđếmdướiđây:Khixuấtgiátrịdohàmtrảvề,toántử.nêndùngđểnốitrongprint(),nhưdướiđây:Dùngtoántử.nhanhhơnviệcdùngprintf()20.20.20.20.ÁÁÁÁppppddddụụụụngngngngsaisaisaisaingngngngữữữữnghnghnghnghĩĩĩĩaaaa(semantics)(semantics)(semantics)(semantics)Nhiềulậptrìnhviênsửdụng PHP màkhôngbiếtđếnnhữngđiểmtinhtếcủangônngữnày.Mộttrongnhữngđiểmđólàsựkhácnhaugiữacúpháp(syntax)vàngữnghĩa(semantics).CCCCúúúúphphphphááááp:p:p:p:nhữngquytắcđịnhnghĩamộtphầntử.Thídụ:dấu$đểtrướcdùngđịnhnghĩabiến,dùngdấu()vàcácthamsốđịnhnghĩamộthàm...
  • 27
  • 302
  • 0
PHP/MySQL Programming for the Absolute Beginner by Andy Harris

PHP/MySQL Programming for the Absolute Beginner by Andy Harris

Kỹ thuật lập trình

... Retrieve the Data The code for hiUser .php is specially built. The form that called the hiUser .php code is expected to have an element called userName. Take a look at the code for hiUser .php ... kind of paragraph for quotes, for example, and another type for ordinary text. To use the special form of the tag, just use the class attribute in the HTML, as I did in the following text: ... permanently host Web pages and other information. They are much like the drive-through restaurant. Users "drive up" to the Web server using a Web browser. The data is exchanged, and the user...
  • 368
  • 610
  • 0
XML for the world wide web

XML for the world wide web

Quản trị Web

... HTML's tags are mostly formatting-oriented, they do not give information about the content of a Web page, and thus make it hard for that information to be reused in another context. Since HTML ... 24) since the document must rely on the external file that contains the entity definition. 3. In the DTD for the XML document that will use the entity, type <!ENTITY to begin the entity ... bestselling editions of HTML for the World Wide Web: Visual QuickStart Guide. She also wrote the bestselling Perl and CGI for the World Wide Web: Visual QuickStart Guide, and the Macintosh and Windows...
  • 250
  • 674
  • 0
Tài liệu PHP programming dynamic web for ewreybody pptx

Tài liệu PHP programming dynamic web for ewreybody pptx

Quản trị Web

... ,$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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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 // The internalfunctionsarelayer1//Internalfunctiontocalculate the correct//interestratetobeusedgiven the amountpermonth//and the timeitistobepaidinfunction_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);}// The APIislayer2//doublecalculate_mortgage_rate(intmoney,inttime,intmonth)//Calculate the mortgagerategiven the // the totalmoney,timeitspaidoverand// the intervalsfunctioncalculate_mortgage_rate($money,$time,$month){$rate=_mort_find_interest_rate($money)/100;$money/=($time/$month);return($rate*$money)+$money;}?>CalcMortgage .php < ?php // The actualapplicationislayer3//$money,$timeand$periodaresubmitted//fromaforminclude_once'MortgageRate .php& apos;;$price=calculate_mortgage_rate($money,$time,$period);print"Your$periodmonthcostis$price";?> PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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'tnecessarilymeanthatyoushouldhavetocorrect the code.-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ỗtrongtrang web. 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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology12121212Dormitory204.B518:20PMApril7,2006Sựlấymẫukhôngchínhxáclàmộtthídụhayvềvấnđềnày.Vàingườiviếtlệnhkhôngdànhthờigianđểnghĩthấuđáo.Đúnglàkhôngchỉcóduynhấtmộtcách“đúng”đểlấymẫudữliệu,nhưngnócórấtnhiềucáchkhôngđúng.Phầnnàybaogồmcácchủđề:ÁpdụngsaicáchàmvềCSDLDùngsaiSQL:khônglấynhữngthứbạncầnDùng PHP đểsắpxếpkếtquả1.1.1.1.DDDDùùùùngngngngsaisaisaisaiccccáááácccchhhhààààmmmmCSDLCSDLCSDLCSDLMộtđoạnmã PHP đãdùngcúphápsauđểlấykếtquảtừCSDL(presentedbelowusingageneralizedsetofSQLfunctions):if(!($mautin=sql_fetch_row($truyvan))){print"Motloixayra:Khongtimthaymautinnao!";exit;}do{print"$mautin[0]:$mautin[1]\n<br>\n";}while($mautin=sql_fetch_row($truyvan));ChChChChúúúúýýýý::::Ởtrên,vàcácthídụsaunữa,$truyvandiễntảhandlehoặcpointerđếnmộttậpkếtquảtruyvấn ... ,$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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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 // The internalfunctionsarelayer1//Internalfunctiontocalculate the correct//interestratetobeusedgiven the amountpermonth//and the timeitistobepaidinfunction_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);}// The APIislayer2//doublecalculate_mortgage_rate(intmoney,inttime,intmonth)//Calculate the mortgagerategiven the // the totalmoney,timeitspaidoverand// the intervalsfunctioncalculate_mortgage_rate($money,$time,$month){$rate=_mort_find_interest_rate($money)/100;$money/=($time/$month);return($rate*$money)+$money;}?>CalcMortgage .php < ?php // The actualapplicationislayer3//$money,$timeand$periodaresubmitted//fromaforminclude_once'MortgageRate .php& apos;;$price=calculate_mortgage_rate($money,$time,$period);print"Your$periodmonthcostis$price";?> PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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'tnecessarilymeanthatyoushouldhavetocorrect the code.-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ỗtrongtrang web. 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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology12121212Dormitory204.B518:20PMApril7,2006Sựlấymẫukhôngchínhxáclàmộtthídụhayvềvấnđềnày.Vàingườiviếtlệnhkhôngdànhthờigianđểnghĩthấuđáo.Đúnglàkhôngchỉcóduynhấtmộtcách“đúng”đểlấymẫudữliệu,nhưngnócórấtnhiềucáchkhôngđúng.Phầnnàybaogồmcácchủđề:ÁpdụngsaicáchàmvềCSDLDùngsaiSQL:khônglấynhữngthứbạncầnDùng PHP đểsắpxếpkếtquả1.1.1.1.DDDDùùùùngngngngsaisaisaisaiccccáááácccchhhhààààmmmmCSDLCSDLCSDLCSDLMộtđoạnmã PHP đãdùngcúphápsauđểlấykếtquảtừCSDL(presentedbelowusingageneralizedsetofSQLfunctions):if(!($mautin=sql_fetch_row($truyvan))){print"Motloixayra:Khongtimthaymautinnao!";exit;}do{print"$mautin[0]:$mautin[1]\n<br>\n";}while($mautin=sql_fetch_row($truyvan));ChChChChúúúúýýýý::::Ởtrên,vàcácthídụsaunữa,$truyvandiễntảhandlehoặcpointerđếnmộttậpkếtquảtruyvấn ... while.****if((sql_num_rows($truyvan)<=if((sql_num_rows($truyvan)<=if((sql_num_rows($truyvan)<=if((sql_num_rows($truyvan)<=0)0)0)0){{{{PrintPrintPrintPrintErrorErrorErrorError}:}:}:}:ođếmsốdòngtrongtậpkếtquả.oNếunhỏhơnhaybằng0,inthôngbáolỗi.oNếukhông,tiếptục.Biểuthứcnàodểhiểuhơn?Rõrànglàcáchđếmsẽtrựctiếpvàgọngànghơn.Sựkhácbiệtthựctếlàgì?Vớimộtlệnhifđơngiản,chúngtakhôngthuđượclợinhều.Tuynhiên,vớihơn10000dònglệnh,hãydànhthờigiannghĩđếncáchrõràngnhất,nósẽtiếtkiệmchongườiphântíchchươngtrìnhnhiềugiờsuynghĩa.Lợiíchkháccóthểkểđếnlàchươngtrìnhcủabạnsẽnhanhhơnvàdễpháttriểnhơn. PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology19191919Dormitory204.B518:20PMApril7,2006Trongthídụdưới,set_error_handler()đượcdùngđểchỉđịnhhàmerror_handler()làbộquảnlílỗimặcđịnh.Khimộtlỗixảyra,error_handler()đượcgọivàhàm PHP error_log()đượcdùngđểghilỗivàotậptinerror_file.NếumàlỗithuộcloạiE_ERROR,chúngtasẽthoátchươngtrìnhvàinthôngbáolỗi.< ?php //voiderror_handler(stringtype,stringmessage,stringfile,intline)//Customerrorhandler,setby the set_error_handler()//function.functionerror_handler($type,$message,$file=__FILE__,$line=__LINE__){error_log("$message,$file,$line",3,'error_file');if($type&E_ERROR){print'Anerroroccurred,ithasbeenloggedanditwillbeaddressed.';exit;}}set_error_handler('error_handler');?>11.11.11.11.LLLLạạạạmmmmddddụụụụngngngngHHHHướướướướngngngngđốđốđốđốiiiittttượượượượngngngng(H(H(H(HĐĐĐĐT)T)T)T)Môhìnhhướngđốitượnglàmộtkháiniệmtuyệtvời.Nócórấtnhiềulợiđiểm,màđángchúýnhấtlàkhảnăngdùnglạimãdễdàng.Tuynhiê,theonhưchúngtađượchiểu: PHP khôngphảilàmộtngônngữHĐT.Mặcdù PHP cómộtsựhỗtrợđầyđủvềHĐT,nókhônghiệuquảlẫnkhôngkhônngoannếudùngtínhnăngHĐTcủanókhibạncócáchàmkhácđểđạtđượccùngkếtquả.LídolàsựhỗtrợHĐTcủa PHP khôngđượcpháttriểnmạnh.Trongkhicóhầuhếtcácphầntửchínhyếu, PHP vẫncònthiếuvàitínhnăngcaocấp(nhưcáckháiniệmprotected,private)màmộtngônngữHĐTthựcsự(thídụnhưC++,Java)phảicó.CácmãhỗtrợHĐTcủa PHP khôngđượctinhchỉnhvàcũngkhônghiệuquả.NghĩalànếubạndùngmôhìnhHĐTtrong PHP, bạncóthểlàmchậmchươngtrìnhđángkể.Nóichung,mộtứngdụngdùngHĐTsẽchậmđi,cũngnhưlàbạndùngeval()thìsẽchậmhơnlàdùngmãbìnhthường.ĐểminhhoạđầyđủhơnviệcHĐTcógìđókhôngtốt,tôiđãtừngphảidùngnhữngtínhnăngvàkháiniệmcaocấpcủa PHP, mộtvàitrongsốđóthậmchíchưacótàiliệuchỉdẫn.1.1.1.1.ChChChChúúúúngngngngtatatataccccóóóóththththểểểểllllààààmmmmggggììììmmmmààààkhkhkhkhôôôôngngngngccccầầầầnnnnHHHHĐĐĐĐT?T?T?T?Nếubạnchuyểnsang PHP từcácngônngữnhưJavahayC++(nơibạnbạnthựcsựkhôngthểtạocácchươngtrìnhphứctạpmàkhôngdùngcáctínhnăngHĐT),việcbỏquakhảnăngHĐTcủa PHP cóthểsẽkhókhăn.Dùsao,tôivẫncóthểtrấnanbạnlàcácchươngtrìnhrấtmạnhcóthểđượcviếtmàkhôngdùngmấtcứkháiniệmvàmôhìnhHĐTnào (PHP đượcviếtbằngC,ngônngữkhônghỗtrợHĐT).Đểdànhchonhữngaikhôngquenvớikĩnăngphi-HĐT,dướiđâylàvàikĩthuậtđểtạochươngtrìnhcótínhkếtdínhvàdễmởrộngmàkhôngdùngmôhìnhHĐT: PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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 programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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)//Reverseallof the charactersinastring.functionreverse_characters($str){returnimplode("",array_reverse(preg_split("//",$str)));}//stringreverse_characters(stringstr)//Reverseallof the charactersinastring.functionreverse_characters($str){$characters=preg_split("//",$str);$characters=array_reverse($characters);returnimplode("",$characters);}<?functionlen($str){ PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology25252525Dormitory204.B518:20PMApril7,2006mộtnhómthưtín,haytrongmộtkhomãnguồnnàođó).Tuynhiên,mộtbiểuthứcchínhquykhôngđủnếubạnmuốncókếtquảchínhxác.Cóvàicáchantoànhơnmàbạncóthểdùng:2.1.2.1.2.1.2.1.KiKiKiKiểểểểmmmmtratratratrakkkkếếếếttttnnnnốốốốiiii(socket(socket(socket(socketvalidation)validation)validation)validation)Mộtcáchđểkiểmđịnhđịachỉe-mailmàkhôngquấyrầytrựctiếpđếnngườidùnglàtạomộtkếtnốiđếnservernhậnđượctrongđịachỉe-mail,sauđótìmtênđăngkícủahọ.2.1.1.2.1.1.2.1.1.2.1.1.ƯƯƯƯuuuuđđđđiiiiểểểểmmmmKhônggâybấttiệnchongườidùngvìnóđượctiếnhànhtrongsuốt.Pháthiệnnhiềuđịachỉmamàbiểuthứcchínhquykhôngbiết(nhưlàjoe@fgsdh.com).2.1.2.2.1.2.2.1.2.2.1.2.KhuyKhuyKhuyKhuyếếếếttttđđđđiiiiểểểểmmmmKhôngpháthiệnđượcđịachỉbịđánhcắp.Thídụ,nếuJohnDoeđưađịachỉe-mailcủatôi(phanthanhkieu @php. net),mọithứvẫntiếnhànhbìnhthường,dùnólàđịachỉcủatôichứkhôngphảicủahắnta.Kiểmtrachậmhơnbiểuthứcchínhquy.Mailservercủangườidùngcóthểtạmngưnghoạtđộngtrongthờigianngắn,làmchomộtđịachỉe-mailhợplệbịtừchối2.2.2.2.2.2.2.2.KiKiKiKiểểểểmmmmtratratratrattttươươươươngngngngttttááááccccMộtcáchkhácđểkiểmđịnhđịachỉe-maillàgửimộtkhoáđặcbiệtđếnhộpthưngườidùng,vàbắthọnhậpkhoáđóđểtiếptục.Điềunàyđảmbảorằngkhôngnhữngđịachỉe-maillàhợplệ,màngườidùngcóquyềntruyxuấtvàođịachỉđó.2.2.1.2.2.1.2.2.1.2.2.1.ƯƯƯƯuuuuđđđđiiiiểểểểmmmmLàcáchtốtnhấtđểkiểmtrangườidùngcómộtđịachỉe-mailhợplệ2.2.2.2.2.2.2.2.2.2.2.2.KhuyKhuyKhuyKhuyếếếếttttđđđđiiiiểểểểmmmmĐòihỏingườidùngphảitiếnhànhthêmbướcphụ.Điềunàyquấyrầymấyngườicóýđịnhlàmphiềnbạn.Giốngnhưmọicáchkhác,nókhôngđảmbảođượcchống-đánh-lừa.NgườidùngcóthểtạomộtđịachỉtạmởHotmailhayNetaddressvàsau PHP programmingdynamic web for ewreybody21Fatalerrorsinprogrammingwith 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...
  • 27
  • 592
  • 0
Tài liệu php|Tropics The magazine for PHP professional docx

Tài liệu php|Tropics The magazine for PHP professional docx

Quản trị Web

... that the name andpassword are being sent from the browser to the web server in plain text. PHP provides support for a varietyof encryption routines, but PHP sits on the server and itis the ... with the login screen, the server will send to the client an additional value, known as the salt, whichis then used to modify the encrypted value. The brows-er will then append this value to the ... beforeencrypting it and return the encrypted salted value to the server. When the server receives the password from the form, it also needs to take its own password and the same salt, append them...
  • 66
  • 393
  • 0
For dummies PHP and MySQL web development all in one desk reference for dummies

For dummies PHP and MySQL web development all in one desk reference for dummies

Kỹ thuật lập trình

... dynamic Web site.You need to know about the following:✦ PHP: The language that you use to write the scripts that perform the tasks required on your Web site. Scripts create the displays that the user ... and the most cost effective.Using a hosted Web siteWhen you use an environment with a hosted Web site, such as the threeenvironments discussed above, for the world to see the Web pages, the Web page ... be in a specific location on the computer. The Web serverthat delivers the Web pages to the world expects to find the Web page files ina specific directory. The Web host staff or IT department...
  • 675
  • 560
  • 0
Tài liệu Báo cáo khoa học:

Tài liệu Báo cáo khoa học: " Mining the Web for Language Learning" pdf

Báo cáo khoa học

... verbsdescribing actions for the noun “TV.” In the results,we find fresh and authentic sample sentences minedfrom the web, the first of which contains “watchTV,” the most common collocation, as the top result.Additionally, ... consistsof the crawler and the raw web page storage. The crawler periodically downloads two kinds of web pages, which are put into the storage. The first kindof web pages are parallel web pages ... round of the mining process. The second layer consists of the extractor, the filter, the classifiers and the readability evaluator,which are applied sequentially. The extractor scans the raw web page...
  • 6
  • 658
  • 0
Tài liệu THE BOOK SELECTION PROCESS FOR THE BOOK CITATION INDEX IN WEB OF SCIENCE pdf

Tài liệu THE BOOK SELECTION PROCESS FOR THE BOOK CITATION INDEX IN WEB OF SCIENCE pdf

Cao đẳng - Đại học

... . . THE BOOK SELECTION PROCESS FOR THE BOOK CITATION INDEXINTRODUCTION: Web of ScienceSM is well known for its coverage of top tier international and regional journal literature in the Science ... Conference Proceedings Citation Index (1990 to present). These indexes are characterized by the quality of the publications covered in them. Their content has been developed over decades of time ... manner. With the inclusion of The Book Citation Index in Web of Science, Thomson Reuters has expanded the scope of its presentation of citation coverage to include this essential scholarly format....
  • 4
  • 477
  • 0
Báo cáo

Báo cáo " A web-based decision support system for the evaluation and strategic planning using ISO 9000 factors in higher education " pot

Báo cáo khoa học

... processing of Web- based DSS application. For the web interface, admin user either can login to the system or view DSS results on website. The system module will verify the account authorized information ... in the case of study. The first level is the objective for choosing the best strategic planning of COE in the future. The second level is the primary factors as a group of criteria in which the ... national standards for quality assurance. The representative of ISO for the USA is the American National Standards Institute (ANSI) and the ISO 9000 series is administered by the American Society...
  • 12
  • 541
  • 0

Xem thêm