0
  1. Trang chủ >
  2. Văn Hóa - Nghệ Thuật >
  3. Thời trang - Làm đẹp >

Tài liệu 10 sai lầm ''''''''chết người'''''''' của giới trẻ khi chăm sóc da ppt

Tài liệu 10 sai lầm ''''chết người'''' của giới trẻ khi chăm sóc da ppt

Tài liệu 10 sai lầm ''''chết người'''' của giới trẻ khi chăm sóc da ppt

... 10 sai lầm 'chết người' của giới trẻ khi chăm sóc da Bài viết này sẽ tổng hợp những sai lầm trong việc chăm sóc da của những người đã có kinh nghiệm, của những chuyên da dinh ... Sai lầm #4 Nếu bạn sở hữu một làn da khô, đừng bỏ bê việc chăm sóc nó. Đó chính là dấu hiệu của việc bạn cần phải nạp thêm chất dinh dưỡng cho làn da của mình. Hãy chăm sóc những vùng da ... và da liễu, đồng thời cung cấp cho bạn những biện pháp khắc phục những sai lầm này. Sai lầm #1 Rất nhiều cô gái không có kiến thức về loại da của mình cũng như những vấn đề mà da của...
  • 4
  • 383
  • 0
Tài liệu 10 sai lầm “chết người” của nhân viên bán hàng ppt

Tài liệu 10 sai lầm “chết người” của nhân viên bán hàng ppt

... muốn của đối tác. Sai lầm 5: Thiếu hệ thống đánh giá Chỉ có một số ít khách hàng muốn dùng sản phẩm hoặc dịch vụ của bạn. Lý do có thể nằm ở tài chính hoặc nhu cầu của họ. Vấn đề của bạn ... những sai lầm “chết người” mà một nhân viên bán hàng có thể mắc phải. Sai lầm 1: Thiếu hình ảnh chuyên nghiệp Nếu bạn muốn người khác lắng nghe bạn và chú ý đến lời tư vấn hoặc giới thiệu ... sản phẩm (dịch vụ) của bạn thì phải sở hữu một vẻ ngoài thật chuyên nghiệp. Giới thiệu mặt hàng với vẻ tự tin là cách để các vị khách không nghi ngờ lời nói của bạn. Sai lầm 2: Nói quá nhiều...
  • 5
  • 981
  • 20
Tài liệu 5 sai lầm chết người của các nhà hoạch định chiến lược pptx

Tài liệu 5 sai lầm chết người của các nhà hoạch định chiến lược pptx

... về 5 sai lầm nguy hiểm nhất của các nhà hoạch định chính sách doanh nghiệp dưới đây. 1. Sai lầm thứ nhất: Không biết phân biệt chiến lược với hoạt động. Theo Porter, đây chính là sai lầm ... này”, Porter kết luận. “Thị phần có khi có ý nghĩa, nhưng cũng có khi chẳng có ý nghĩa gì”. 3. Sai lầm thứ 3: Quá nhiều người tham gia xây dựng chiến lược Sai lầm thứ 3, theo Porter, đó là việc ... hợp hơn. 4. Sai lầm thứ 4: Chạy đua theo tăng trưởng Sai lầm chết người thứ 4 – đó là việc “tăng trưởng chỉ để tăng trưởng”. Trong cuộc đua này, công ty sẽ mất đi bản sắc riêng của mình và...
  • 4
  • 611
  • 3
Tài liệu nhung sai lam chet nguoi cua doanh nghiep nho pdf

Tài liệu nhung sai lam chet nguoi cua doanh nghiep nho pdf

... Những sai lầm chết người của các doanh nghiệp nhỏTheo Michael S. Winicki, một nhà tư vấn hoạt động tiếp thị, chủ nhân của trang web Big Noise Marketing, từng ... từng làm tư vấn cho hơn 2.000 doanh nghiệp nhỏ ở 136 nước trên thế giới thì doanh nghiệp nhỏ thường mắc phải một số sai lầm có thể khi n họ tự "xóa sổ" mình trên thị trường 1. Sếp biết ... tạo. Thông thường, các công ty lớn thường có các cuốn sách hướng dẫn thực hành nghiệp vụ hay tài liệu huấn luyện phục vụ cho việc đào tạo, huấn luyện nhân viên. Ngược lại, đa số các doanh nghiệp...
  • 2
  • 373
  • 1
Tài liệu 4 sai lầm chết người của một bản sơ yếu lý lịch pdf

Tài liệu 4 sai lầm chết người của một bản sơ yếu lý lịch pdf

