Lập trình Web động với PHP/ MySQL

Kiến trúc cơ bản

Kiến trúc căn bản nhất để trang Dynamic Web hoạt động được là nó phải làm việc

trên mô hình client/server. Nôm na là mỗi thứ client hay server đều đảm đương một

chức năng riêng để hoàn thành công việc chung đó là cho ra một trang Web động.

Các bạn có lẽ đã quen thuộc với chương trình WinWord để soạn văn bản, nó có thể

hoạt động độc lập trên bất kỳ máy tính nào chẳng cần quan tâm tới cái gì là client hay

cái gì là server. Ứng dụng Web thì khác hẳn, phải có một mô hình server có thể làmột máy tính làm server thôi, nhằm tập trung hoá việc xử lý dữ liệu. Còn các client,

còn được hiểu nôm na là máy tính của người sử dụng phải được nối mạng với server,

giả sử các máy này truy cập vào một Website chẳng hạn, thì có nghĩa họ đã truy cập

vào server, sau đó lấy dữ liệu từ server về thể hiện lên máy mình. Cùng một lúc có

thể có hàng trăm người (client) truy cập vào cùng một Website được xử lý tập trung

trên server, tương tự như một đám trẻ xúm nhau giành phần của mình từ một cái bánh.

Client (người Việt tạm đọc là klai-ờn)

Các ứng dụng mà bạn phát triển trên nền MySQL và PHP sử dụng tính năng single

client đó là trình duyệt Web. Tuy nhiên, không phải đây chỉ là ngôn ngữ duy nhất để

phát triển ứng dụng Web. Đối với những ứng dụng phức tạp đòi hỏi multi-client hoặc

cần các tính năng bảo trì (chúng ta sẽ bàn tính năng này sau), thì ứng dụng Java

applet sẽ hữu dụng cho việc này. Chỉ trừ trường hợp bạn cần sử dụng ứng dụng thời

gian thực như ứng dụng chat chẳng hạn, thì bạn Java Applet mới cần thiết. Ở đây

chúng ta không bàn tới lập ứng dụng cho chuyện tán gẫu mà chỉ tập trung vào ứng

dụng duyệt Web nên không đụng chạm gì tới Java Applet cả.Như bạn đã biết ngôn ngữ khởi thuỷ cho việc duyệt Web là HTML. HTML cung cấp

hàng tá những thẻ lệnh (Tag) cho phép thể hiện trang Web theo nhiều kiểu cách khác

nhau. Nếu bạn chưa có kiến thức cơ sở về HTML thì có thể chạy ra ngoài mua ngay

một quyển sách hoặc download trên internet xuống các bài học hướng dẫn. Bạn

không nên bỏ ra quá nhiều thời gian để học về HTML. Ngoài HTML ra các trình

duyệt Web còn cho phép các add-in hỗ trợ nhiều thứ khác như RealPlayer, Flash,

Shockwave, hoặc hỗ trợ về Javascript hoặc XML. Nhưng ở đây chúng tôi chỉ tập trung

trên những gì cần thiết cho sự hội nhập của bạn – đó là HTML.

 

pdf 132 trang yennguyen 5500
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình Web động với PHP/ MySQL", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Lập trình Web động với PHP/ MySQL

Lập trình Web động với PHP/ MySQL
 LẬP TRÌNH WEB ĐỘNG VỚI 
 PHP / MySQL 
