0

lập trình website php

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

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

Chứng chỉ quốc tế

... nhiều biến sẵn có của PHP và Server. Bạn có thể liệt kê một danh sách đầy đủ bằng cách sử dụng lệnh phpinfo() để xem. Bạn hãy tạo một file php và cho chạy thử xem: < ?php phpinfo(); ?> ... < ?php } ?> Bạn hãy xem kỹ ví dụ trên, nếu như người truy cập nhập đủ thông tin và nhấn nút OK từ trang sign .php (chứa toàn mã lệnh html), thì nó chuyển sang trang mypage .php và ... thích hàm get_browser() của PHP. Về lý thuyết mà nói, hàm này định nghóa khả năng cho phép của trình duyệt của user đang sử dụng. Cho nên bạn có thể biết được là chương trình của bạn đang phục...
  • 44
  • 2,003
  • 9
21 sai lam chet nguoi trong lap trinh voi PHP

21 sai lam chet nguoi trong lap trinh voi PHP

Ngữ pháp tiếng Anh

... 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. PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology22222222Dormitory204.B518:20PMApril7,20061.1.1.1.CCCCáááácccchhhhààààmmmmccccầầầầnnnnbibibibiếếếếttttCóvàihàmrấtthiếtyếuđểtiếtkiệmthờigianthihànhchươngtrìnhkhidùngthaychobiểuthứcchínhquy.Dướiđâylàdanhsáchcáchàmthiếtyếuđó:strtoupper();strtolower();ucfirst();strtr();str_replace();trim();explode();implode();substr();strcmp()Nếubạnthaythếcácbiểuthứcchínhquycủabạnbằngcáchàmtrên,bạncóthểtrôngđợimộtsựnhảyvọtvềhiệunăng,đặcbiệtkhibạnlàmviệcvớicácchuỗilớn.9.9.9.9.LLLLậậậậpppptrtrtrtrììììnhnhnhnh PHP PHP PHP PHPnhnhnhnhưưưưccccááááccccngngngngôôôônnnnngngngngữữữữkhkhkhkhááááccccNhiềungườibắtđầu PHP saukhiđãthuầnthụcmộtngônngữkhácnhưPerl,C,JavahayASP.Làmnhưvậy,họcũngmangtheonhữngmôhìnhmàcóthểkhôngluônluônđượcdùngbởi PHP. Khôngmaythay,vàicánhântrongsốhàykhôngchịubỏthờigianđểhọccáchlậptrình PHP theocáchphùhợpvới PHP. Thayvàođó,họthích PHP hoạtđộngvớicácítkháiniệmmớicàngtốtKhibạnlậptrình PHP nhưlàtrongcácngônngữkhác,nóthườngdẫnđếnviệclàmchươngtrìnhchậmhơnvàkhóbảotrìmã.Bạnsẽthườngthấyhọphạmvàomộttrongcáclỗisau:PerlPerlPerlPerl"1"1"1"1ddddòòòòng"ng"ng"ng" PHP làmộtngônngữkhôngthựcsựtốiưuchocáchtiếpcận1dòngkhiviếtchươngtrình.Thayvàođó,nómởrộngcáctậphàmphứctạpvàcácbiểuthứcchínhquytheomộtđịnhdạngcócấpbậchơnMMMMããããllllệệệệnhnhnhnhPerlPerlPerlPerlwhile(<STDIN>){@_=split/:/;$quotes{shift}=shift;}printmap{"$_:",reversesplit//,$quotes->{$_},"\n";}keys%quotes;MMMMããããllllệệệệnhnhnhnh PHP) PHP) PHP) PHP) < ?php $fp=@fopen(&apos ;php: //stdin','r');if(!$fp){die('CannotopenSTDIN');}while($line=@fgets($fp,1024)){list($name,$quote)=explode(':',$line);$quotes[$name]=$quote;}foreach($quotesas$name=>$quote){print"$name:";printimplode("",array_reverse(preg_split('//',$quote)));print"\n";}@fclose($fp);?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology5555Dormitory204.B518:20PMApril7,2006Tạisaophảidùngbiếntrunggian?NókhôngcầnthiếtRủithay,cóvẻnhưrấtnhiềungườikhóbỏđượcthóiquenxấunày.Biếntạmlàmchậmthờigianthihànhchươngtìnhcủabạn.Tốthơnlànênbỏquađóvàgộpcáclờigọihàmvớinhau.Nhữngngườidùngbiếntạmthườnglàmchươngcủahọchạychậmđến25%.Mộtlídokhácđểtránhcóquánhiềubiếntạmlàvìtrôngnókhôngđượcđẹpmắt.Tronghaithídụtrên,thídụnàosúctíchhơn?Thídụnàolàmconmắtdễchịuhơn?Dùngquánhiềubiếntạmcóthểdẫnđếnmãchươngtrìnhkhóđọcvàkhôngsúctích.1.1.1.1.LLLLợợợợiiiiđđđđiiiiểểểểmmmmccccủủủủaaaaddddùùùùngngngngbibibibiếếếếnnnnttttạạạạmmmmCácbiếntạmcólợitrongviệcthaythếcáchàmhaybiểuthứcdàilêthê.Nócóvaitrònhưbídanhgiả.Điềunàyđặcbiệtđúngkhibạndùngmộthàmhaybiểuthứcnhiềulần.Xemxétthídụđây,nókhôngdùngnhiềubiếnhơnmứctốithiểuNộidungtronghàmimplode()dàivàdođókhóđọc.Dùngmộthoặcnhiềubiếntạmcóthểgiúpchúngta:2.2.2.2.CCCCáááácccclulululuậậậậttttchungchungchungchungccccủủủủaaaangngngngóóóónnnntaytaytaytayccccááááiiiiKhiquyếtđịnhcódùngbiếntạmhoặckhông,bạnnênsuynghĩvề2câuhỏi:Bạncódùngbiếnđóítnhấthailần?Tínhđọcđượccủamãcótăngđángkểkhông?Nếuítnhấtmộtcâutrảlờilàcó,thìnêndùngbiếntạm.Cònkhông,vứtnóđivàtổhợpcáchàmlại(nếucần).17.17.17.17.ViViViViếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnMộtsốnơiphổbiếnmãnguồncácscript PHP chủtrươngđổitêncáchàmsẵncóđểtạosựdễdàngchocáclậptrìnhviênchuyểntừVBsang.Thídụ:<?$tmp=date("Fd,h:ia");/*ieJanuary3,2:30pm*/print$tmp;?><?printdate("Fd,h:ia");?>//stringreverse_characters(stringstr)//Reverseallofthecharactersinastring.functionreverse_characters($str){returnimplode("",array_reverse(preg_split("//",$str)));}//stringreverse_characters(stringstr)//Reverseallofthecharactersinastring.functionreverse_characters($str){$characters=preg_split("//",$str);$characters=array_reverse($characters);returnimplode("",$characters);}<?functionlen($str){ PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology3333Dormitory204.B518:20PMApril7,2006Đólàdobiến$fpđặttrongdấunháyképnênđượcchuyểnthànhchuỗi.Thếmàhàmfopen()nhậnmộtđịnhdanhtàinguyên(resourceidentifier)trongthamsốđầucủanó,chứkhôngnhậnmộtchuỗi.Đểgiảiquyếtvấnđề,bạnchỉđơngiảnbỏdấunháyképđi1.1.1.1.CCCCóóóóththththểểểểtrtrtrtráááánhnhnhnhviviviviệệệệccccááááppppddddụụụụngngngngsaisaisaisaingngngngữữữữnghnghnghnghĩĩĩĩa?a?a?a?Ourexampleabovegeneratedanerrorstatement.But PHP enablesyoutocustomizeyourscriptstofitauniquescenariooroutputrequirement.So,itisatleasttheoreticallypossibleto"getaway"withmisapplyingasemantic.Tôikhônghiểu,nhưngdịchthếnàyđượckhông?Thídụtrêncủachúngtatạoramộtthôngbáolỗi.Nhưng PHP chophépbạntuỳbiếncácscriptđểthíchhợpvớimộtkịchbảnkhácthườnghoặcvớicácđòihỏicủathôngtinra.Dođó,ítnhấttrênlíthuyết,bạncókhảnăngtránhviệcápdụngsaingữnghĩa.Vậy,bạncầnbiếtnhữnghậuquảcóthểcó(possibleoutcomes)nếubạnquyếtđịnhhọcvềngữnghĩa.Ápdụngsaidẫnđếnnhữnglỗikhátinhvinếubạnkhôngchúý.Nếubạnmuốntuỳbiếnscript,bạncầnhiểunhữngchủđềchínhsau:KiKiKiKiểểểểu:u:u:u:trong PHP, mỗibiếncómộtkiểuxácđịnhởmộtthờiđiểmxácđịnh,chodùbạncóthểtựdochuyểnđổikiểumộtbiến.Nóimộtcáchkhác,khôngcóbiếnnàolạikhôngkèmtheotínhchấtcủakiểucủanó. PHP có7kiểucơbản:boolean,resource,integer,double,string,arrayvàobject.TTTTầầầầmmmmvvvvựựựực:c:c:c:trong PHP, mỗibiếncómộttầmvựcriêng.Tầmvựcbiếnquyđịnhbiếncóthểđượctruycậptừđâu,tồntạitrongthờigiannào.Hiểusaikháiniệmcơbảnvề"tầmvực"dẫnđếnnhữnglỗisaitinhtếvàcảnhữnglỗilớn. php. ini: php. ini: php. ini: php. ini:khiviếtmộtscriptchạyởnhiềumôitrườngkhácnhau,cầnbiếtrằngkhôngphảimọicấuhình PHP đềunhưnhau.Dođó,cầnthiếtnhữnglệnhkiểmtrađểđảmbảoscriptcủabạnchạytốttrongcấuhình PHP củangườikhác.19.19.19.19.ThiThiThiThiếếếếuuuughighighighichchchchúúúúTheoýtôi,mãnguồnthiếughichúlàcănnguyêncủasựlậptrìnhíchkỉ.Nódẫntớinhữnghiệuchỉnhsailầm,hiểusaiýnghĩavàlàmngườiđọcmệtmỏi.Nóichung,lậptrìnhghichú(inlinedocumentation)đượcmọingườikhẳngnhậnlàđiềutốt,nhưnghiếmkhinótồntại.Mộtvấnđềkháclàquánhiềughichú.Dùhiếmgặp,nhưngnólàmchocácđoạnmãbịcắtvụn,gâyrasựkhótheodõi.Dướiđâylàmộtthídụ:<?//Batdauma PHP $age=18;//Gan18den$age$age++;//Tang$agelen1donvi//INradoantextthongbao:print"Youarenow19,whichmeansyouhavebeen:";print"\n<br>\n<br>\n";//Vonglapforinratatcatuoitruocdofor($idx=0;$idx<$age;$idx++){<?$fp=@fopen('vanban.txt','r')ordie(‘Khongthemofiletailieuphp.txt');while($line=@fgets($fp,1024)){print$line;}@fclose($fp)ordie(Khongthedongfilevanban.txt');?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–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 programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology13131313Dormitory204.B518:20PMApril7,2006Tạisaovòngdo ... 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 .php C:\Inetpub\wwwroot\tst .php C:\Inetpub\wwwroot\tst .php C:\Inetpub\wwwroot\tst .php ononononlinelinelineline4.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",1024))//Loi{print$line;}@fclose("$fp")//Loiordie('Khongthedongvanban.txt');?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology15151515Dormitory204.B518:20PMApril7,2006Nhưlàvấnđềcủathựchành,đơngiảnlàsẽsailầmkhidùng PHP xửlímọidòngcủaCSDL.Tôiđãbắtgặpngườitadùng PHP đểchạymộtchươngtrìnhtìmkiếmđơngiảntrên2MBdữliệuvàtựhỏitạisaocáingônngữnàychạylâuthế.Lấy2MBdữliệutừCSDLcóthểlàmbạnchờmãimãi.Ngônngữtruyvấnchuẩn(StandardStandardStandardStandardQueryQueryQueryQueryLanguageLanguageLanguageLanguage----SQLSQLSQLSQL)đượcthiếtkếđặcbiệtđểtruyvấnvàlấydữliệutừcácbảngcủabạn.Ýtưởnglàdùngnóđểlọcdữliệukhôngcầnthiết,đểlạicácthôngtinliênquancho PHP xửlí.Nếubạnlấynhiềudữliệuhơncầnthiết,đólàdấuhiệuchắcchắnrằngmãSQLđangdùngchưađượctốiưuhoá.2.1.2.1.2.1.2.1.MMMMệệệệnhnhnhnhđềđềđềđềWHEREWHEREWHEREWHEREMộtthídụkinhđiểnvềsựhiểuquảcủaSQLliênquanđếnmệnhđềwhere.ĐoạnmãsausẽlấycáckếtquảvàinratênvàmãsinhviêncủasinhviêncóMASV='511203008':< ?php include(“includes/taptinketnoi.inc”);$strsql="SELECTMASV,HOTENFROMSINHVIEN";$truyvan=@sql_query($strsql,$ketnoi);if(!$truyvan){die(sprintf("LOI:[%d]:%s",sql_errno(),sql_error()));}if(@sql_num_rows($truyvan)<=0){die("KhongketquatimduoctuCSDL!");}while($mautin=@sql_fetch_array($truyvan)){if($mautin[MASV]==“511203008”){print"MASV:$mautin[MASV]\n<br>\n";print"Hoten:$mautin[HOTEN]\n<br>\n";break;}}?>Đoạnmãtrênchưađượctốiưu:chúngtađangdùng PHP đểtìmkiếmtrongtoànbộCSDL!NếunhưđiềunàykhôngquantrọngđốivớicácCSDLnhỏ,khikíchthướcCSDLtănglênbạnsẽcảmthấymộtcúđấmnặngnềvềhiệunăng.Lờigiảirấtđơngiản:sửacâuSQLđểchứamệnhđềWHERE:$strsql="SELECT*FROMSINHVIEN";$strsql.="WHEREMASV='511203008'"; PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–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) <?/*ThethreefacesofΠ*/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 programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology6666Dormitory204.B518:20PMApril7,2006Lạicómộtsốngườicốgắngviếtlạicáchàm PHP thôngdụngthayvìđihọcvềhàmđótrongcáctàiliệu PHP cungcấp.Cóítnhất2lídođểkhôngnênlàmđiềunày.Thứnhất,vàtrênnhất,nólàmchonhữngngườiđọc(vàsửa)chươngtrìnhcủabạnkhóhiểuvàcảmthấycóquánhiềuhàmdưthừa.Họtựhỏitạisaobạnlạiđiđịnhnghĩahàmtheokiểuđó,thayvìsửdụngcáchàmđịnhnghĩasẵnbởi PHP. Thứhai,địnhnghĩahàmnhưvậycũngsẽlàmchậmchươngtrìnhcủabạn(mộtcáchkhôngcầnthiết).Khôngchỉphảixửlínhiềumãhơn,màmỗilầngọihàmdobạnđịnhnghĩa,bạnđãtốnthờigianchochínhhàmđó,trướckhihàmnguyênthuỷđượcgọi.1.1.1.1.TrTrTrTráááánhnhnhnhviviviviếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnHãyđươngđầuvớinó.Đôikhithậtlàkhóđểtránhchuyệnnày.Trướctiên,mộtlậptrìnhviênkhôngthểtheokịpcáchàmcủa PHP ngayđược.Vàaicóthờigianmàtracứu.Tạisaokhôngviếtlạichokhoẻ?Cáchlàmcủatôilàluôncósẵnmộttàiliệuchỉdẫn PHP ( PHP manual)mỗikhiviếtchươngtrình(tácgiảbàinàydùngmộtbảnPDFcótạochỉmục,riêngtôi,ngườidịch,thìdùngmộttàiliệuCHMđầyđủthôngtinvàcócảgópýcủangườisửdụngmàbạncóthểlấyởhttp://www .php. net/docs .php) .Sauđó,mỗikhiđịnhviếtmộthàmmởrộngcho PHP, tôiđọclướtquatàiliệuđểxemhàmđócóchưa.Tuynhiên,cầnchúýlà,dobảnchấtmãnguồnmởcủa PHP, bạncóthểtìmđượccáchàmdongườidùngđịnhnghĩatrướckhinóđượcthêmvào PHP (thídụnhưhàmtìmphầntửkhácnhaugiữahaimảng).Điềunàykhôngcónghĩalàbạnphảihiệuchỉnhlạimã(Thisdoesn'tnecessarilymeanthatyoushouldhavetocorrectthecode.-don'tunderstand)16.16.16.16.KhKhKhKhôôôôngngngngttttááááchchchchbibibibiệệệệttttphphphphầầầầnnnnserverserverserverservervvvvààààclientclientclientclientVàilậptrìnhviêncốkếtnốicảchươngtrìnhvớinhau,nghĩalàghépchungmãHTML(client-side-phầnkhách)vớimã PHP (server-side-phầnchủ)vàotrongmộttậptinlớn.Mặcdùđiềunàytốtchocácsitenhỏ,nhưngnócóthểtrởthànhvấnđềlớnkhicácsiteđótrởnênlớnhơnvàđượcbổsungthêmtínhnăng.Lậptrìnhtheocáchnàylàmnảysinhvấnđềkhóbảotrìvàcáctậptintrởnêncồngkềnh.1.1.1.1.HHHHààààmmmmAPIAPIAPIAPIKhimuốntáchbiệtphầnkhách-chủ,bạncóvàilựachọn.Mộtcáchlàviếtnhữnghàmhiểnthịnộidunglinhđộngvàđặtchúngđúngchỗtrongtrangweb.Thídụdướiđâyminhhoạđiềunày:index .php index .php index .php index .php -phầnkháchreturnstrlen($str);}?>HTMLHTMLHTMLHTML< ?php include_once("site.lib");?><html><head><title>< ?php print_header();?></title></head><body><h1>< ?php print_header();?></h1><tableborder="0"cellpadding="0"cellspacing="0"><tr> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology23232323Dormitory204.B518:20PMApril7,2006KhKhKhKhôôôôngngngngddddùùùùngngngngccccáááácccchhhhààààmmmmssssẵẵẵẵnnnnccccóóóóNhiềulậptrìnhviên PHP cónềntảngCcóvẻkhôngnhậnrarằng PHP cungcấpnhiềuhàmsẵncógiúpthaythếcácđoạnmãdài.Nếubạnđếnvới PHP từC,tôikhuyênbạnnênđọcquatàiliệutrướckhiviếtmộtkhốilệnhđểxem PHP cósẵnhàmnàogiúpcuộcsốngcủabạndễdànghơnkhông.ĐổĐổĐổĐổiiiittttêêêênnnnccccáááácccchhhhààààmmmm PHP PHP PHP PHPđãđãđãđãccccóóóóTôiđãthấyngườitađổitêncáchàmđãcócủa PHP chỉđểgiúphọdễnhớhơn.Điềunàykhôngchỉlàmchậmchươngtrình,màlàmchođoạnmãkhóđọchơn.DDDDùùùùngngngnghhhhướướướướngngngngđốđốđốđốiiiittttượượượượngngngngququququáááámmmmứứứứcccc PHP khôngphảilàmộtngônngữHĐT,dùnócungcấpcáctínhnăngHĐT.BạncầnluônnhậnthứcrằngHĐTtrong PHP sẽlàmchậmđángkểchươngtrình.1.1.1.1.LLLLấấấấyyyyththththôôôôngngngngtintintintinởởởởđâđâđâđâu?u?u?u?Maymắnlàcórấtnhiềuthôngtinvềviệclàmthếnàođểlậptrình PHP. VàinơitốtnhấtlàZend.combảngốccủabàiviếtnàylàởđóProfessional PHP mộttrongnhữngsáchtoàndiệntốtnhấtvề PHP, tốtchocảlậptrìnhviênvàkhông-lậptrìnhviên.WebApplicationDevelopmentwith PHP Mộtquyểnsáchtuyệtvờidạybạncảcáchpháttriểnweblẫnvàitínhnăngcaocấpcủa PHP. BaogồmcáctàiliệuchínhthứcvềZendAPI.The PHP Developer'sCookbookMộtquyểnsáchthiênvềlờigiảiđápchocácvấnđềgặpphảitrong PHP (dotui-SterlingHughes-viếtcùngAndreiZmievski)8.8.8.8.KhKhKhKhôôôôngngngngnhnhnhnhậậậậnnnnththththứứứứccccđầđầđầđầyyyyđủđủđủđủvvvvềềềềbbbbảảảảoooommmmậậậậttttNhữngngườidùngkhôngphảilúcnàocũnglàmviệcvớihệthốngcủachúngta.Vớitưcáchlàlậptrìnhviên,tráchnhiệmcủachúngtalàthiếtkếmộthệthốngantoàn,dễchịucóthểlàmviệcđượcchungvớilỗicủangườidùng.Khithiếtkếhệthống,bạnphảiđặtmìnhvàovịtríngườidùng.Xemxétnhữngchỗhọcóthểgặplỗivàtìmkiếmnhữnglỗhổngbảomậttiềmtàng.Rồibạnthiếtkếchươngtrìnhcókhảnăngsửachữalỗinàyvàlấpcáclỗhổngbảomật.Mộtđiềukháccũngquantrọnglà:dùxảyrahưhỏnghayhệthốngbịtấncônglàdolỗicủangườidùng,chínhbạnlàngườichịutráchnhiệmnếubạnđãviếtchươngtrìnhcónhiềulỗihaythiếunhữngbướckiểmtracầnthiếtdẫnđếnhỏngdữliệu.Thídụ,tôiđãthấynhiềuchươngtrìnhkhôngdùnghàmđãcócủa PHP mail()vốnantoànmàlạiđidùngsendmailthôngquapopen().Nócóthểdẫnđếnnhiềulỗhổngbảomật(thídụnhư/etc/passwdđượcgửiđếnngườidùngcuối).Cóvàinơithườngxảyracácsựcốvềbảomật,hoặctiềmnănggâyrahỏngdữliệurấtlớn:Thựchiệnlờigọihệthống.Tôikhôngcócáchnàodiễntảđượcmứcđộnguyhiểmcủavấnđềnày.Luônđảmbảorằngmọidữliệungườidùngđưavàolàantoàntrướckhichuyểnnóchomộtlờigọihệthống.ĐỪĐỪĐỪĐỪNGNGNGNGBAOBAOBAOBAOGIGIGIGIỜỜỜỜTINTINTINTINNGNGNGNGƯỜƯỜƯỜƯỜIIIIDDDDÙÙÙÙNGNGNGNGMMMMỘỘỘỘTTTTCCCCÁÁÁÁCHCHCHCHMMMMÙÙÙÙQUQUQUQUÁÁÁÁNGNGNGNGKHIKHIKHIKHIĐƯĐƯĐƯĐƯAAAADDDDỮỮỮỮLILILILIỆỆỆỆUUUUCCCCỦỦỦỦAAAAHHHHỌỌỌỌVVVVÀÀÀÀOOOOLLLLỜỜỜỜIIIIGGGGỌỌỌỌIIIIHHHHỆỆỆỆTHTHTHTHỐỐỐỐNGNGNGNGMMMMÀÀÀÀKHKHKHKHÔÔÔÔNGNGNGNGKIKIKIKIỂỂỂỂMMMMTRATRATRATRATRTRTRTRƯỚƯỚƯỚƯỚCCCC.Khiđăngkíngườidùng.Nếubạntrôngmongcókếtquảchínhxác,luônkiểmtravàđảmbảobảnđăngkíđượckiểmtranhữngchỗcầnthiết.Trướctiên,cónhiềucáchđểkiểmtramộtđịachỉe-mailhợplệ.Hơnnữa,bạnnênkiểmtratuổicủangườidùngcónằmtrongphạmvithíchhợpkhông.Vớimộtsựsuyrộng,bạncó PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–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 ... 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 .php C:\Inetpub\wwwroot\tst .php C:\Inetpub\wwwroot\tst .php C:\Inetpub\wwwroot\tst .php ononononlinelinelineline4.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",1024))//Loi{print$line;}@fclose("$fp")//Loiordie('Khongthedongvanban.txt');?> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology15151515Dormitory204.B518:20PMApril7,2006Nhưlàvấnđềcủathựchành,đơngiảnlàsẽsailầmkhidùng PHP xửlímọidòngcủaCSDL.Tôiđãbắtgặpngườitadùng PHP đểchạymộtchươngtrìnhtìmkiếmđơngiảntrên2MBdữliệuvàtựhỏitạisaocáingônngữnàychạylâuthế.Lấy2MBdữliệutừCSDLcóthểlàmbạnchờmãimãi.Ngônngữtruyvấnchuẩn(StandardStandardStandardStandardQueryQueryQueryQueryLanguageLanguageLanguageLanguage----SQLSQLSQLSQL)đượcthiếtkếđặcbiệtđểtruyvấnvàlấydữliệutừcácbảngcủabạn.Ýtưởnglàdùngnóđểlọcdữliệukhôngcầnthiết,đểlạicácthôngtinliênquancho PHP xửlí.Nếubạnlấynhiềudữliệuhơncầnthiết,đólàdấuhiệuchắcchắnrằngmãSQLđangdùngchưađượctốiưuhoá.2.1.2.1.2.1.2.1.MMMMệệệệnhnhnhnhđềđềđềđềWHEREWHEREWHEREWHEREMộtthídụkinhđiểnvềsựhiểuquảcủaSQLliênquanđếnmệnhđềwhere.ĐoạnmãsausẽlấycáckếtquảvàinratênvàmãsinhviêncủasinhviêncóMASV='511203008':< ?php include(“includes/taptinketnoi.inc”);$strsql="SELECTMASV,HOTENFROMSINHVIEN";$truyvan=@sql_query($strsql,$ketnoi);if(!$truyvan){die(sprintf("LOI:[%d]:%s",sql_errno(),sql_error()));}if(@sql_num_rows($truyvan)<=0){die("KhongketquatimduoctuCSDL!");}while($mautin=@sql_fetch_array($truyvan)){if($mautin[MASV]==“511203008”){print"MASV:$mautin[MASV]\n<br>\n";print"Hoten:$mautin[HOTEN]\n<br>\n";break;}}?>Đoạnmãtrênchưađượctốiưu:chúngtađangdùng PHP đểtìmkiếmtrongtoànbộCSDL!NếunhưđiềunàykhôngquantrọngđốivớicácCSDLnhỏ,khikíchthướcCSDLtănglênbạnsẽcảmthấymộtcúđấmnặngnềvềhiệunăng.Lờigiảirấtđơngiản:sửacâuSQLđểchứamệnhđềWHERE:$strsql="SELECT*FROMSINHVIEN";$strsql.="WHEREMASV='511203008'"; PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–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) <?/*ThethreefacesofΠ*/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 programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology6666Dormitory204.B518:20PMApril7,2006Lạicómộtsốngườicốgắngviếtlạicáchàm PHP thôngdụngthayvìđihọcvềhàmđótrongcáctàiliệu PHP cungcấp.Cóítnhất2lídođểkhôngnênlàmđiềunày.Thứnhất,vàtrênnhất,nólàmchonhữngngườiđọc(vàsửa)chươngtrìnhcủabạnkhóhiểuvàcảmthấycóquánhiềuhàmdưthừa.Họtựhỏitạisaobạnlạiđiđịnhnghĩahàmtheokiểuđó,thayvìsửdụngcáchàmđịnhnghĩasẵnbởi PHP. Thứhai,địnhnghĩahàmnhưvậycũngsẽlàmchậmchươngtrìnhcủabạn(mộtcáchkhôngcầnthiết).Khôngchỉphảixửlínhiềumãhơn,màmỗilầngọihàmdobạnđịnhnghĩa,bạnđãtốnthờigianchochínhhàmđó,trướckhihàmnguyênthuỷđượcgọi.1.1.1.1.TrTrTrTráááánhnhnhnhviviviviếếếếttttllllạạạạiiiiccccáááácccchhhhààààmmmmccccóóóóssssẵẵẵẵnnnnHãyđươngđầuvớinó.Đôikhithậtlàkhóđểtránhchuyệnnày.Trướctiên,mộtlậptrìnhviênkhôngthểtheokịpcáchàmcủa PHP ngayđược.Vàaicóthờigianmàtracứu.Tạisaokhôngviếtlạichokhoẻ?Cáchlàmcủatôilàluôncósẵnmộttàiliệuchỉdẫn PHP ( PHP manual)mỗikhiviếtchươngtrình(tácgiảbàinàydùngmộtbảnPDFcótạochỉmục,riêngtôi,ngườidịch,thìdùngmộttàiliệuCHMđầyđủthôngtinvàcócảgópýcủangườisửdụngmàbạncóthểlấyởhttp://www .php. net/docs .php) .Sauđó,mỗikhiđịnhviếtmộthàmmởrộngcho PHP, tôiđọclướtquatàiliệuđểxemhàmđócóchưa.Tuynhiên,cầnchúýlà,dobảnchấtmãnguồnmởcủa PHP, bạncóthểtìmđượccáchàmdongườidùngđịnhnghĩatrướckhinóđượcthêmvào PHP (thídụnhưhàmtìmphầntửkhácnhaugiữahaimảng).Điềunàykhôngcónghĩalàbạnphảihiệuchỉnhlạimã(Thisdoesn'tnecessarilymeanthatyoushouldhavetocorrectthecode.-don'tunderstand)16.16.16.16.KhKhKhKhôôôôngngngngttttááááchchchchbibibibiệệệệttttphphphphầầầầnnnnserverserverserverservervvvvààààclientclientclientclientVàilậptrìnhviêncốkếtnốicảchươngtrìnhvớinhau,nghĩalàghépchungmãHTML(client-side-phầnkhách)vớimã PHP (server-side-phầnchủ)vàotrongmộttậptinlớn.Mặcdùđiềunàytốtchocácsitenhỏ,nhưngnócóthểtrởthànhvấnđềlớnkhicácsiteđótrởnênlớnhơnvàđượcbổsungthêmtínhnăng.Lậptrìnhtheocáchnàylàmnảysinhvấnđềkhóbảotrìvàcáctậptintrởnêncồngkềnh.1.1.1.1.HHHHààààmmmmAPIAPIAPIAPIKhimuốntáchbiệtphầnkhách-chủ,bạncóvàilựachọn.Mộtcáchlàviếtnhữnghàmhiểnthịnộidunglinhđộngvàđặtchúngđúngchỗtrongtrangweb.Thídụdướiđâyminhhoạđiềunày:index .php index .php index .php index .php -phầnkháchreturnstrlen($str);}?>HTMLHTMLHTMLHTML< ?php include_once("site.lib");?><html><head><title>< ?php print_header();?></title></head><body><h1>< ?php print_header();?></h1><tableborder="0"cellpadding="0"cellspacing="0"><tr> PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–DepartmentOfInformationTechnology23232323Dormitory204.B518:20PMApril7,2006KhKhKhKhôôôôngngngngddddùùùùngngngngccccáááácccchhhhààààmmmmssssẵẵẵẵnnnnccccóóóóNhiềulậptrìnhviên PHP cónềntảngCcóvẻkhôngnhậnrarằng PHP cungcấpnhiềuhàmsẵncógiúpthaythếcácđoạnmãdài.Nếubạnđếnvới PHP từC,tôikhuyênbạnnênđọcquatàiliệutrướckhiviếtmộtkhốilệnhđểxem PHP cósẵnhàmnàogiúpcuộcsốngcủabạndễdànghơnkhông.ĐổĐổĐổĐổiiiittttêêêênnnnccccáááácccchhhhààààmmmm PHP PHP PHP PHPđãđãđãđãccccóóóóTôiđãthấyngườitađổitêncáchàmđãcócủa PHP chỉđểgiúphọdễnhớhơn.Điềunàykhôngchỉlàmchậmchươngtrình,màlàmchođoạnmãkhóđọchơn.DDDDùùùùngngngnghhhhướướướướngngngngđốđốđốđốiiiittttượượượượngngngngququququáááámmmmứứứứcccc PHP khôngphảilàmộtngônngữHĐT,dùnócungcấpcáctínhnăngHĐT.BạncầnluônnhậnthứcrằngHĐTtrong PHP sẽlàmchậmđángkểchươngtrình.1.1.1.1.LLLLấấấấyyyyththththôôôôngngngngtintintintinởởởởđâđâđâđâu?u?u?u?Maymắnlàcórấtnhiềuthôngtinvềviệclàmthếnàođểlậptrình PHP. VàinơitốtnhấtlàZend.combảngốccủabàiviếtnàylàởđóProfessional PHP mộttrongnhữngsáchtoàndiệntốtnhấtvề PHP, tốtchocảlậptrìnhviênvàkhông-lậptrìnhviên.WebApplicationDevelopmentwith PHP Mộtquyểnsáchtuyệtvờidạybạncảcáchpháttriểnweblẫnvàitínhnăngcaocấpcủa PHP. BaogồmcáctàiliệuchínhthứcvềZendAPI.The PHP Developer'sCookbookMộtquyểnsáchthiênvềlờigiảiđápchocácvấnđềgặpphảitrong PHP (dotui-SterlingHughes-viếtcùngAndreiZmievski)8.8.8.8.KhKhKhKhôôôôngngngngnhnhnhnhậậậậnnnnththththứứứứccccđầđầđầđầyyyyđủđủđủđủvvvvềềềềbbbbảảảảoooommmmậậậậttttNhữngngườidùngkhôngphảilúcnàocũnglàmviệcvớihệthốngcủachúngta.Vớitưcáchlàlậptrìnhviên,tráchnhiệmcủachúngtalàthiếtkếmộthệthốngantoàn,dễchịucóthểlàmviệcđượcchungvớilỗicủangườidùng.Khithiếtkếhệthống,bạnphảiđặtmìnhvàovịtríngườidùng.Xemxétnhữngchỗhọcóthểgặplỗivàtìmkiếmnhữnglỗhổngbảomậttiềmtàng.Rồibạnthiếtkếchươngtrìnhcókhảnăngsửachữalỗinàyvàlấpcáclỗhổngbảomật.Mộtđiềukháccũngquantrọnglà:dùxảyrahưhỏnghayhệthốngbịtấncônglàdolỗicủangườidùng,chínhbạnlàngườichịutráchnhiệmnếubạnđãviếtchươngtrìnhcónhiềulỗihaythiếunhữngbướckiểmtracầnthiếtdẫnđếnhỏngdữliệu.Thídụ,tôiđãthấynhiềuchươngtrìnhkhôngdùnghàmđãcócủa PHP mail()vốnantoànmàlạiđidùngsendmailthôngquapopen().Nócóthểdẫnđếnnhiềulỗhổngbảomật(thídụnhư/etc/passwdđượcgửiđếnngườidùngcuối).Cóvàinơithườngxảyracácsựcốvềbảomật,hoặctiềmnănggâyrahỏngdữliệurấtlớn:Thựchiệnlờigọihệthống.Tôikhôngcócáchnàodiễntảđượcmứcđộnguyhiểmcủavấnđềnày.Luônđảmbảorằngmọidữliệungườidùngđưavàolàantoàntrướckhichuyểnnóchomộtlờigọihệthống.ĐỪĐỪĐỪĐỪNGNGNGNGBAOBAOBAOBAOGIGIGIGIỜỜỜỜTINTINTINTINNGNGNGNGƯỜƯỜƯỜƯỜIIIIDDDDÙÙÙÙNGNGNGNGMMMMỘỘỘỘTTTTCCCCÁÁÁÁCHCHCHCHMMMMÙÙÙÙQUQUQUQUÁÁÁÁNGNGNGNGKHIKHIKHIKHIĐƯĐƯĐƯĐƯAAAADDDDỮỮỮỮLILILILIỆỆỆỆUUUUCCCCỦỦỦỦAAAAHHHHỌỌỌỌVVVVÀÀÀÀOOOOLLLLỜỜỜỜIIIIGGGGỌỌỌỌIIIIHHHHỆỆỆỆTHTHTHTHỐỐỐỐNGNGNGNGMMMMÀÀÀÀKHKHKHKHÔÔÔÔNGNGNGNGKIKIKIKIỂỂỂỂMMMMTRATRATRATRATRTRTRTRƯỚƯỚƯỚƯỚCCCC.Khiđăngkíngườidùng.Nếubạntrôngmongcókếtquảchínhxác,luônkiểmtravàđảmbảobảnđăngkíđượckiểmtranhữngchỗcầnthiết.Trướctiên,cónhiềucáchđểkiểmtramộtđịachỉe-mailhợplệ.Hơnnữa,bạnnênkiểmtratuổicủangườidùngcónằmtrongphạmvithíchhợpkhông.Vớimộtsựsuyrộng,bạncó PHP programmingdynamicwebforewreybody21Fatalerrorsinprogrammingwith PHP –CollectfromwrittingofSterlingHughesNGUYENANHKHOA–Class27K0A–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...
  • 27
  • 636
  • 2
Thiết kế và lập trình website

Thiết kế và lập trình website

Quản trị Web

... Dương Thành Phết, Bài giảng Thiết kế & Lập trình Web, Trường Trung cấp Tây Bắc (2012).[2] Dương Thành Phết, Bài tập thực hành Thiết kế & Lập trình Web, Trường Trung cấp Tây Bắc (2012). ... PhếtEmail: phetcm@gmail.com Website: http://www.thayphet.netTel: 0918158670 – 08.3.7900261Lịch tiếp SV tại trường: Sáng thứ 2 (10h00  11h00)1THIẾT KẾ & LẬP TRÌNH WEBSITE Sở Giáo Dục & ... học các học phần sau:  Kỹ thuật lập trình C Đồ hoạ ứng dụng (Photoshop, Flash) Cơ sở dữ liệu  Hệ quản trị cơ sở dữ liệu SQLServer. Ngôn ngữ lập trình C#/VB. Trường Trung Cấp Tây...
  • 20
  • 2,517
  • 22
NGÔN NGỮ LẬP TRÌNH SCRIPT PHP

NGÔN NGỮ LẬP TRÌNH SCRIPT PHP

Kỹ thuật lập trình

... bit được lập trong trường hợp $a hoặc $b được lập. $a ^ $b XorCác bit được lập khi $a hoặc $b được lập nhưng cả hai không đồng thời lập. ~ $a Not Các bit được lập nếu $a không được lập và ngược ... của trang được quy cho bộ trình duyệt tới trang hiện tại. Điều này được thiết lập bởi bộ trình duyệt của người sử dụng, không pahỉ tất cả các trình duyệt sẽ được thiết lập hư thế này.HTTP_USER_AGENTREMOTE_ADDRREMOTE_PORTSCRIPT_FILENAMESERVER_ADMINSERVER_PORTSERVER_SIGNATUREPATH_TRANSLATEDSCRIPT_NAMEREQUEST_URINội ... biến từ bên ngoài PHP 5.1_Các form HTML(GET và POST)Khi một form được trình tới một script của PHP, bất kỳ các biến từ form đó sẽ rự động được tạo thành có sẵn tới script bởi PHP. Nếu tuỳ chọn...
  • 42
  • 365
  • 0
Bài Giảng Môn Lập Trình Website ASP.Net part 1

Bài Giảng Môn Lập Trình Website ASP.Net part 1

Kỹ thuật lập trình

... người lầm tưởng rằng các Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 4Đầu năm 2002, Microsoft giới thiệu một kỹ thuật lập trình Web khá mới mẻ với tên gọi ban đầu ... tag HTML, thiết kế web, mà nó còn hỗ trợ mạnh lập trình hướng đối tượng trong quá trình xây dựng và phát triển ứng dụng Web.ASP.Net là kỹ thuật lập trình và phát triển ứng dụng web ở phía Server ... Framework. Bên cạnh đó là một "phong cách" lập trình mới mà Microsoft đặt cho nó một tên gọi rất kêu: code behind. Đây là cách mà lập trình viên xây dựng các ứng dụng Windows based thường...
  • 7
  • 716
  • 9
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 2 ppt

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 2 ppt

Kỹ thuật lập trình

... Information Services (IIS)  Chọn Ok để cài đặtBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 11Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 9II. ... Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 15Chạy thử ứng dụng để kiểm tra: Hoặc từ cửa sổ IIS Manager: click phải trang cần xem (Default.aspx)  BrowseHoặc từ trình ... nhập: http://Localhost/MaytinhBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 10 Ghi chú: Để kiểm tra cài đặt: Khởi động trình duyệt truy cập địa chỉ : http://LocalhostKết...
  • 7
  • 698
  • 10
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 3 ppt

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 3 ppt

Kỹ thuật lập trình

... Web.Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 162. Tạo ứng dụng webBước 1. Chọn từ thực đơn File  New  Website Chọn các dạng ứng dụng tạo (ASP.Net Website) Vị trí ... Vị trí lưu trữ (D:\Wellcom) Ngôn ngữ lập trình (C#)  Chon OkKết quả: Cửa sổ Solution Explorer Trang Default.aspx (Design)Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành ... tính, chúng ta có thể thiết lập thuộc tính cho trang web và các đối tượng có trong trang web.3. ToolboxHiển thị Toolbox: Thực đơn View  ToolboxBài Giảng Môn Lập Trình Website ASP.NetBiên sọan:...
  • 8
  • 610
  • 7
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 4 pptx

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 4 pptx

Kỹ thuật lập trình

... "_blank";Kết quả hiển trị trên trang Web:Ví dụ: Tạo Website Lienket gồm 3 điều khiển HyperlinkBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 29b. Các thuộc ... ImageAlignvà AlternateText như điều khiển Image.Ví dụ: Tạo Website Tinhtoan gồm các điều khiển: Label, Textbox, ButtonBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 22Chương ... thị khi tập tin được thiết lập trong thuộc tính ImageURL không tồn tại. ImageAlign: Vị trí hiển thị giữa hình và nội dung văn bản.o NotSetBài Giảng Môn Lập Trình Website ASP.NetBiên sọan:...
  • 9
  • 653
  • 7
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 5 pdf

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 5 pdf

Kỹ thuật lập trình

... Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 37Các thông báo lỗi xuất hiện qua hộp thoại khi dữ liệu nhập không hợp lệ:Nếu tất cả đều hợp lệBài Giảng Môn Lập Trình Website ... vi phạm.Thuộc tính: ValidationExpression: Qui định mẫu kiểm tra dữ liệu.Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 31II. Điều khiển kiểm tra dữ liệuTrong ... có giống với mật khẩu đã nhập ở trên hay không.rfvNhap_lai.Display = StaticBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 36Thuộc tính Text của các điều khiển kiểm...
  • 7
  • 586
  • 8
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 6 pdf

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 6 pdf

Kỹ thuật lập trình

... (!IsPostBack){Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 48MultiView1.ActiveViewIndex = 0;}}</script>Thi hành:Bài Giảng Môn Lập Trình Website ASP.NetBiên ... Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 41Bước 3. Thiết lập thuộc tính cho điều khiển adQuangcaoo AdvertisementFile: ... với tháng hiện hànhVí dụ: Tạo trang CalendardBước 1: Tạo Calendard vào trangBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 39<Impressions>Tần suất hiển thị của...
  • 11
  • 727
  • 7
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 7 docx

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 7 docx

Kỹ thuật lập trình

... Tintuc.aspxBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 50IV. Thiết kế Website với MasterPageMasterPage là cách để thiết kế layout chung cho website. Ví dụ website của bạn ... phải sử dụng nhiều điều khiển hidden.Chọn chức năng View | Source từ browserBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 51 Tạo phần banner (Phần trên) Tạo phần ... Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 49III. Đối Tượng View StateĐối tượng ViewState...
  • 5
  • 580
  • 7
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 8 pdf

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 8 pdf

Kỹ thuật lập trình

... thị tương ứng vào GridViewBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 55 Tạo kết nối CSDL mớiBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết ... Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 67Ta chọn : Specify a Custom SQL satament or stored procedureTiếp tục chọn Stored Procedure cần kết nối.Bài Giảng Môn Lập Trình ... Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 68Xác định giá trị cho tham số của Procedure có thể là: Giá trị trực tiếp, QueryString, Form, hay điều khiển trình chủ...
  • 15
  • 656
  • 7
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 9 doc

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 9 doc

Kỹ thuật lập trình

... DanhsaxhSV.xml lên trình duyệt có kết quả như sau: Tạo điều khiển XMLDataSource vào trang DanhsachSV.aspx Chọn Configure Data Source . . .: Để thực hiện kết nốiBài Giảng Môn Lập Trình Website ASP.NetBiên ... chỉ định nguồn dữ liệu là AccessdataSource1 vừa tạo. Thi hành xem kết quảBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 69II. KẾT NỐI CƠ SỞ DỮ LIỆU VỚI ACCESS, ... QLBansach (Thông thướng được tổchức lưu trữ trong thư mục App_Data của ứng dụng)Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 74III. KẾT NỐI VÀ CẬP NHẬT CSDLSQLDataSource...
  • 9
  • 639
  • 7
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 10 ppt

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 10 ppt

Kỹ thuật lập trình

... (giống như Template Column của GridView).Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 87Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 79o ... Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 81 Khai báo các thông số và chọn CSDL cần kết nốiVới CSDL SQLServer 2000/2005Tạo kết nối CSDL mớiBài Giảng Môn Lập Trình Website ... SourceChèn them cột mớiĐiều chỉnh các cộtKết nối nguồn dữ liệuTạo các cột tùy biếnBài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 87II. Điều khiển DataList1. Sử dụng DataList...
  • 11
  • 625
  • 7
Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 11 doc

Tài liệu Bài Giảng Môn Lập Trình Website ASP.Net part 11 doc

Kỹ thuật lập trình

... liệu (giống như Template Column của GridView).Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 93o Thiết kế trình bày với các Control điều khiển tương tự như khi thiết ... kế, chúng ta kéo kết quả đã thiết kế vào vị trí cần hiển thị trongDataList.Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 89Ví dụ: Hiển thị thông tin sách với DataListThiết ... </ItemTemplate> <SeparatorTemplate></SeparatorTemplate> (tùy chọn)Bài Giảng Môn Lập Trình Website ASP.NetBiên sọan: Dương Thành Phết Trang 90Qui định hình thức hiển thị giữa các dòng...
  • 7
  • 502
  • 4

Xem thêm