... kiểu “tiện thể” Khi một nhà quản lý nhân sự đang tuyển chọn một chồng hồ sơ của các ứng viên, hồ sơ của bạn bị loại ngay từ đầu. Lý do không phải là bản sơ yếu lý lịch màu đỏ của bạn mà do bạn ... trong tình trạng sai sót, ngớ ngẩn và ngốc nghếch đến mức lố bịch. Dưới đây là 4 lỗi thường gặp nhất, có thể “giết chết” bản sơ yếu lý lịch của bạn: Lỗi chính tả Theo điều tra của CareerBuilder.com, ... 4 sai lầm chết người của một bản sơ yếu lý lịch Bạn thường nghĩ: “Tôi hoàn toàn biết cách viết một bản...
  • 2
  • 2,170
  • 1
Tài liệu Những sai lầm “chết người” của các doanh nghiệp nhỏ pdf

Tài liệu Những sai lầm “chết người” của các doanh nghiệp nhỏ pdf

... Những sai lầm “chết người” của các doanh nghiệp nhỏ Michael S. Winicki, một nhà tư vấn hoạt động tiếp thị, chủ nhân của trang web Big Noise Marketing, từng ... Marketing, từng làm tư vấn cho hơn 2.000 DN nhỏ ở 136 nước trên thế giới thì DN nhỏ thường mắc phải một số sai lầm có thể khi n họ tự "xóa sổ" mình trên thị trường 1.Sếp biết nhìn ... quan tâm - khi nhân viên nghỉ việc thường xuyên, trong khi các DN nhỏ lại thường không có một chương trình đào tạo chuyên nghiệp. 8. Không hiểu biết về kế toán. Các DN nhỏ đôi khi rất xem...
  • 5
  • 346
  • 0
Những sai lầm kinh điển của cha mẹ khi chăm sóc con ppt

Những sai lầm kinh điển của cha mẹ khi chăm sóc con ppt

... Những sai lầm kinh điển của cha mẹ khi chăm sóc con Có nhiều bậc phụ huynh phạm sai lầm trong việc chăm sóc con mà họ không hề hay biết. Có nhiều sai lầm trong việc chăm sóc con: lo ... hay biết. Có nhiều sai lầm trong việc chăm sóc con: lo lắng thái quá, bỏ qua việc chăm sóc răng miệng, sai lầm khi làm đẹp cho con Lo lắng thái quá Không tuần nào nhà chị Ngọc (Bạch Mai) không ... Một sự thật là không ai không thể phạm sai lầm trong việc chăm sóc con - đặc biệt là những người lần đầu tiên lên chức cha mẹ (Ảnh minh họa) Khi thấy con hơi ho hắng, ói mửa, nhiều bậc...
  • 6
  • 324
  • 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