™ GUESTBOOK 
™ CATALOG 
™ FORUM 
™ SHOPPING CART 
PHẦN 1 
Tống Phước Khải (tổng hợp& biên dịch) 
Giới thiệu 
Chúng ta hãy thực hiện một chuyến đi thần thoại, trong chuyến đi này chúng ta sẽ 
khám phá ngoại hình cũng như nội tại của MySQL và PHP một cách thật tỉ mỉ. Đây là 
một cuộc hành trình đầy những thú vị và bất ngờ. 
Okie, có lẽ tôi có vẻ hơi lạc quan phải không các bạn. Nếu như bạn đồng quan điểm 
với tôi trên một phương diện nào đó, trong cuộc hành trình này bạn sẽ có ngay sự giúp 
đỡ mỗi khi gặp phải những sự nhàm chán. Hãy đối mặt sự thật ngay nhé: Trò chơi lập 
trình ứng dụng không phải lúc nào cũng dễ nuốt đâu. Trong bất kỳ cuộc thám hiểm 
nào thì chắc chắn các bạn sẽ phải có những giây phút nản lòng, đó là lúc gặp phải sự 
cố lỗi cú pháp hoặc đôi khi là những đoạn mã không cho kết quả như mong muốn. 
Nhưng ngoài những việc đó ra, tôi nghĩ là có một lý do thật chính đáng đến các bạn 
đến với chúng tôi ở đây. Lập trình Web đang là một cuộc chơi đầy hứa hẹn hiện nay 
cũng như tương lai. Bất kể bạn có kiến thức cơ sở lập trình cho bất kỳ loại ngôn ngữ 
nào như Visual Basic, Cobol, hay bạn chỉ biết về HTML và JavaScript, thì hôm nay 
bạn vẫn có cơ hội để nắm bắt các kinh nghiệm mới mẻ về lập trình ứng dụng Web. 
Tôi nghĩ là không có sự kết hợp nào tốt hơn giữa PHP và MySQL. Số lượng người sử 
dụng ngôn ngữ này càng gia tăng, PHP và MySQL đã trở thành rất thông dụng, 
những đòi hỏi lượng người biết các công cụ lập trình này cũng tăng theo. Một chút xíu 
nữa tôi sẽ nói rõ cho bạn biết tại sao lại phải sử dụng PHP và MySQL. Nhưng trước 
hết tôi muốn bạn hãy khảo sát qua kiến trúc sơ bộ của ứng dụng Web. Vì chỉ khi bạn 
nắm bắt được điều này thì tôi mới có thể tiếp tục trình bày chi tiết rằng tại sao PHP và 
MySQL là trung tâm của môi trường phát triển ứng dụng Web. 
Trước khi tiếp tục, tôi nghĩ rằng bạn đã đọc những gì tôi đã giới thiệu và hiểu nó. Chúng ta tiếp tục đi 
thôi! 
Kiến trúc cơ bản 
Kiến trúc căn bản nhất để trang Dynamic Web hoạt động được là nó phải làm việc 
trên mô hình client/server. Nôm na là mỗi thứ client hay server đều đảm đương một 
chức năng riêng để hoàn thành công việc chung đó là cho ra một trang Web động. 
Các bạn có lẽ đã quen thuộc với chương trình WinWord để soạn văn bản, nó có thể 
hoạt động độc lập trên bất kỳ máy tính nào chẳng cần quan tâm tới cái gì là client hay 
cái gì là server. Ứng dụng Web thì khác hẳn, phải có một mô hình server có thể là 
một máy tính làm server thôi, nhằm tập trung hoá việc xử lý dữ liệu. Còn các client, 
còn được hiểu nôm na là máy tính của người sử dụng phải được nối mạng với server, 
giả sử các máy này truy cập vào một Website chẳng hạn, thì có nghĩa họ đã truy cập 
vào server, sau đó lấy dữ liệu từ server về thể hiện lên máy mình. Cùng một lúc có 
thể có hàng trăm người (client) truy cập vào cùng một Website được xử lý tập trung 
trên server, tương tự như một đám trẻ xúm nhau giành phần của mình từ một cái bánh. 
Client (người Việt tạm đọc là klai-ờn) 
Các ứng dụng mà bạn phát triểân trên nền MySQL và PHP sử dụng tính năng single 
client đó là trình duyệt Web. Tuy nhiên, không phải đây chỉ là ngôn ngữ duy nhất để 
phát triển ứng dụng Web. Đối với những ứng dụng phức tạp đòi hỏi multi-client hoặc 
cần các tính năng bảo trì (chúng ta sẽ bàn tính năng này sau), thì ứng dụng Java 
applet sẽ hữu dụng cho việc này. Chỉ trừ trường hợp bạn cần sử dụng ứng dụng thời 
gian thực như ứng dụng chat chẳng hạn, thì bạn Java Applet mới cần thiết. Ở đây 
chúng ta không bàn tới lập ứng dụng cho chuyện tán gẫu mà chỉ tập trung vào ứng 
dụng duyệt Web nên không đụng chạm gì tới Java Applet cả. 
Như bạn đã biết ngôn ngữ khởi thuỷ cho việc duyệt Web là HTML. HTML cung cấp 
hàng tá những thẻ lệnh (Tag) cho phép thể hiện trang Web theo nhiều kiểu cách khác 
nhau. Nếu bạn chưa có kiến thức cơ sở về HTML thì có thể chạy ra ngoài mua ngay 
một quyển sách hoặc download trên internet xuống các bài học hướng dẫn. Bạn 
không nên bỏ ra quá nhiều thời gian để học về HTML. Ngoài HTML ra các trình 
duyệt Web còn cho phép các add-in hỗ trợ nhiều thứ khác như RealPlayer, Flash, 
Shockwave, hoặc hỗ trợ về Javascript hoặc XML. Nhưng ở đây chúng tôi chỉ tập trung 
trên những gì cần thiết cho sự hội nhập của bạn – đó là HTML. 
Server (người Việt tạm đọc là sơ-vơ) 
Hầu hết các ứng dựng Web đều hoạt động tập trung trên Server. Một ứng dụng đặc 
trưng gọi là Web Server sẽ đảm trách việc giao tiếp với các trình duyệt. Một Cơ sở dữ 
liệu (CSDL) trên Server sẽ lưu trữ tất cả những thông tin đáp ứng yêu cầu cho công 
việc của ứng dụng Web. Kế tiếp, bạn cần phải có một ngôn ngữ làm vai trò "chú bé 
liên lạc" giữa Web Server và CSDL trên server. Ngôn ngữ này cũng thực hiện các 
công việc xử lý thông tin đến và đi từ Web Server. 
MIDDLE WARE 
(PHP, ASP, JSP) 
DATABASE 
SERVER 
(MySQL, 
SQLserver..) 
WEB 
SERVER 
(Apache, IIS) 
INTERNET
WEB BROWSER 
(Internet Explorer, Netscape) 
Và dĩ nhiên là các thứ này sẽ chẳng hoạt động được nếu như không chạy trên một Hệ 
Điều Hành (HĐH). Các thứ như Web Server, Ngôn ngữ lập trình, CSDL phải hoạt 
động tốt trên một HĐH nào đó. 
 Hệ điều hành 
