1. Trang chủ
  2. » Công Nghệ Thông Tin

Kỹ thuật và thủ thuật lập trình hướng đối tượng PHP tập 2 phần 1 nguyễn minh, lương phúc

152 426 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 152
Dung lượng 2,54 MB

Nội dung

Th.S: NGUYỄN MINH - LƯƠNG PHÚC nhóm tin học thự c dụng Kỹ thuật thủ thuật lập trình hướng đốì tưỢng P H P Khái niệm, kỹ thuật viết mã ♦ T rọii tậ p hạn có hội cọ x t đ ẻ n ân g cao Icỹ n ăiig lậ p trm li tliôiig q u a việc tliự c h n h s ủ dm iíỊ tín h cao cáp, ch ẳn g h n n h u vấii íiti sd d ứ liệii, MySQỊv, SQỊvite P D O c tia P H P ♦ Với phươiiq p h áp hiíớnQ d ản t n g ví d ụ b n Idiỗnp Iiliửng d ể dàiiíỊ n ắ m b ắ t Id iái mộiTL c ă n b ảii, nâng cao liơii ciiiiẹỊ Iiliit c ách SI^ dxuig côniỊ cxx lậ p trù ili New Edition ciia P H P đ ễ v iế t ch tíớ n g t r ì n h P I Ỉ P că n bảii ^ Mỗi chương cồn có n h iề u b i tậ p tliụ c liảiứá n ià b ạn n ê n làm th e o đ ể n ắm vũnữ, n ộ l dting đtíỢc tr ìn h bày, b ao g è m cài đ ặ t phlui m ề m , c ú p h p ngơn ngiì, c ẩ u trứ c d ữ K ệư ♦ Mà điểm đặc b iệ t ciia sách I>hươiig pliáỊ hướng d ẫ n r ẩ t đơn g iản cỢc kỳ d ề tiế p tìiư NHÀ XƯẤT BẢN HỒNG ĐỨC I v l NÓI ĐẦU B ộ s c h " K j' t l i u ậ t v th ủ t h u ậ t lậ i) tr ìn li liư n g đ ố i tư ợ n íị P H P ” đ ợ c b i ê n so ạn n h ằ m m ụ c đ íc h d n h clio n h ữ n g người m i b ắ t đ ầ ii biíớc c h â n vào t h ế giới c ủ a ng ô n n g ữ lậ p ù i h P H P K h ô n g giống n h n h ữ n g s c h Idiác, s c h n y Id iơ n g đ ị i h ỏ i b n p h ả i h ọ c q u a trư c v ấ n đ ề c ă n b ả n v ề lậ p tr ìn li W eb ha}' sỡ d ữ liệ u M đ iể m đ ặc b i ệ t c ủ a b ộ s c h c h ú ih p h n g p h p h n g d ẫ n r ấ t đ n g iả n v cự c Icỳ d ể tiế p ứ iu T liự c vậy, với p h n g p h p h ng d ẫ n b ằ n g v í d ụ b n s ẽ Id iô n g n h ữ n g d ễ d n g n ắ m b ắ t Id iá i n iệ m c ă n b ả n , m tliồ n g q u a đ ó s ẽ d ầ n trở n ê n q u e n tíiu ộ c với Id iái n iệ m n â n g cao h n c ủ n g n h c c h s d ụ n g cồng c ụ lậ p trìn h củ a P H P đ ể ch n g t r ì n h P H P c ă n b ả n H n n ữ a , với tr ọ n b ộ tậ p b n s ẽ có liộ i cọ x t đ ể n â n g cao k ỷ n ă n g lậ p t r ì n h tliơ n g q \ia việc tliự c lià iili s d ụ jig t í n h n ă n g cao cấ p , c h ẳ n g h n n h v ấ n tin sở d liệ u , M ySQ Ị/, S Q L ite v PD O c ủ a P H P , c c cô n g n g liệ XMIv, c c coolcie, s e s s io n lie a d e r, p liầ n m rộng c ủ a b ô n t h ứ b a S c h có b ố c ụ c rỗ rà n g th e o từ iig ch n g đ ề m ục, b tíớ c h iíớ n g d ẫ n c ụ ứ iể d ễ h ic ii M ỗi cliiíơ ng cịn có n h iề u b i tậ p ứ iự c h n li m b n n ê n m th e o đ ể nắm ^àỈIlg n ộ i d m ig d ợ c tr ì n h b ày , b ao cỊồtn c i đ ặ t p h ầ n n iè in , c ú p h p n g ô ii n g ữ , c ấ u ta*úc đ ữ liệ u , th tíờ n g I x m li đ i c u I d i i t n , c c lià n i c i s ẵ n , v n liiềa i t c Aại liữ íi íc h k h c H y vọng s c h s ẽ n iộ t tà i liệ u h ọ c tậ p h ữ u íc h ch o b n đ ọ c tro n g q u t r ì n h ti-ỏ tlià n h m ộ t c h u y ê n g ia v ề PH P T ấ c g iả C h n g 7: Làm v iệ c vớ i sỏ liệu S Q L PHẨN Làm viêc với liêu từ nguồn khác CbiửJ9ig 7: Làm v iệ c với cá c s d ữ liệu SQL Chươìig &• Làm việc với XML Chương 9: Làm việc với Cookie, Sessiơn, H ea d er Chươĩtg 10: X lý cá c lỗi Chiừýiìg 11: Bảo vệ an toàn PHP Cbươềig 12: M rộng PH P C h n g 7: Làm v iệ c v i sỏ liêu SQL Làm việc với sd liệu vò SQL Những kỹ k h i niêm Ị Ể! Hoc nbiÌỲìg kbái niệm sở d ữ liộn I'à Stnicliired Qiierỵ Langỉiage • Thêm, biên tập, xóa xem record sứ dụng MySQL SQLiie CO' sở ciữ liệit M Tniy tìm record sứ d ũ liệu iĩới PHP • ỉỉiộii lực bóa htli liệu ĩihập Cíta ngííời dũng sang mộ! sở ìiC>ti ì'ới PHP » Viết cbỉỉơtìg trình điền khiền bàng sở đ ữ liệu kbả chìtyển (portable) M ột lý cho th ô n g dụng PH P n h m ột ngôn ngữ v iết script Web hỗ trợ m ột dãy rộng hệ th ố n g liệu quan hệ Sự hỗ trợ làm cho n h p h t triển Web dễ dàng tạo Web site điều k h iển liệu tạo nguyên ứng dụng Web m ột cách n h an h chóng hiệu C h n g : Làm v iệ c với c s ỏ liệu SQL PH P hỗ trợ 15 máy sở liệu khác bao gồm Microsoft SQL Server, IBM DB2, PostgreSQ L, Oracle Cho đến P H P 5, hỗ trợ đă cung cấp qua extension sở iiệu riêng, extension có chức n ăn g tín h n ăn g riên g Tuy nhiên, điều làm cho n h p h t triể n khó th ay đổi từ m ộ t máy sở liệu san g m ột m áy sở đữ liệu khác PH P giải tìn h n ày b ằn g việc giới thiệu m ột API chung cho truy cập sở liệu: extension P H P D ata Objects (PDO), cung cấp m ột giao diện hợp n h ấ t để làm việc với sở Uệu %'à giúp n h p h t triể n xử lý sở liệu k hác n h au cách n h ấ t quán T rong P H P 5.3, extension PDO cải tiến th êm với hỗ trợ cho m áy sở liệu tối ưu h ó a th ê m cho an n in h hiệu suất Đ ể đ t k h ả n ăn g tương thích ngược, extension sở liệu riên g tiếp tục dược hỗ trợ Bởi b ạn thường tự n h ậ n thấy m ình chọn m ột extension riêng m ình (m có th ể n h an h đưa nhiều tín h n àn g hơn) PDO (đưa tín h k h ả chuyển tín h n h ấ t quán qua m áy sở liệu), chương n ày đề cập d ến h tùy chọn; chương giới thiệu PDO th ảo luận h a i sô’ extension riên g th ó n g dụng n h ấ t PHP, extension MySQL Im proved extension SQLite Giới ỉh iệu sở liệu SQL Trong thờ i đại In tern et, th ô n g tin khơng cịn trìn h bày tro n g tủ đựng hồ sơ T hay vào đó, lưu trữ dạng số số tro n g cấc kiểu liệu điện tử vốn "hộp chứa" lưu trữ liệu áp dặt m ột cấu trúc n h ấ t định th ô n g tin Những sở liệu điện tử không chiếm khơng gian v ật lý khơng gian gỗ kim loại tương ứng m chúng chứa đầy công cụ để giúp người dùng lọc truy tìm n h a n h thơng tin sử dụng tiêu chí khac ưhau Cụ th ế hầu h ế t sở liệu điện tử ngày sở liệu quan hệ (relational database) cho p h ép người dùng dịnh nghĩa mối quan hệ b ản g sở liệu khác n h au để tìm kiếm phân tích hiệu H iện có sẵn m ột số lớn hệ thông quản lý sở liệu, m ột số thương m ại m ột số m iễn phí Có lẽ b ạn nghe đến m ột vài hệ th ô n g này: Oracle, M icrosoft Access, My SQL, PostgreSQL N hững hệ th ô n g sở liệu ứng dụng p h ần mềm m ạnh, phong phú tín h n ăn g có k h ả n tổ chức tìm kiếm h àn g triệu record với tốc độ r ấ t cao; chúng dược sử dụng rộng rã i với doanh nghiệp v ăn phòng 10 C h n g 7: Làm việc với cờ s liệu v SQL phủ, thường cho mục đích r ấ t quan trọng Trước vào chi tiế t cụ th ể việc xử lý record sở liệu với P H P , trước tiê n cần p h ải hiểu rõ k h i niệm sở liệu Nếu b n làm quen với sở liệu này, p h ần sau dầy cung cấp m ột n ền tả n g v cho bạn th nghiệm với m ột tập thực tiễn tro n g S tructured Query Language (SQL) Thông tin hữu dụng để hiểu nội dung n â n g cao tro n g p h ần Tìm hiểu cớ sỏ liệu, record, v khóa (Prím a ry Key) Mọi sở liệu gom m ôt nhiều b ản g (table) N hữ ng b ản g n ày tạo cấu trúc liệu th n h h àn g cột, áp đ ặt tổ chủc lên liệu H ình 7.1 m inh h ọ a m ột bảng điển hình Bàng chứỉt sõ’ jiệ'j b án h ãn g oho vỊ !;rj k h ác n h au vt'i hàny record (bản ghi) chứa thòng tin cho m ôt vị rri va n ăm kỉiác Mồi recorđ p h ân chia trở th n h cột field (trường) với trường chứa m ột đoạn thông tin khác Cấu trúc dạng b ản g n ày làm cho dễ tìm kiếm trê n b ản g để tìm record khớp với tiêu chí (criteria) cụ thể: ví dụ, tấ t vị tr í có doanh sơ' lớn $10,000 doanh s ố cho t ấ t vị trí tro n g n ăm 2008 Các record tro n g b ản g không xếp theo b ấ t kỳ th ứ tự cụ th ể chúng có th ể p h ân loại theo thứ tự bảng chữ cái, th eo năm , theo tổng doanh số, theo vị trí theo b ấ t kỳ tiêu chí m b n chọn xác định Do để làm cho dễ n h ậ n dạng m ột record cụ th ể, cần p h ải th ê m m ộ t thuộc tín h n h ận d ạn g n h ấ t vào record chẳng h ạn m ột số serial m ã trìn h tự T rong ví dụ trước, record n h ậ n d ạn g b àn g m ột trường 'record ID' n h ất; trường ảược gọi p rim ary key (khóa chính) clio bảng ỊD Yưíìr Lĩcaiìơìi Sales {ĩ) 2007 ỏdấỉĩiỉi [ W fi •y 8574 2007 Chicaco ì 2007 Washincion 12929 Tị 2007 Ncw York 13636 2007 Lo*; Aiìícles S748 2.sAnkĩcles 12 2008 Ba^ion 4745 Hình 7.1 Một bảng mẫu 11 C h n g 7: Làm v iệ c với sở liệu SQL Thủ thuật M ộ t cách dễ dàng đ ể hiểu khái niệm m ộ t tương dồng H ăy xem m ộ t c sở liệu m ột th viện m ỗi bảng m ột kệ sách bên th viện D o m ột record dại diện diện tử m ột sách trê n m ộ t kệ sách với tựa dề sách khóa record Nếu thiếu tựã đề này, không th ể dễ dàng phân b iệ t m ột sách với m ột cuô'n sách khác (Cách n h ấ t d ể làm điều nàỵ m m ỗi c'n sách kiểm tra nội dung - m ộ t tiế n trình mâ't thời gian mà khóa ch ín h giúp bạn tránh được) M ột bạn đưa thông tin vào m ột bảng, bạn thường muốn sử dụng aó để tr ả lời câu hỏi cụ th ể ■ví dụ, vỊ trí có doanh số lớn $5000 tro n g 2008? N hững câu hỏi gọi query (mẫu truy vấn) k ế t tr ả sở liệu nhằm phản hồi lại query gọi tậ p hợp k ế t (result set) Các query thực th i sử dụng Structured Query Language Tìm hiểu m ối quan hệ khóa ngoại (Poreign Key) Bạn b iết rằ n g m ột sở liệu có th ể chứa nhiều bảng Trong m ột hệ thô ng sở liệu quan hệ, bảng có th ể liên k ết với m ột nhiều trường chung gọi khóa ngoại (foreign key) N hững kh ó a ngoại làm cho có th ể tạo mơ’i quan hệ m ột đô'i (one-to-one) m ột đối nhiều (one-to-many) bảng k hác k ế t hợp liệu từ nhiều b ản g để tạo tậ p hợp k ế t to àn diện Để m inh họa, h ãy xem xét hình 7.2 trìn h bày ba b ản g liên kết G a it t lD H oítoí Crim c Roni;mcc AitỉhorỉD AufỊiorS N ora Rohcrts BnoklD BookNahie j T h c S h io iiự ShuUer ĩslíìnd Piỉỉ SeoiaUưy Tha Overlook Sisters Safc HnrKnír T a n ik Musk* Blood Bix)thers G e tu rỉí) AuỉhorlD i ì ì l l *J 3 Hình 7.2 Các mơi quan hệ bảng 12 C h d n g 7: Làm việc v ò i c d sò liệu SQL H ình 7.2 m in h h ọ a ba bảng, chứa thông tin tá c giả (bảng A), th ể loại (bảng G), sách (bảng B) Các b ản g G B k h đơn giản: chúng chứa m ột d an h sách tê n th ể loại (genre) tá c giả, với record n h ậ n dạng m ột khóa n h ấ t Bỗng B phức tạp hơn: sách tro n g bảng liên k ế t với m ộ t th ể loại cụ th ể khóa genre (từ bảng G) với m ột tác g iả cụ th ể qua khóa author (từ b ản g A) B ăng cách dị th eo khóa đến b ản g nguồn tuơng ứng caa chúng, b ạn có th ể dễ d àn g n h ậ n dạng tác giả th ể loại cho m ộ t sách cụ thể Ví du, cú th ể tliây vằng tựa đề "The Shin.ing" v iết "Stephon ĩliiig" thuộc th ể loại "HoiTOr" Tương tự, b ắ t đầu từ dầu k ia có t}iể th ấ y rằ n g tác giả "M ichael Connelly" viết hai cuôn sách "The Overlook' "Trunk Music" N hững mố.l quaii hệ n(iư thấy ỉiình 7.2 tạo nen néii tản g m ột hệ th ố n g sd dử liệu quan hệ Liẻn k ế t bảng sử dụng khóa ngoại hiệu lựa chọn khác: k h i tạ o m ột b ản g thứ ngoại trừ bồn rửa n h bếp để chứa tấ t thơng tin th o t n h ìn trơ n g tiện lợi, cập n h ậ t m ột b ản g m ột tiến tr ìn h th ủ cóng (và dễ sai sót) để tìm trường hợp m ột giá trị cụ th ể th a y th ế b ằn g m ột giá trị P h â n ch ia th ông tin th n h b ản g độc lập liên k ế t bảng n ày b ằn g k h ó a ngoại bảo đám rằn g m ộ t m ẫu th ô n g tin cụ th ể xuất h iện m ột lầ n m ột lần sở liệu; điều loại bỏ p hần dư thừa, đơn giản hóa th ay đổi (bằng việc cục h ó a chúng sang m ột vị trí) làm cho sô liệu gọn dễ q u ản lý Tiến trìn h hợp lý hóa m ột sd liệu b ằn g việc d in h n g h ĩa thực thi môi quan hệ m ột đôi m ột m ột đôi nhiều b ản g th n h phần gọi chuẩn hóa sớ liẹu (d atab ase norm alization) m ột tá c vụ ch ín h m m ột kỹ sư sở liệu p h ả i đối m ậ t k h i tạo m ột sd liệu T rong tiế n trìn h chuẩn hóa, kỹ sư sở liệu n hận dạng mô'i quan hệ chéo phụ thuộc k hơng xác bảng tối ưu hóa việc tổ chức liệu cho query SQL thực thi với hiệu su ất tối đa Cũng có m ột sơ" dạng chuẩn giúp b ạn te s t p h ạm vi m ột sở liệu chuẩn hóa; dạng chuẩn n ày cung cấp nhữ ng hướng dẫn hữu dụng để giúp bảo đảm việc th iế t k ế sở liệu vừa n h ấ t quán cấu trúc vừa hiệu 140 C h n g 9: Làm việc với C oo kie , S ession, va H eader xem cookie sử dụng cơng cụ cài sẵn Ví dụ, tro n g Mozilla Firefox, b ạn có th ể xem nội dung tấ t cookie xác lậ p tr ê n hệ thóag thơng qua m enu Tools I O ptions ! Privacy I Show Cookies n h m inh họa tro n g h ìn h 9.2 P ro ject 9-1: Saving and R estoríng User P reíerences Set Y our ru ỉịb t P r t í t r t ũ M Nârr.e Seat seỉecbon A u le '" V i n d c w ^ C eo icĩ Menl $eiscb«a VsgíUnân ^NoB-vefleteh» ^ i^iíbebc i ’s ỉ in ỉc re s te ô m ^ c c i a l o B e rỉ o n Cỉuld I7 in Q^4ă)tIIIII ã I i CootMrum* ôôô , , rtvng |_, tecttcỊt ^ -Slt *•» iKMhOK Qj ioc^ioM iKdhMt í Mm ■ — I~ t I , d> M Ũ fẩf>»Jvt9et ired Ị Coiitrit: ramd-tiv«g ' Ị tế ^ Hu«: ÍVKc i0 Hítht; I S e n ổ r o i: A i iv t ) W ị u f (O n re U v ' u p rt* T h j» w , ĩ » w y Ị , £000 3l ^fnpvg Hỏi chuyên gia H ỏ i: C c b iế n s e s s io n c ủ a kh ô ng đ ợc lưu T ô i p h ả i m đ â y? Đ p : N ếu c c b iế n s e s s io n kh ô ng đ ợ c đ ă ng ký m ộ t c ch c h ín h x c , c ó m ộ t s ố kh ả n ă ng bạn cầ n xem x é t trư ó c từ b ỏ v gọi c ả n h s t sessio n : C h o n g 9: Làm v iệ c với C ookie, S ession, H ea d e r 143 » Theo m ặc định, PHP ìidi d ũ liệu session irên sen>er sang thư mục / nnp Tiiy nhiên, bạn sử dụng Microsofl vc^indoios, thư mục s ẽ k h ô n g l ổ n t i I>à c c s c s s io n s ẽ k h ĩì g đ í i ợ c Itữ i m ộ t c c h c b i n b x c D ể g i ả i q iiv ế t đ iể n n v , m f i l e c ấ n h ìn h PH P, p h p in t v b iê n tập biến 'session.sam_ph'đềpbảrì ánh tb tím ụ c tạm hệ thống • Theo tnậc địĩỉh, PHP xác lập cookie trẽn ihống ngỉíời dùng t'ớ i đ ị n h d a n h s e s s io n N ế ti t r i n h d i iy ộ t c ủ a n g ỉ í i d ù n g đĩ(Ợ c x c l ậ p đ ể lử chối tất cookỉe, định danh scssion nàv SẼ khơng đỉíợc xác ỉ ậ p v t h ô n g l i n s e s s io n s ẽ k h ô n g đ i ỉợ c d u y t r ì t t r a n g n y đ ế n t r a n g k h c D ể g i ả i q iiy ổ l đ i ề u n y , ih a v v o đ ó b n c ó ỉ h ể c h u y ể n đ ịn h d a n h s e s s io n tì( tr a n g n v đ ế n tr a n g k h c n h i í m ộ t p h ầ n c ủ a c h u ỗ i URL ( m ặ c d ù d i ề u n v k é m a n t o n b n ) b n g v i ệ c x c l ậ p biến 'session.tise_trans_sid' Jìle cấn hình PỉiP sang tnie u Mọi session PHP có giá trị timeoiit - thời bạn tính bàng giâv s e s s i o n v ẫ n " c ò n s ố n g " tr o n g b a o lă ii n ế u k h ô n g c ó b ấ t ^ h o t đ ộ n g ngicời dùng Trong m ơtsố tncờng bợp giá irỊ timeoni đĩcợc x c lậ p q iiá th ấ p c h o ứ n g d ụ n g d ẫ n đ ế n c c s e s s io n đ u ợ c t ự đ ộ n g b ủ y q u s m B n c ó t h ể đ i ể ỉ i c h ỉ n h g i t r ị H m e o u l n v b n g v iệ c ( b a y đ ổ i b i ế n 's e s s iO ìì.g c _ m a x liJ c tiin e ' tr o n g f i l e c ấ u h ì n h P H P Loại bỏ session biến session Để hủy đ ăn g ký (unregister) m ột biến session cụ th ể, việc hủy xác lập (unset) k ey tương ứng m ảng $_SESSION: N hư b ạn biết, gỏi m ột h ead er HTTP sau k h i sc rip t tạo đẩu xung quanh m ột lỗi Bạn có th ể trá n h lỗi n ày b ằn g việc trước tiê n te s t xem có h ead er đ gởi b ằn g h àm h ead er_ sen t P H P h ay không Xem x ét ví dụ sau m inh họa:

Ngày đăng: 03/12/2015, 19:31

TỪ KHÓA LIÊN QUAN

w