... while,cáccâugọinhiềulần,vàcáchàmsql_result()trongvòngfor.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.PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ụng sai cáchàmvềCSDLDùng sai SQL:khônglấynhữngthứbạncầnDùngPHPđểsắpxếpkếtquả1.1.1.1.DDDDùùùùngngngng sai sai sai saiccccáááá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 ... Thídụsaumởtậptinvàintừngdòng:Thídụtrênsẽtạolỗi:Warning:Warning:Warning:Warning:SuppliedSuppliedSuppliedSuppliedargumentargumentargumentargumentisisisisnotnotnotnotaaaavalidvalidvalidvalidFile-HandleFile-HandleFile-HandleFile-HandleresourceresourceresourceresourceininininC:\Inetpub\wwwroot\tst.phpC:\Inetpub\wwwroot\tst.phpC:\Inetpub\wwwroot\tst.phpC:\Inetpub\wwwroot\tst.phpononononlinelinelineline4.4.4.4.<?printfprintfprintfprintf("%doccurrencesof%sfound.",count($truyvan),$search_term);?><?printprintprintprintcount($truyvan)."occurrencesof$search_termfound.";?><?$fp=@fopen('vanban.txt','r')ordie('Khongthemofilevanban.txt');while($line=@fgets("$fp", 102 4))//Loi{print$line;}@fclose("$fp")//Loiordie('Khongthedongvanban.txt');?>PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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';$price=calculate_mortgage_rate($money,$time,$period);print"Your$periodmonthcostis$price";?>PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ước khi bắ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ốốốốtttt khi khi khi khiccccóóóóđđđđiiiiềềềềuuuuđộđộđộđộĐểtôilàmsángtỏmộtviệc.TôikhôngphảiđangcốbiệnhộđểbạntừbỏhẳnHĐTtrongPHP.Đúngra,tôichỉđangcốcảnhbáobạnđừngnêndùngPHPnhưJavahayC++,nơimàHĐTcóthểdùngthoảimái.Hãycẩnthậnđánhgiálợivàhạitrước khi bạndùngmộttiếpcậnHĐTvớiPHP. 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ủaPHPtrongmộtsốtácvụđơngiản.Thídụ,nếubạnmuốnviếthoatoànbộmôtchuỗi,mộtlínhmớicủaPHPcóthểlàmnhưsau:<?php$URL="http://www.php.net";$fp=@fopen($URL,"r");if(!$fp){die("Cannotopenwebsite$URL!");}while($line=@fgets($fp, 102 4)){$data.=$line;}@fclose($fp)orwarn("Cannotclosewebsitehandle,$URL");$data=ereg_replace("[a-z]","[A-Z]",$data);print$data;?>Tuynhiên,sẽphíthờigian khi bạ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.PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ình khi dù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ệt khi bạnlàmviệcvớicácchuỗilớn.9.9.9.9.LLLLậậậậpppptrtrtrtrììììnhnhnhnhPHPPHPPHPPHPnhnhnhnhưưưưccccááááccccngngngngôôôônnnnngngngngữữữữkhkhkhkhááááccccNhiềungườibắtđầuPHPsau khi đã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ởiPHP.Khôngmaythay,vàicánhântrongsốhàykhôngchịubỏthờigianđểhọccáchlậptrìnhPHPtheocáchphùhợpvớiPHP.Thayvàođó,họthíchPHPhoạtđộngvớicácítkháiniệmmớicàngtốt Khi bạnlậptrìnhPHPnhư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"PHPlàmộtngônngữkhôngthựcsựtốiưuchocáchtiếpcận1dòng khi viế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ệệệệnhnhnhnhPHP)PHP)PHP)PHP)<?php$fp=@fopen('php://stdin','r');if(!$fp){die('CannotopenSTDIN');}while($line=@fgets($fp, 102 4)){list($name,$quote)=explode(':',$line);$quotes[$name]=$quote;}foreach($quotesas$name=>$quote){print"$name:";printimplode("",array_reverse(preg_split('//',$quote)));print"\n";}@fclose($fp);?>PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology23232323Dormitory204.B518:20PMApril7,2006KhKhKhKhôôôôngngngngddddùùùùngngngngccccáááácccchhhhààààmmmmssssẵẵẵẵnnnnccccóóóóNhiềulậptrìnhviênPHPcónềntảngCcóvẻkhôngnhậnrarằngPHPcungcấpnhiềuhàmsẵncógiúpthaythếcácđoạnmãdài.NếubạnđếnvớiPHPtừC,tôikhuyênbạnnênđọcquatàiliệutrước khi viếtmộtkhốilệnhđểxemPHPcósẵnhàmnàogiúpcuộcsốngcủabạndễdànghơnkhông.ĐổĐổĐổĐổiiiittttêêêênnnnccccáááácccchhhhààààmmmmPHPPHPPHPPHPđãđãđãđãccccóóóóTôiđãthấyngườitađổitêncáchàmđãcócủaPHPchỉđể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ứứứứccccPHPkhôngphảilàmộtngônngữHĐT,dùnócungcấpcáctínhnăngHĐT.BạncầnluônnhậnthứcrằngHĐTtrongPHPsẽ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ìnhPHP.VàinơitốtnhấtlàZend.combảngốccủabàiviếtnàylàởđóProfessionalPHPmộttrongnhữngsáchtoàndiệntốtnhấtvềPHP,tốtchocảlậptrìnhviênvàkhông-lậptrìnhviên.WebApplicationDevelopmentwithPHPMộtquyểnsáchtuyệtvờidạybạncảcáchpháttriểnweblẫnvàitínhnăngcaocấpcủaPHP.BaogồmcáctàiliệuchínhthứcvềZendAPI.ThePHPDeveloper'sCookbookMộtquyểnsáchthiênvềlờigiảiđápchocácvấnđềgặpphảitrongPHP(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. Khi thiế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ủaPHPmail()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ước khi chuyểnnóchomộtlờigọihệthống.ĐỪĐỪĐỪĐỪNGNGNGNGBAOBAOBAOBAOGIGIGIGIỜỜỜỜTINTINTINTINNGNGNGNGƯỜƯỜƯỜƯỜIIIIDDDDÙÙÙÙNGNGNGNGMMMMỘỘỘỘTTTTCCCCÁÁÁÁCHCHCHCHMMMMÙÙÙÙQUQUQUQUÁÁÁÁNGNGNGNG KHI KHI KHI KHIĐƯĐƯĐƯĐƯ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óPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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. Khi chấpnhậnthẻtíndụng.Mộtsốlậptrìnhviênchỉdùngnhữngthuậttoánđơngiảnmàcóthểdễdàngbịđánhlừa khi thựchiệnkiếmtrathẻtíndụng.Chỉchấpnhậnthẻcủacáccôngtylớnđểkiểmtratínhhợplệcủasốthẻtrước khi chấpnhậnthẻcủangườidùng.ĐỪĐỪĐỪĐỪNGNGNGNGBAOBAOBAOBAOGIGIGIGIỜỜỜỜTINTINTINTINTTTTƯỞƯỞƯỞƯỞNGNGNGNGMMMMỘỘỘỘTTTTTHUTHUTHUTHUẬẬẬẬTTTTTOTOTOTOÁÁÁÁNNNN1.1.1.1.BBBBảảảảoooommmmậậậậttttccccủủủủaaaallllờờờờiiiiggggọọọọiiiihhhhệệệệththththốốốốngngngngMỗi khi bạ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.PHPcungcấpmộthàmlàmđiềuđó:EscapeShellCmd()Bấtcứ khi nà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><?phpif($name){system(EscapeShellCmd("lookup$name"));print"nn";}?><formaction="<[color=blue]?phpprint$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đượctrongPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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àsauPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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: khi cắ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ất khi viế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ước khi saochép.Phântíchxemnólàmgì.Chỉ khi nà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ệnPHPtừcácnguồntincậynhưPEARhoặckhocáclớpcủaPHP(PHPClassesRepository).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ần khi tô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ẽ. Khi chúngtôinhậpchunglạiđểchạychươngtrìnhcuốicùng,mỗiphầncủađồánnhìnkháchẳnnhauPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ỗỗỗỗiiii khi khi khi khithithithithiếếếếttttkkkkếếếế3.3.3.3.KhKhKhKhôôôôngngngngquanquanquanquanttttââââmmmmđếđếđếđếnnnnngngngngườườườườiiiiddddùùùùngngngng khi khi khi khithithithithiếếếếttttkkkkếếếế2.2.2.2.KhKhKhKhôôôôngngngngtheotheotheotheossssááááttttkkkkếếếếhohohohoạạạạchchchchccccủủủủaaaađồđồđồđồáááánnnn1.1.1.1.PhPhPhPhííííththththờờờờiiiigiangiangiangianPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ụụụụngngngng sai sai sai saingngngngữữữữnghnghnghnghĩĩĩĩa?a?a?a?Ourexampleabovegeneratedanerrorstatement.ButPHPenablesyoutocustomizeyourscriptstofitauniquescenariooroutputrequirement.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ưngPHPchophé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ụng sai ngữnghĩa.Vậy,bạncầnbiếtnhữnghậuquảcóthểcó(possibleoutcomes)nếubạnquyếtđịnhhọcvềngữnghĩa.Ápdụng sai dẫ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:trongPHP,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ó.PHPcó7kiểucơbản:boolean,resource,integer,double,string,arrayvàobject.TTTTầầầầmmmmvvvvựựựực:c:c:c:trongPHP,mỗibiếncómộttầmvựcriêng.Tầmvựcbiếnquyđịnhbiếncóthểđượctruycậptừđâu,tồntạitrongthờigiannào.Hiểu sai kháiniệmcơbảnvề"tầmvực"dẫnđếnnhữnglỗi sai tinhtếvàcảnhữnglỗilớn.php.ini:php.ini:php.ini:php.ini: khi viếtmộtscriptchạyởnhiềumôitrườngkhácnhau,cầnbiếtrằngkhôngphảimọicấuhìnhPHPđềunhưnhau.Dođó,cầnthiếtnhữnglệnhkiểmtrađểđảmbảoscriptcủabạnchạytốttrongcấuhìnhPHPcủ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ỉnh sai lầm,hiểu sai ýnghĩavàlàmngườiđọcmệtmỏi.Nóichung,lậptrìnhghichú(inlinedocumentation)đượcmọingườikhẳngnhậnlàđiềutốt,nhưnghiếm khi nó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ụ:<?//BatdaumaPHP$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, 102 4)){print$line;}@fclose($fp)ordie(Khongthedongfilevanban.txt');?>PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology4444Dormitory204.B518:20PMApril7,2006//Inratuoicanhanprint"$idxyearsold\n<br>\n";}//KetthucmaPHP?>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ằng sai như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()* 100 0000);//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:PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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đúng khi bạ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ááááiiii Khi quyế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ácscriptPHPchủ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){PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology6666Dormitory204.B518:20PMApril7,2006LạicómộtsốngườicốgắngviếtlạicáchàmPHPthôngdụngthayvìđihọcvềhàmđótrongcáctàiliệuPHPcungcấ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ởiPHP.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ước khi hàmnguyênthuỷđượcgọi.1.1.1.1.TrTrTrTráááánhnhnhnhviviviviếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnHãyđươngđầuvớinó.Đôi khi thậtlàkhóđểtránhchuyệnnày.Trướctiên,mộtlậptrìnhviênkhôngthểtheokịpcáchàmcủaPHPngayđượ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ẫnPHP(PHPmanual)mỗi khi viế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ỗi khi địnhviếtmộthàmmởrộngchoPHP,tôiđọclướtquatàiliệuđểxemhàmđócóchưa.Tuynhiên,cầnchúýlà,dobảnchấtmãnguồnmởcủaPHP,bạncóthểtìmđượccáchàmdongườidùngđịnhnghĩatrước khi nóđượcthêmvàoPHP(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ớn khi cá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ààààmmmmAPIAPIAPIAPI Khi muố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.phpindex.phpindex.phpindex.php-phầnkháchreturnstrlen($str);}?>HTMLHTMLHTMLHTML<?phpinclude_once("site.lib");?><html><head><title><?phpprint_header();?></title></head><body><h1><?phpprint_header();?></h1><tableborder="0"cellpadding="0"cellspacing="0"><tr> ... Thídụsaumởtậptinvàintừngdòng:Thídụtrênsẽtạolỗi:Warning:Warning:Warning:Warning:SuppliedSuppliedSuppliedSuppliedargumentargumentargumentargumentisisisisnotnotnotnotaaaavalidvalidvalidvalidFile-HandleFile-HandleFile-HandleFile-HandleresourceresourceresourceresourceininininC:\Inetpub\wwwroot\tst.phpC:\Inetpub\wwwroot\tst.phpC:\Inetpub\wwwroot\tst.phpC:\Inetpub\wwwroot\tst.phpononononlinelinelineline4.4.4.4.<?printfprintfprintfprintf("%doccurrencesof%sfound.",count($truyvan),$search_term);?><?printprintprintprintcount($truyvan)."occurrencesof$search_termfound.";?><?$fp=@fopen('vanban.txt','r')ordie('Khongthemofilevanban.txt');while($line=@fgets("$fp", 102 4))//Loi{print$line;}@fclose("$fp")//Loiordie('Khongthedongvanban.txt');?>PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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';$price=calculate_mortgage_rate($money,$time,$period);print"Your$periodmonthcostis$price";?>PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ước khi bắ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ốốốốtttt khi khi khi khiccccóóóóđđđđiiiiềềềềuuuuđộđộđộđộĐểtôilàmsángtỏmộtviệc.TôikhôngphảiđangcốbiệnhộđểbạntừbỏhẳnHĐTtrongPHP.Đúngra,tôichỉđangcốcảnhbáobạnđừngnêndùngPHPnhưJavahayC++,nơimàHĐTcóthểdùngthoảimái.Hãycẩnthậnđánhgiálợivàhạitrước khi bạndùngmộttiếpcậnHĐTvớiPHP. 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ủaPHPtrongmộtsốtácvụđơngiản.Thídụ,nếubạnmuốnviếthoatoànbộmôtchuỗi,mộtlínhmớicủaPHPcóthểlàmnhưsau:<?php$URL="http://www.php.net";$fp=@fopen($URL,"r");if(!$fp){die("Cannotopenwebsite$URL!");}while($line=@fgets($fp, 102 4)){$data.=$line;}@fclose($fp)orwarn("Cannotclosewebsitehandle,$URL");$data=ereg_replace("[a-z]","[A-Z]",$data);print$data;?>Tuynhiên,sẽphíthờigian khi bạ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.PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ình khi dù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ệt khi bạnlàmviệcvớicácchuỗilớn.9.9.9.9.LLLLậậậậpppptrtrtrtrììììnhnhnhnhPHPPHPPHPPHPnhnhnhnhưưưưccccááááccccngngngngôôôônnnnngngngngữữữữkhkhkhkhááááccccNhiềungườibắtđầuPHPsau khi đã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ởiPHP.Khôngmaythay,vàicánhântrongsốhàykhôngchịubỏthờigianđểhọccáchlậptrìnhPHPtheocáchphùhợpvớiPHP.Thayvàođó,họthíchPHPhoạtđộngvớicácítkháiniệmmớicàngtốt Khi bạnlậptrìnhPHPnhư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"PHPlàmộtngônngữkhôngthựcsựtốiưuchocáchtiếpcận1dòng khi viế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ệệệệnhnhnhnhPHP)PHP)PHP)PHP)<?php$fp=@fopen('php://stdin','r');if(!$fp){die('CannotopenSTDIN');}while($line=@fgets($fp, 102 4)){list($name,$quote)=explode(':',$line);$quotes[$name]=$quote;}foreach($quotesas$name=>$quote){print"$name:";printimplode("",array_reverse(preg_split('//',$quote)));print"\n";}@fclose($fp);?>PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology23232323Dormitory204.B518:20PMApril7,2006KhKhKhKhôôôôngngngngddddùùùùngngngngccccáááácccchhhhààààmmmmssssẵẵẵẵnnnnccccóóóóNhiềulậptrìnhviênPHPcónềntảngCcóvẻkhôngnhậnrarằngPHPcungcấpnhiềuhàmsẵncógiúpthaythếcácđoạnmãdài.NếubạnđếnvớiPHPtừC,tôikhuyênbạnnênđọcquatàiliệutrước khi viếtmộtkhốilệnhđểxemPHPcósẵnhàmnàogiúpcuộcsốngcủabạndễdànghơnkhông.ĐổĐổĐổĐổiiiittttêêêênnnnccccáááácccchhhhààààmmmmPHPPHPPHPPHPđãđãđãđãccccóóóóTôiđãthấyngườitađổitêncáchàmđãcócủaPHPchỉđể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ứứứứccccPHPkhôngphảilàmộtngônngữHĐT,dùnócungcấpcáctínhnăngHĐT.BạncầnluônnhậnthứcrằngHĐTtrongPHPsẽ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ìnhPHP.VàinơitốtnhấtlàZend.combảngốccủabàiviếtnàylàởđóProfessionalPHPmộttrongnhữngsáchtoàndiệntốtnhấtvềPHP,tốtchocảlậptrìnhviênvàkhông-lậptrìnhviên.WebApplicationDevelopmentwithPHPMộtquyểnsáchtuyệtvờidạybạncảcáchpháttriểnweblẫnvàitínhnăngcaocấpcủaPHP.BaogồmcáctàiliệuchínhthứcvềZendAPI.ThePHPDeveloper'sCookbookMộtquyểnsáchthiênvềlờigiảiđápchocácvấnđềgặpphảitrongPHP(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. Khi thiế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ủaPHPmail()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ước khi chuyểnnóchomộtlờigọihệthống.ĐỪĐỪĐỪĐỪNGNGNGNGBAOBAOBAOBAOGIGIGIGIỜỜỜỜTINTINTINTINNGNGNGNGƯỜƯỜƯỜƯỜIIIIDDDDÙÙÙÙNGNGNGNGMMMMỘỘỘỘTTTTCCCCÁÁÁÁCHCHCHCHMMMMÙÙÙÙQUQUQUQUÁÁÁÁNGNGNGNG KHI KHI KHI KHIĐƯĐƯĐƯĐƯ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óPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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. Khi chấpnhậnthẻtíndụng.Mộtsốlậptrìnhviênchỉdùngnhữngthuậttoánđơngiảnmàcóthểdễdàngbịđánhlừa khi thựchiệnkiếmtrathẻtíndụng.Chỉchấpnhậnthẻcủacáccôngtylớnđểkiểmtratínhhợplệcủasốthẻtrước khi chấpnhậnthẻcủangườidùng.ĐỪĐỪĐỪĐỪNGNGNGNGBAOBAOBAOBAOGIGIGIGIỜỜỜỜTINTINTINTINTTTTƯỞƯỞƯỞƯỞNGNGNGNGMMMMỘỘỘỘTTTTTHUTHUTHUTHUẬẬẬẬTTTTTOTOTOTOÁÁÁÁNNNN1.1.1.1.BBBBảảảảoooommmmậậậậttttccccủủủủaaaallllờờờờiiiiggggọọọọiiiihhhhệệệệththththốốốốngngngngMỗi khi bạ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.PHPcungcấpmộthàmlàmđiềuđó:EscapeShellCmd()Bấtcứ khi nà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><?phpif($name){system(EscapeShellCmd("lookup$name"));print"nn";}?><formaction="<[color=blue]?phpprint$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đượctrongPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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àsauPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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: khi cắ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ất khi viế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ước khi saochép.Phântíchxemnólàmgì.Chỉ khi nà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ệnPHPtừcácnguồntincậynhưPEARhoặckhocáclớpcủaPHP(PHPClassesRepository).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ần khi tô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ẽ. Khi chúngtôinhậpchunglạiđểchạychươngtrìnhcuốicùng,mỗiphầncủađồánnhìnkháchẳnnhauPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ỗỗỗỗiiii khi khi khi khithithithithiếếếếttttkkkkếếếế3.3.3.3.KhKhKhKhôôôôngngngngquanquanquanquanttttââââmmmmđếđếđếđếnnnnngngngngườườườườiiiiddddùùùùngngngng khi khi khi khithithithithiếếếếttttkkkkếếếế2.2.2.2.KhKhKhKhôôôôngngngngtheotheotheotheossssááááttttkkkkếếếếhohohohoạạạạchchchchccccủủủủaaaađồđồđồđồáááánnnn1.1.1.1.PhPhPhPhííííththththờờờờiiiigiangiangiangianPHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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ụụụụngngngng sai sai sai saingngngngữữữữnghnghnghnghĩĩĩĩa?a?a?a?Ourexampleabovegeneratedanerrorstatement.ButPHPenablesyoutocustomizeyourscriptstofitauniquescenariooroutputrequirement.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ưngPHPchophé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ụng sai ngữnghĩa.Vậy,bạncầnbiếtnhữnghậuquảcóthểcó(possibleoutcomes)nếubạnquyếtđịnhhọcvềngữnghĩa.Ápdụng sai dẫ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:trongPHP,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ó.PHPcó7kiểucơbản:boolean,resource,integer,double,string,arrayvàobject.TTTTầầầầmmmmvvvvựựựực:c:c:c:trongPHP,mỗibiếncómộttầmvựcriêng.Tầmvựcbiếnquyđịnhbiếncóthểđượctruycậptừđâu,tồntạitrongthờigiannào.Hiểu sai kháiniệmcơbảnvề"tầmvực"dẫnđếnnhữnglỗi sai tinhtếvàcảnhữnglỗilớn.php.ini:php.ini:php.ini:php.ini: khi viếtmộtscriptchạyởnhiềumôitrườngkhácnhau,cầnbiếtrằngkhôngphảimọicấuhìnhPHPđềunhưnhau.Dođó,cầnthiếtnhữnglệnhkiểmtrađểđảmbảoscriptcủabạnchạytốttrongcấuhìnhPHPcủ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ỉnh sai lầm,hiểu sai ýnghĩavàlàmngườiđọcmệtmỏi.Nóichung,lậptrìnhghichú(inlinedocumentation)đượcmọingườikhẳngnhậnlàđiềutốt,nhưnghiếm khi nó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ụ:<?//BatdaumaPHP$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, 102 4)){print$line;}@fclose($fp)ordie(Khongthedongfilevanban.txt');?>PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology4444Dormitory204.B518:20PMApril7,2006//Inratuoicanhanprint"$idxyearsold\n<br>\n";}//KetthucmaPHP?>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ằng sai như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()* 100 0000);//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:PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–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đúng khi bạ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ááááiiii Khi quyế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ácscriptPHPchủ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){PHPprogrammingdynamicwebforewreybody21FatalerrorsinprogrammingwithPHP–CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology6666Dormitory204.B518:20PMApril7,2006LạicómộtsốngườicốgắngviếtlạicáchàmPHPthôngdụngthayvìđihọcvềhàmđótrongcáctàiliệuPHPcungcấ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ởiPHP.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ước khi hàmnguyênthuỷđượcgọi.1.1.1.1.TrTrTrTráááánhnhnhnhviviviviếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnHãyđươngđầuvớinó.Đôi khi thậtlàkhóđểtránhchuyệnnày.Trướctiên,mộtlậptrìnhviênkhôngthểtheokịpcáchàmcủaPHPngayđượ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ẫnPHP(PHPmanual)mỗi khi viế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ỗi khi địnhviếtmộthàmmởrộngchoPHP,tôiđọclướtquatàiliệuđểxemhàmđócóchưa.Tuynhiên,cầnchúýlà,dobảnchấtmãnguồnmởcủaPHP,bạncóthểtìmđượccáchàmdongườidùngđịnhnghĩatrước khi nóđượcthêmvàoPHP(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ớn khi cá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ààààmmmmAPIAPIAPIAPI Khi muố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.phpindex.phpindex.phpindex.php-phầnkháchreturnstrlen($str);}?>HTMLHTMLHTMLHTML<?phpinclude_once("site.lib");?><html><head><title><?phpprint_header();?></title></head><body><h1><?phpprint_header();?></h1><tableborder="0"cellpadding="0"cellspacing="0"><tr>...
  • 27
  • 328
  • 0