Có rất nhiều chủng loại HĐH. Windows 98/XP và Linux có lẽ rất phổ biến với tất cả 
mọi người. Có trường hợp bạn làm việc trên HĐH mà ít ai biết tới và bạn chỉ có ấn 
tượng thích sử dụng nó mà thôi. Hãy gác qua những ý tưởng đó nếu như bạn thật sự 
muốn đi trên con đường thiết kế web. Hãy trang bị cho mình kiến thức về HĐH 
WinNT /2000 /2003 và Unix đi. Việc làm này sẽ rất có ích hơn là chuyện bảo mọi 
người nên đi học một khoá về AS/400. 
Bạn sẽ sử dụng loại nào trong các thứ nói trên đây? Okie, đây là một câu hỏi hơn rắc 
rối đấy. Câu trả lời ở đây là tuỳ thuộc bạn là "tín đồ" của HĐH nào. Nếu như bạn vẫn 
chưa rõ ràng về điều này, hãy để tôi nói cho bạn nghe về "chiến tranh giáo phái 
HĐH". 
Nếu bạn chưa hiểu được tôi đang nói gì, thì đây là các kiến thức cơ bản: PHP và 
MySQL thuộc nhóm phần mềm ứng dụng có tên gọi là open source (nguồn mở). Việc 
này có nghĩa là người dùng sẽ xem được mã nguồn của các ứng dụng sử dụng 
PHP/MySQL. Chúng tận dụng được mô hình phát triển dựa vào nguồn mở, cho phép 
người nào cảm thấy thích nó đều có thể góp phần vào việc phát triển các dự án. 
Trong trường hợp của PHP, các lập trình viên trên toàn thế giới tham gia vào việc 
phát triển ngôn ngữ và không trông chờ một khoản lợi nhuận nào. Phần lớn những 
người tham gia công việc đều có niềm đam mê việc tạo ra một sản phẩm phần mềm 
tốt, họ sẽ cảm thấy thích thú khi thấy người khác sử dụng các công cụ của họ như tôi 
và bạn chẳng hạn. 
Phương pháp nguồn mở này ban đầu chỉ còn là những vòng lẩn quẩn mà thôi, nhưng 
về sau đã trở thành đầy tiềm lực khi có sự ra đời và trở nên phổ biến của bộ nguồn 
mở Linux. Hầu như các nguồn mở đều miễn phí, bạn có thể download, cài đặt và sử 
dụng chúng mà không cần phải đợi sự cho phép hay phải trả tiền cho bất kỳ ai. 
Phương thức này thì Microsoft, Oracle hay một số các công ty lập trình nào khác 
không thể đáp ứng được. 
Nếu bạn không phải là tín đồ của phái nguồn mở, thì hãy chọn công cụ được coi là 
béo bở: NT/2000/2003. Nếu công ty của bạn đã sử dụng sản phẩm của Microsoft 
nhiều năm rồi thì mọi việc sẽ trở nên dễ dàng nếu bạn muốn duy trì làm việc với môi 
trường này. Nếu bạn là thành viên của nhóm lập trình Visual Basic, có lẽ bạn sẽ gắn 
bó với NT/2000/2003. Ngay cả trong trường hợp này, không có trở lực nào ngăn cản 
bạn trong công việc phát triển với công cụ PHP và MySQL. Bạn cũng có thể thử 
nghiệm PHP/MySQL trên nền HĐH Windows 95, 98, XP. 
Web Server 
Chức năng của Web Server có vẻ không phức tạp mấy. Nó chỉ ở tại chỗ, chạy trên 
nền của HĐH, lắng nghe các yêu cầu ai đó trên Web gởi đến, sau đó trả lời những 
yêu cầu này, và cấp phát những trang Web thích ứng. Thực tế thì nó không quá đơn 
giản như vậy, bởi vì nhiệm vụ của Web Server là phải cung cấp tính ổn định cho môi 
trường Web cho nên đòi hỏi này phải được đáp ứng một cách rất nghiêm túc. 
Có nhiều loại Web Server khác nhau, nhưng chủ yếu trên thị trường chỉ thường sử 
dụng Apache và IIS (Internet Information Server của Microsoft). 
INTERNET INFORMATION SERVER (IIS) được gắn liền với môi trường Windows 
và nó là thành phần không thể thiếu của Active Server Pages (ASP). Nếu bạn chọn 
con đường của Microsoft thì có lẽ bạn đã hiểu rõ về IIS. 
Có một sự tích hợp nhất định giữa một ngôn ngữ lập trình và một Web Server. Cũng 
vậy, PHP4 được tích hợp rất tối đối với IIS. Trước đây, có một số vấn đề cần phải bàn 
về tính ổn định của PHP/IIS với việc truyền tải lớn, nhưng PHP và IIS cũng đã được 
cải thiện liên tục nên việc này không còn đáng phải bận tâm. 
APACHE là một kiểu mẫu Web Server rất phổ biến. Giống như Linux, PHP, MySQL 
nó là một dự án nguồn mở. Không có gì ngạc nhiên khi người ta thấy Apache được hỗ 
trợ rất tốt trên môi trường Unix, nhưng chỉ khá tốt trong Windows. 
Apache tận dụng được tính năng của third-party. Bởi vì đây là nguồn mở nên bất kỳ ai 
có khả năng đều có thể viết chương trình mở rộng tính năng của Apache. PHP hoạt 
động với tư cách là một phần mở rộng của Apache, và người ta gọi là một module của 
Apache. 
Apache có tính ổn định và tốc độ đáng phải nói. Tuy nhiên, cũng có một số sự phàn 
nàn về nó là không hỗ trợ công cụ đồ hoạ trực quan, điều có thể giúp người ta làm 
việc một cách dễ dàng hơn. Bạn phải thực hiện các thay đổi đối với Apache bằng 
cách sử dụng dòng lệnh, hoặc sử các tập tin text trong folder chương trình Apache. 
Nếu lần đầu đến với Apache thì bạn sẽ gặp một chút lạ lẫm. 
Mặc dù Apache chỉ làm việc tốt trên Unix, nhưng cũng có những phiên bản chạy tốt 
trên hệ Windows. Không một ai, kể cả các nhà phát triển Apache đề nghị rằng 
Apache nên được chạy trên một server Windows bận rộn. Nếu bạn quyết định chọn 
HĐH Windows cho server thì bạn nên sử dụng IIS. Nếu bạn thử nghiệm ứng dụng 
trên Windows và sau đó đem upload và chạy trên Unix/Apache của nhà cung cấp host 
thì cũng không hề hấn gì, ứng dụng của bạn vẫn chạy ngon lành. 
Middleware 
PHP thuộc lớp ngôn ngữ lập trình gọi là middleware. Các ngôn ngữ này hoạt động 
cận kề với Web Server để thông dịch các yêu cầu từ trên World Wide Web, sau đó 
nhận các trả lời từ Web Server chuyển tải đến trình duyệt Web nhằm đáp ứng các 
yêu cầu đó. 
Middleware là nơi mà bạn sẽ thực hiện các khối lượng rất lớn công việc chính yếu 
của bạn. Với hỗ trợ này Web Server của bạn sẽ không phải cán đáng quá nhiều khối 
lượng công việc. Nhưng khi bạn phát triển ứng dụng của bạn, bạn sẽ tốn nhiều thời 
gian viết mã chương trình để cho chương trình của bạn có thể hoạt động được. Ngoài 
PHP ra có một số ngôn ngữ khác có chức năng tương đương như ASP, Perl, 
ColdFusion. 
Hệ CSDL quan hệ 
Relational Database Management Systems (Hệ Quản trị Cơ Sở Dữ Liệu Quan hệ - 
RDBMSs) cung cấp phương thức tuyệt vời để lưu trữ và truy xuất lượng thông tin lớn 
và phức tạp. Nó đã ra đời khá lâu. Thực tế, nó có trước Web, Linux và WindowsNT, 
cho nên không có gì ngạc nhiên khi có quá nhiều hệ CSDL để chọn lựa. Tất cả các 
CSDL này đề dựa trên cơ sở SQL (Structure Query Language). 
Một số hệ phổ biến như Oracle, Sysbase, Informix, Ms SQL Server, IBM's DB2. 
Hệ nguồn mở thông dụng hiện nay là MySQL mà quyển sách này đề cập đến, ngoài 
ra còn có hai hệ nguồn mở khác là PostgresSQL đã một thời thay thế MySQL và 
Interbase là bộ nguồn mở của Borland giới thiệu vào tháng 8/1999. 
Tại sao sử dụng PHP và MySQL 
Tại sao có quá nhiều chọn lựa như vậy mà chúng ta lại phải chỉ lấy ra cặp bài trùng 
PHP/MySQL mà thôi? Tôi sẽ giải thích điều naỳ ở phần sau. 
Nói về PHP 
Các ngôn ngữ lập trình xem ra giống như các loại giày dép. Có loại có vẻ bắt mắt với 
một số người này, nhưng lại khó ưa với người khác và ngược lại. Một số người chỉ 
thích sử dụng một hiệu giày nào đó đã quen thuộc và ngôn ngữ lập trình cũng tương tự 
như vậy. 
Ở đây tôi muốn ngụ ý với các bạn là khi lập trình Web, các ngôn ngữ lập trình đều 
cho kết quả gần giống nhau. Câu hỏi ngôn ngữ nào tốt nhất không phải là vấn đề nó 
không có khả năng thực hiện một số chức năng nào đó mà thường là nó có làm cho 
bạn thực hiện công việc một cách nhanh chóng và đỡ nhọc công hay không? 
Tốc độ nhanh, dễ sử dụng 
Chúng ta hãy bàn về tốc độ. Có 3 thứ mà tôi chắc chắn khi bàn về việc so sánh tốc độ 
giữa các ngôn ngữ lập trình Web. Thứ nhất, ứng dụng viết bằng C chạy nhanh nhất. 
Thứ hai, công việc lập trình C khá là phức tạp, và sẽ ngốn nhiều thời gian hơn. Thứ 
ba, việc so sánh giữa các ngôn ngữ là một điều khó khăn. Tất cả những gì tôi biết là 
tôi cảm thấy yên tâm khi nói rằng PHP cũng nhanh như các ngôn ngữ khác. Trở lại ví 
dụ so sánh với các loại giày dép: Vina, Đông Hải, Kiến Hoa, Hồng Thạnh, Italy v.v., 
chắn chắn bạn sẽ chọn loại tiện dụng nhất? Nếu bạn giống như tôi, bạn sẽ cảm thấy 
rằng PHP có đầy đủ các đặc tính như khả năng, cấu trúc và dễ sử dụng. Xin nói thêm, 
đây chỉ là cách nhìn riêng của tôi thì tôi tin rằng cú pháp PHP tuyệt hơn ASP hay JSP. 
Và theo tôi thì việc gõ lệnh PHP nhanh hơn ... okie ở chương 6. Còn bây giờ bạn tìm hiểu sơ lược các chức 
năng thông qua một ví dụ: 
setcookie("my_cookie", 
"my_id",time()+(60*60*24*30),"/",".mydomain.com", 0) 
Lệnh trên sẽ phát sinh một cookie với các chức năng sau: 
- Chứa một biến tên là my_cookie 
- Giá trị của mycookie my_id 
- Cookie tồn tại trong vòng 30 ngày kể từ ngày nó phát sinh (time()+(30*24*60*60) 
ngày giờ hiện tại + 30 ngày được quy ra giây). 
- Cookie có tác dụng đến tất cả các trang trong domain. Bạn có thể hạn chế lại bằng các chỉ 
ra đường dẫn đến một số trang nào đó trong domain. 
- Nó sẽ hiện diện trong tất cả các website có địa chỉ  
- Không có xác lập đặc biệt nào về bảo mật. 
Một khi cookie được xác lập, các biến phát sinh từ cookie có tác dụng giống như biến phát 
sinh từ form mà chúng ta đã bàn trước đây. Chúng sẽ hiện diện với chức năng là biến global. 
Sau khi script PHP xác lập cookie, các script khác trong domain có thể truy cập cookie một 
cách tự động. 
Nếu như bạn muốn cẩn thận hơn để $mycookie không xung đột với một biến nào khác cũng 
có tên $mycookie, bạn có thể truy xuất nó thông qua mảng HTTP_COOKIE_VARS và sử 
dụng lệnh: HTTP_COOKIE_VARS["mycookie"]. 
Bạn có thể xác lập cookie cung cấp khả năng truy xuất như là một mảng: 
setcookie("mycookie[first]","dddd",time()+2592000,"/","192.168.1.
1", 0); 
setcookie("mycookie[second]","my_second_id",time()+2592000,"/","1
92.168.1.1", 0); 
Cả hai biến trên đều có thể truy cập đến như là một mảng liên hợp. 
Sessions 
PHP4 cũng giống như ASP và ColdFusion đều có hỗ trợ session, việc này giúp ích rất nhiều 
cho việc truy cập web. Vậy session là gì? 
Đơn giản nó chỉ là một cách thức để duy trì và truyền biến trong khi chuyển tiếp giữa các 
trang web. Chương trình của bạn khai báo một session được bắt đầu với hàm start_session(). 
PHP đăng ký một SesssionID duy nhất, và thường thì ID này được gởi đến user thông qua một 
cookie. PHP sau đó tạo một tập tin trên server để theo dõi sự thay đổi của biến. Tập tin này 
có tên giống như tên của SessionID. 
Một khi session được tạo, bạn có thể đăng ký bất kỳ số lượng biến. Các giá trị của những biến 
này được lưu giữ trong tập tin trên server. Cũng như sự tồn tại của cookie, các biến trong 
session sẽ hiện diện trên bất kỳ trang nào được truy cập đến trong phạm vi một domain. Việc 
xác lập này rất thuận tiện hơn là chuyển tiếp các biến từ trang này sang trang khác thông qua 
các phần tử ẩn trong form hay cookie. 
Session nói chung là khá đơn giản. Hãy xem script sau sẽ đăng ký một biến session tên là 
$my_var, và sẽ gán cho nó một giá trị là "hello world". 
<? 
session_start(); 
session_register("my_var"); 
$my_var = "hello world"; 
?> 
Trên những trang tiếp theo biến $my_var sẽ hiện diện, nhưng chỉ sau khi bạn chạy hàm 
sesssion_start(). Hàm này bảo PHP tìm kiếm một session xem có tồn tại hay không, rồi làm 
cho các biến session trở thành global. Nó có thể sử dụng câu lệnh IF để làm cho các biến 
session hoàn toàn có thể truy cập được. Hãy xem xét ví dụ sau: 
<?php 
session_start(); 
session_register("your_name"); 
//check to see if $your name contains anything 
if(!empty($your_name)) 
{ 
echo "I already know your name, $your_name"; 
} 
//this portion will probaby run the first time to 
//this page. 
elseif(empty($your_name) && !isset($submit)) 
{ 
echo " 
 first name 
 last name 
"; 
//if the form has been submitted, this portion will 
//run and make an assignment to $your_name. 
} elseif (isset($submit) && empty($your_name)) 
{ 
$your_name = $first_name . " " . $last_name; 
echo "Thank you, $your_name"; 
} 
Sau khi chạy chương trình này, chọn refresh trên trình duyệt. Bạn sẽ thấy script sẽ nhớ được 
rằng bạn là ai. 
Các hàm setcookie() và session_start() nên ở vị trí gần đầu tập tin. Nếu bạn thử chuyển đến 
trình duyệt trước để xác lập một cookie bạn sẽ nhận được một thông báo lỗi. 
Biến sẵn có 
Có rấ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(); 
?> 
Bạn có thể sử dụng các biến này bằng nhiều cách thức khác nhau. Tôi sẽ trình bày một sau 
ngay sau đây, và sẽ chỉ ra bạn nên dùng vào trường hợp nào. Một số biến đến từ PHP engine, 
một số khác bắt nguồn từ Webserver. 
Biến sẵn có của PHP 
PHP_SELF 
Biến này nhận giá trị là địa chỉ hiện tại của tập tin .php đang được duyệt. Địa chỉ này sẽ là địa 
chỉ đầy đủ từ gốc (bắt đầu từ http://) . Bạn sẽ sử dụng nó khi muốn truy cập lại chính trang 
web đang thi thành. 
Xét ví dụ sau, đây là một form tương tự như form sign.php mà các bạn đã có dịp xét qua. Nếu 
khách thực hiện thao tác khác với submit thì chính form này sẽ được thi hành lại: 
<? 
if(isset($submit)) 
{ 
//Xuat ra thong bao tai day 
echo "Cam on ban da submit"; 
} else { 
?> 
> 
 first name 
 last name 
<? 
} 
?> 
HTTP_POST_VARS 
Đây là một mảng chứa tất cả các biến được chuyển tiếp thông qua POST method từ một form. 
Bạn có thể truy cập từng biến riêng rẽ như là một phần tử của mảng liên hợp (ví dụ: 
$PHP_POST_VARS["myname"]). 
HTTP_GET_VARS 
Đây là một mảng chứa tất cả các biến được chuyển tiếp thông qua GET method. Bạn có thể 
truy cập từng biến riêng rẽ như là một phần tử của mảng liên hợp (ví dụ: 
$PHP_GET_VARS["myname"]). 
HTTP_COOKIE_VARS 
Tất cả các cookie chuyển đến trình duyệt đều có thể được truy xuất trong mảng liên hợp này. 
Nó bao gồm cả session cookie. Nếu bạn còn thắc mắc cookie sẽ thi hành như thế nào thì hãy 
xem hàm phpinfo() để biết được trình duyệt của bạn đang chuyển đến server những gì. 
BIẾN CỦA APACHE 
Apache có sẵn rất nhiều biến. Tôi không trình bày đầy đủ tất cả các biến ra đây. Các biến 
bạn sử dụng, chúng tuỳ thuộc vào xác lập hiện tại của bạn như thế nào. Sau đây là một số 
biến mà có lẽ bạn sẽ sử dụng thường xuyên trong chương trình của bạn. 
DOCUMENT_ROOT 
Biến này trả về đường dẫn của Webserver. Biến này được tôi sử dụng trong xuyên suốt quyển 
sách này. Hãy xét ví dụ sau: 
include"$DOCUMENT_ROOT/book/functions/charset.php"; 
Bằng cách sử dụng biến DOCUMENT_ROOT thay vì dùng đường dẫn tuyệt đối, chúng ta có 
thể di chuyển toàn bộ một thư mục sang một Apache Server khác mà không lo lắng rằng 
đường dẫn sẽ bị sai lệch trong include path. Nên nhớ rằng nếu như bạn không sử dụng Apache 
Server thì biến này không sử dụng được. Nếu bạn sử dụng include_path trong tập tin php.ini, 
bạn không cần phải lo lắng phải xác định đường dẫn như thế nào bởi vì PHP sẽ duyệt hết tất 
cả các thư mục và tìm ra tập tin bạn đã chỉ định. 
HTTP_USER_AGENT 
Bất kỳ ai đã từng thiết kết Web site đều hiểu rằng tầm quan trọng của việc nhận dạng được 
trình duyệt của người sử dụng là gì. Một số trình duyệt thì không sử dụng được JavaScript, 
một số khác thì đòi hỏi dạng HTML đơn giản. Biến user_agent cung cấp cho bạn khả năng 
uyển chuyển đối với từng trình duyệt khác nhau. Một user_agent chuẩn có dạng như thế này: 
Mozilla/4.0 (compatible; MSIE 5.01; Windows 98) 
Nếu bạn phân tích chuỗi này ra bạn sẽ biết được những gì bạn cần tìm. Có thể bạn chỉ 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 vụ tốt hay không. Các sách PHP có những hướng dẫn về cách cài đặt và sử dụng 
get_browser(), nhưng tôi khuyên bạn không nên sử dụng nó. Bởi vì sử dụng get_browse bạn 
sẽ được bảo rằng IE 5 dùng cho PC và Netscape 4.01 dùng cho Mac có hỗ trợ CSS (cascading 
stylesheets) và JavaScript. Nhưng bất kỳ người sử dụng nào cũng biết rằng: viết lệnh DHTML 
để chạy trên cả hai môi trường trình duyệt này là một công việc phức tạp. Thông tin bạn nhận 
được từ get_browser() có thể dẫn đến những tính năng giả trong bảo mật. Cách tốt nhất là bạn 
sử dụng HTTP_USER_AGENT và thực hiện quyết định của mình dựa trên trình duyệt hoặc 
platform xác định nào đó. 
REMOTE_ADDR 
Dùng để lấy địa chỉ IP của user. Tuy nhiên có những user am hiểu chuyện này và có thể họ 
thay đổi IP của máy mình. Cho nên không lấy gì để đảm bảo rằng: một địa chỉ IP chắn chắn 
là của một user nào đó. Bạn sử dụng biến này để theo dõi sự truy nhập của một user nhưng 
nó chỉ mang tính tương đối thôi. 
REQUEST_URI 
Biến này cũng giống như biến PHP_SELF. Ngoài ra nó còn chứa thêm tham số trong địa chỉ 
truy vấn . Nếu bạn truy cập vào địa chỉ: 
Thì biến REQUEST_URI của bạn có giá trị là: info/products/index.php?id=6 
SCRIPT_FILENAME 
Biến này chứa toàn bộ đường dẫn của tập tin. 
Kiểm tra biến 
Ở trên chúng ta đã nói nhiều về Biến. Như các bạn biết đó, tên của một biến không quan 
trọng bằng giá trị mà nó chứa trong đó. Như tôi đã nói Biến trong PHP rất uyển chuyển. Điều 
này phát sinh sự bất lợi là bạn sẽ không biết ở tại một thời điểm nào đó thì biến này sẽ mang 
giá trị gì. Do đó bạn cần phải thực hiện thao tác kiểm tra biến. 
isset( ) 
Hàm này thực hiện việc kiểm tra biến có chứa giá trị hay không. Nó sẽ trả về giá trị TRUE 
hoặc FALSE. Nếu biến chưa được xác lập thì trị isset() sẽ là false. 
Bạn hãy xem xét ví dụ sau, nó thi hành một query MySQL. Bạn đã biết rằng một field trong 
database có thể chứa trị null hoặc chuỗi rỗng. Với việc sử dụng hàm isset() bạn sẽ kiểm tra và 
phân biệt được hai giá trị trên. Trong đoạn lệnh PHP bên dưới. Trong đó biến $query là một 
phát biểu SELECT lấy dữ liệu submit từ form của user. 
$result = mysql_query($query) or 
die (mysql_error()); 
$number_cols = mysql_num_fields($result); 
echo "query: $query\n"; 
//layout table header 
echo "\n"; 
echo "\n"; 
for ($i=0; $i<$number_cols; $i++) 
{ 
echo "", mysql_field_name($result, $i), "\n"; 
} 
echo "\n";//end table header 
//layout table body 
while ($row = mysql_fetch_row($result)) 
{ 
echo "\n"; 
for ($i=0; $i<$number_cols; $i++) 
{ 
echo ""; 
if (!isset($row[$i])) //test for null value 
{echo "NULL";} 
else 
{echo $row[$i];} 
echo "\n"; 
} 
echo "\n"; 
} 
echo ""; 
Lưu ý rằng dấu chấm than (!) có nghĩa là phủ định. 
Tức là nếu $var có giá trị null thì: 
 isset($var) cho ra giá trị False 
!isset($var) cho ra giá trị True 
empty() 
Hàm empty() có vẻ ngược ngạo so với hàm isset(). Nó sẽ cho ra trị True nếu $var có trị null, 
chuỗi rỗng hoặc số 0. Hàm này thường được sử dụng để kiểm tra xem user có nhập trị vào 
trong form hay không: 
if(empty($first_name)) 
{ 
echo "Ban can phai nhap ten cua minh"; 
exit; 
} 
is_int( ) 
Hàm này để kiểm tra biến có phải là số nguyên hay không. Có 2 cú pháp khác cho cùng kết 
quả như nó là: is_integer và is_long(). Bạn sử dụng hàm này khi không chắc rằng biến là một 
trị nguyên hay chuỗi. Ví dụ: 
$a = "222"; 
$b = 22; 
is_int($a) cho ra trị False 
is_int($b) cho ra trị True 
Tương tự bạn sẽ có một loạt hàm kiểm tra kiểu của biến sau đây: 
is_double() 
Kiểm tra số kiểu double (dấu phẩy động). Hàm thay thế: is_float() và is_real(). 
is_string( ) 
Kiểm tra kiểu chuỗi. 
is_array( ) 
Kiểm tra kiểu mảng. 
is_bool( ) 
Kiểm tra kiểu boolean (TRUE và FALSE) 
is_object( ) 
Kiểm tra biến kiểu object. Bạn sẽ tìm hiểu kiểu object trong các phần sau. 
gettype( ) 
Hàm này sẽ cho bạn biết kiểu của biến như: string, double, integer, array, hoặc boolean. 
Ngoài ra nó có trả về các kiểu như object, class. Bạn sẽ khảo sát kỹ về việc lập trình hướng 
đối tượng trong các phần sau để biết thêm về object và class. 
Lưu ý trị của hàn gettype() trả về luôn là một chuỗi: "string", "integer", "double" v.v. 
Bạn hãy xem ví dụ sau: 
$str = "Day la mot chuoi"; 
$type = gettype($str); 
if ($type == "string") 
{ 
echo "Dung vay"; 
} 
Đổi kiểu của biến 
Bạn sẽ sử dụng 3 cách để đổi kiểu của biến. 
Phương pháp type casting 
Phương pháp này rất đơn giản: Bạn chỉ cần ghi tên kiểu ra, đóng ngoặc đơn lại, rồi đặt trước 
biến. Tức khắc biến sẽ bị đổi theo kiểu mà bạn muốn. 
Cách thức: (kiểu) $biến 
Ví dụ: 
$a = 1; 
$b = (string)$a; //số 1 sẽ biến thành chuỗi 1 
echo gettype($a), "\n"; 
echo gettype($b), "\n"; 
Kết quả cho ra là: 
integer 
string 
Sử dụng hàm settype( ) 
Hàm này có 2 đối số. Thứ nhất là tên biến, thứ nhì là kiểu. Ưu điểm của nó là nó có thể cho 
ra kết quả FALSE nếu như việc hoán đổi không được. 
Cách thức: settype($biến, "kiểu") 
Ví dụ: 
$a = 1; 
settype($a, "string"); 
Sử dụng hàm intval( ), doubleval( ), và stringval( ) 
Phương pháp này thường để bạn áp dụng nhanh trong khi tính toán. Có lẽ nhìn tên hàm bạn 
cũng biết được chức năng của nó rồi. Hãy xét ví dụ sau: 
$a = "43";/ /43 là kiểu chuỗi 
$b = (intval($a) * 2); 
Biến của biến 
Nghe qua có vẻ lạ lạ, nhưng đây là một "độc chiêu" của PHP. Với cách thức này bạn sẽ lấy 
giá trị của một biến để hình thành tên của một biến mới. 
Cách thức: $$biến 
Ví dụ: 
$a = ‘khai’; 
$$a = ‘Chao moi nguoi’; 
Bạn sẽ thấy trong ví dụ trên một biến mới được hình thành đó là $khai chứa giá trị là "Chao 
moi nguoi" 
Xét thêm ví dụ sau, trong đó $tacgia là một mảng liên hợp. 
<? 
$tacgia = array ("ho"=>"Tong", "ten"=>"Khai"); 
while (list($field,$value) = each($tacgia)) 
{ 
$field = "bien_$field"; 
$$field = $value; 
} 
echo $bien_ho, " ", $bien_ten; 
?> 
Khi chạy chương trình, các biến sau sẽ được tạo $bien_ho, $bien_ten và ghi ra màn 
hình: Tong Khai 
Tóm tắt 
Bạn đã tìm hiểu các biến trong PHP. Bạn thấy PHP xử lý các biến linh hoạt hơn nhiều so với 
các ngôn ngữ khác. Còn một vấn đề khá quan trọng đối với biến đó là scope bạn cũng sẽ biết 
kỹ về nó ở trong các phần sau của giáo trình này. 
 (Còn tiếp) 

File đính kèm:

  • pdflap_trinh_web_dong_voi_php_mysql.pdf