Tài liệu 7 sai lầm chết người trong đầu tư ppt

Tài liệu 7 sai lầm chết người trong đầu tư ppt

... 17 năm sau khi lọt vào tâm điểm chú ý của giới đầu tư, Elaine Garzarelli vẫn duy trì được sự nổi tiếng của mình, thậm chí ngay cả khi quỹ tương hỗ của bà đã ngừng hoạt động, bản tin của bà không ... cần xét xem chúng sai ở điểm nào. Sai lầm thứ nhất: Tin rằng việc dự đoán động thái kế tiếp của thị trường chắc chắn sẽ mang về những khoản lợi nhuận khổng lồ. Sai lầm thứ năm: Tin rằng ... 7 sai lầm chết người trong đầu tư Hầu hết các nhà đầu tư đều phải lãnh hậu quả do đặt niềm tin sai lầm vào con đường dẫn đến những thương vụ thành công. Có 7 sai lầm thường gặp...
  • 13
  • 517
  • 0
Tài liệu 5 sai lầm chết người trong bán lẻ docx

Tài liệu 5 sai lầm chết người trong bán lẻ docx

... lầm mà rất nhiều nhà bán lẻ mắc phải, khi n họ đối mặt với thất bại. Khi mà danh sách những sai lầm bán lẻ là rất dài, Ronald Bond đã đúc kết được 5 sai lầm lớn nhất và có tác động tiêu cực ... 5 sai lầm chết người trong bán lẻ Trong một môi trường kinh doanh thay đổi và phát triển từng ngày như hiện nay, các sai lầm có thể "chết người". ... thảm, nội thất. 3/ Thất bại trong thay đổi thích ứng với thị trường Sai lầm này phần nào khá liên quan tới sai lầm số 2 ở trên, nhưng nó tập trung nhiều hơn vào phương thức bán hàng và...
  • 6
  • 433
  • 0

Xem thêm

Từ khóa: 10 sai lầm chết người trong marketing10 sai lầm chết người trong tiếp thị10 sai lầm chết người trong tiếp thị ebook10 sai lầm thường gặp của phụ nữ khi yêu10 sai lầm lớn nhất của người lãnh đạotài liệu 10 nghệ thuật dùng người chìa khoá của thành công5 sai lầm chết người trong đầu tư chứng khoán10 sai lầm thường gặp của các nhà đầu tư10 sai lầm lớn nhất của nhà lãnh đạomười sai lầm chết người trong tiếp thị5 sai lầm chết người trong bán lẻmười sai lầm chết người trong tiếp thị ebooksai lầm thường gặp của cha mẹ khi con homột số sai lầm thường gặp của học sinh khi học chủ đề đại số tổ hợpmột số sai lầm thường gặp của học sinh khi giải toán đại số 9 và biện pháp khắc phụcNghiên cứu sự biến đổi một số cytokin ở bệnh nhân xơ cứng bì hệ thốngchuyên đề điện xoay chiều theo dạngNghiên cứu tổ hợp chất chỉ điểm sinh học vWF, VCAM 1, MCP 1, d dimer trong chẩn đoán và tiên lượng nhồi máu não cấpđề thi thử THPTQG 2019 toán THPT chuyên thái bình lần 2 có lời giảiGiáo án Sinh học 11 bài 13: Thực hành phát hiện diệp lục và carôtenôitĐỒ ÁN NGHIÊN CỨU CÔNG NGHỆ KẾT NỐI VÔ TUYẾN CỰ LY XA, CÔNG SUẤT THẤP LPWANPhối hợp giữa phòng văn hóa và thông tin với phòng giáo dục và đào tạo trong việc tuyên truyền, giáo dục, vận động xây dựng nông thôn mới huyện thanh thủy, tỉnh phú thọPhát triển du lịch bền vững trên cơ sở bảo vệ môi trường tự nhiên vịnh hạ longPhát hiện xâm nhập dựa trên thuật toán k meansNghiên cứu, xây dựng phần mềm smartscan và ứng dụng trong bảo vệ mạng máy tính chuyên dùngNghiên cứu về mô hình thống kê học sâu và ứng dụng trong nhận dạng chữ viết tay hạn chếNghiên cứu tổng hợp các oxit hỗn hợp kích thƣớc nanomet ce 0 75 zr0 25o2 , ce 0 5 zr0 5o2 và khảo sát hoạt tính quang xúc tác của chúngNghiên cứu khả năng đo năng lượng điện bằng hệ thu thập dữ liệu 16 kênh DEWE 5000Thiết kế và chế tạo mô hình biến tần (inverter) cho máy điều hòa không khíSở hữu ruộng đất và kinh tế nông nghiệp châu ôn (lạng sơn) nửa đầu thế kỷ XIXBT Tieng anh 6 UNIT 2chuong 1 tong quan quan tri rui roGiáo án Sinh học 11 bài 14: Thực hành phát hiện hô hấp ở thực vậtBÀI HOÀN CHỈNH TỔNG QUAN VỀ MẠNG XÃ HỘIQUẢN LÝ VÀ TÁI CHẾ NHỰA Ở HOA KỲ