GVHD: Nguyễn Lương Anh Tuấn 2012
PHỤ BÌA
LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin trường Đại học Giao
Thông Vận Tải TpHCM đã tạo điều kiện tốt cho chúng em thực hiện đề tài thực tập tốt
nghiệp này.
Trong suốt thời gian làm đề tài, chúng em đã nhận được rất nhiều sự giúp đỡ.Ở phần
đầu tiên của thực tập tốt nghiệp, cho phép chúng em có đôi điều gửi đến những người
chúng em vô cùng biết ơn.
Chúng em xin gửi lời cảm ơn chân thành nhất đến thầy Nguyễn Lương Anh Tuấn thầy
đã tận tình hướng dẫn, động viên và giúp đỡ chúng em trong suốt thời gian qua.Nhờ
SV: Nguyễn Thanh Trang 1
GVHD: Nguyễn Lương Anh Tuấn 2012
những lời chỉ dẫn, những tài liệu, những lời động viên, khích lệ của Thầy mà đề tài thực
tập rốt nghiệp của chúng em đã hoàn thành.
Chúng con xin gửi lời cảm ơn sâu sắc nhất đến bố mẹ, anh chị, những người
thân trong gia đình đã luôn dành tình yêu thương, hỗ trợ, và dõi theo bước đi của chúng
con trong những năm học vừa qua.
Xin tri ân tất cả các Thầy Cô, những người đã dày công dạy dỗ, truyền đạt cho
chúng em rất nhiều tri thức quý báu.
Xin cảm ơn tất cả bạn bè, những người đã sát cánh cùng vui những niềm vui,
cùng chia sẻ những khó khăn và giúp đỡ chúng em rất nhiều trong quá trình thực hiện
đề tài thực tập tốt nghiệp.
Mặc dù chúng em đã cố gắng hết sức để hoàn thành thực tập tốt nghiệp trong
phạm vi và khả năng cho phép nhưng chắc chắn vẫn không thể tránh khỏi những thiếu
sót. Chúng em kính mong nhận được sự chỉ bảo tận tình của quý Thầy Cô.
Thành phố Hồ Chí Minh, tháng 11 năm 2012
Sinh viên thực hiện
Nguyễn Thanh
MỤC LỤC
SV: Nguyễn Thanh Trang 2
GVHD: Nguyễn Lương Anh Tuấn 2012
DANH SÁCH CÁC HÌNH VẼ VÀ CHỮ VIẾT TẮT
Danh sách các hình:
Hình 2-1: Thành phần cơ bản của 1 website nhiều nội dung………………trang 19
Hình 3-1: Cấu trúc của kernel………………………………………………… trang 26
Hình 3-2: Cấu trúc của kernel (tt)…………………………………………… trang 29
Hình 3-3: Cấu trúc của language………………………………………………trang 30
Hình 3-4: Cấu trúc của public………………………………………………… trang 31
Hình 3-5: Cấu trúc của template…………………………………………… trang 32
Hình 3-6: Cấu trúc của tools…………………………………………………….trang 33
Hình 4-1: Module thông tin doanh nghiệp……………………………………trang 38
Hình 4-2: Module logo – banner……………………………………………….trang 39
Hình 4-3: Module tin tức…………………………………………………………trang 40
Hình 4-4: Module sản phẩm…………………………………………………….trang 41
Hình 4-5: Module đơn hàng…………………………………………………….trang 42
Hình 4-6: Module tùy chỉnh giao diện…………………………………………trang 44
Hình 4-7: Module quản lý thành viên………………………………………….trang 45
Hình 4-8: Module quản lý các thiết lập……………………………………….trang 46
Hình 4-9: Module thống kê………………………………………………………trang 47
Hình 4-10: Trang sản phẩm…………………………………………………….trang 48
Hình 4-11: Trang tin tức……………………………………………………… trang 49
Hình 4-12: Giỏ hàng…………………………………………………………….trang 50
Danh sách các chữ viết tắt:
SV: Nguyễn Thanh Trang 3
GVHD: Nguyễn Lương Anh Tuấn 2012
1. PHP: Hypertext Preprocessor (Viết tắt hồi quy)
2. HTML: HyperText Markup Language
3. PHP/FI: Personal Home Page/Forms Interpreter
4. HTTP: HyperText Transfer Protocol
5. OOP: Object-Oriented Programming
6. XML: eXtensible Markup Language
7. XSLT: Extensible Stylesheet LanguageTransformations
8. PDO: PHP Data Objects
9. API: Application Programming Interface
10. SEO: Search Engine Optimization
11.TMĐT: Thương mại điện tử
TÓM TẮT BÁO CÁO
Báo cáo gồm 5 chương, trong đó:
- Chương 1: Mở Đầu
Trình bày nhu cầu thực tế và lý do chọn đề tài, giới thiệu sơ qua về đề tài, đồng
thời cũng trình bày về mục đích, đối tượng và phạm vi nghiên cứu của đề tài.
- Chương 2: Giới Thiệu Website nhiều nội dung
Giới thiệu tổng quan về website nhiều nội dung, cũng như những đặc điểm, ưu
nhược điểm, kiến trúc, các thành phần tạo nên website nhiều nội dung.
- Chương 3: Web service với ngôn ngữ PHP
Giới thiệu tổng quát ngôn ngữ PHP là gì? Giới thiệu sâu hơn về website nhiều nội
dung với ngôn ngữ PHP. Cấu trúc của mã nguồn.
SV: Nguyễn Thanh Trang 4
GVHD: Nguyễn Lương Anh Tuấn 2012
- Chương 4: Ứng dụng website nhiều nội dung xây dựng web ishopping
Giới thiệu tổng quan về trang web, các chức năng chính của trang web.
- Chương 5: Kết luận và hướng phát triển
Nêu ra những vấn đề đã làm được cũng như những hạn chế còn tồn tại, bên cạnh
đó cũng đưa ra hướng phát triển cho đề tài.
Chương 1: MỞ ĐẦU
1.1. Nhu cầu thực tế và lý do chọn đề tài:
- Ngày nay với sự phát triển mạnh mẽ như vũ bão của mạng internet thì việc quảng
bá thương hiệu trên Internet là một phần không thể thiếu khi đưa thông tin sản
phẩm tiếp cận với người dùng. Với những ưu thế vượt trội của quảng cáo trực
tuyến:
o Tốc độ phát tán: Quảng cáo Internet phát tán thông điệp ngay lập tức.
o Chất lượng nội dung: Quảng cáo trên web không bị giới hạn về nội dung,
ý tưởng, hình ảnh, media.
o Chi phí quảng cáo: Rất tiếc kiệm, không bị giới hạn về phát tán và thời
gian phát tán quảng cáo.
- Đối với doanh nghiệp:
SV: Nguyễn Thanh Trang 5
GVHD: Nguyễn Lương Anh Tuấn 2012
o Mở rộng thị trường: Với chi phí đầu tư nhỏ hơn nhiều so với thương mại
truyền thống, các công ty có thể mở rộng thị trường, tìm kiếm, tiếp cận
người cung cấp, khách hàng và đối tác trên khắp thế giới. Việc mở rộng
mạng lưới nhà cung cấp, khách hàng cũng cho phép các tổ chức có thể
mua với giá thấp hơn và bán được nhiêu sản phẩm hơn.
o Giảm chi phí sản xuất: Giảm chi phí giấy tờ, giảm chi phí chia xẻ thông
tin, chi phí in ấn, gửi văn bản truyền thống.
o Cải thiện hệ thống phân phối: Giảm lượng hàng lưu kho và độ trễ trong
phân phối hàng. Hệ thống cửa hàng giới thiệu sản phẩm được thay thế
hoặc hỗ trợ bởi các showroom trên mạng, ví dụ ngành sản xuất ô tô (Ví dụ
như Ford Motor) tiết kiệm được chi phí hàng tỷ USD từ giảm chi phí lưu
kho.
o Vượt giới hạn về thời gian: Việc tự động hóa các giao dịch thông qua Web
và Internet giúp hoạt động kinh doanh được thực hiện 24/7/365 mà không
mất thêm nhiều chi phí biến đổi.
o Sản xuất hàng theo yêu cầu: Còn được biết đến dưới tên gọi “Chiến lược
kéo”, lôi kéo khách hàng đến với doanh nghiệp bằng khả năng đáp ứng
mọi nhu cầu của khách hàng. Một ví dụ thành công điển hình là Dell
Computer Corp.
o Mô hình kinh doanh mới: Các mô hình kinh doanh mới với những lợi thế
và giá trị mới cho khách hàng. Mô hình của Amazon.com, mua hàng theo
nhóm hay đấu giá nông sản qua mạng đến các sàn giao dịch B2B là điển
hình của những thành công này.
o Tăng tốc độ tung sản phẩm ra thị trường: Với lợi thế về thông tin và khả
năng phối hợp giữa các doanh nghiệp làm tăng hiệu quả sản xuất và giảm
thời gian tung sản phẩm ra thị trường.
o Giảm chi phí thông tin liên lạc.
o Giảm chi phí mua sắm: Thông qua giảm các chi phí quản lý hành chính
(80%); giảm giá mua hàng (5-15%).
SV: Nguyễn Thanh Trang 6
GVHD: Nguyễn Lương Anh Tuấn 2012
o Củng cố quan hệ khách hàng: Thông qua việc giao tiếp thuận tiện qua
mạng, quan hệ với trung gian và khách hàng được củng cố dễ dàng hơn.
Đồng thời việc cá biệt hóa sản phẩm và dịch vụ cũng góp phần thắt chặt
quan hệ với khách hàng và củng cố lòng trung thành.
o Thông tin cập nhật: Mọi thông tin trên web như sản phẩm, dịch vụ, giá
cả đều có thể được cập nhật nhanh chóng và kịp thời.
o Chi phí đăng ký kinh doanh: Một số nước và khu vực khuyến khích bằng
cách giảm hoặc không thu phí đăng ký kinh doanh qua mạng. Thực tế,
việc thu nếu triển khai cũng gặp rất nhiều khó khăn do đặc thù của
Internet.
o Các lợi ích khác: Nâng cao uy tín, hình ảnh doanh nghiệp; cải thiện chất
lượng dịch vụ khách hàng; đối tác kinh doanh mới; đơn giản hóa và chuẩn
hóa các quy trình giao dịch; tăng năng suất, giảm chi phí giấy tờ; tăng khả
năng tiếp cận thông tin và giảm chi phí vận chuyển; tăng sự linh hoạt trong
giao dịch và hoạt động kinh doanh.
- Lợi ích đối với người tiêu dùng:
o Tùy từng nhóm khách hàng: Nhiều lựa chọn về sản phẩm, dịch vụ hơn.
o Vượt giới hạn về không gian và thời gian: Thương mại điện tử cho phép
khách hàng mua sắm mọi nơi, mọi lúc đối với các cửa hàng trên khắp thế
giới.
o Nhiều lựa chọn về sản phẩm và dịch vụ: Thương mại điện tử cho phép
người mua có nhiều lựa chọn hơn vì tiếp cận được nhiều nhà cung cấp
hơn.
o Giá thấp hơn: Do thông tin thuận tiện, dễ dàng và phong phú hơn nên
khách hàng có thể so sánh giá cả giữa các nhà cung cấp thuận tiện hơn và
từ đó tìm được mức giá phù hợp nhất.
SV: Nguyễn Thanh Trang 7
GVHD: Nguyễn Lương Anh Tuấn 2012
o Giao hàng nhanh hơn với các hàng hóa số hóa được: Đối với các sản phẩm
số hóa được như phim, nhạc, sách, phần mềm việc giao hàng được thực
hiện dễ dàng thông qua Internet.
o Thông tin phong phú, thuận tiện và chất lượng cao hơn: Khách hàng có thể
dễ dàng tìm được thông tin nhanh chóng và dễ dàng thông qua các công cụ
tìm kiếm (search engines); đồng thời các thông tin đa phương tiện (âm
thanh, hình ảnh).
o Đấu giá: Mô hình đấu giá trực tuyến ra đời cho phép mọi người đều có thể
tham gia mua và bán trên các sàn đấu giá và đồng thời có thể tìm, sưu tầm
những món hàng mình quan tâm tại mọi nơi trên thế giới.
o Cộng đồng thương mại điện tử: Môi trường kinh doanh TMĐT cho phép
mọi người tham gia có thể phối hợp, chia xẻ thông tin và kinh nghiệm hiệu
quả và nhanh chóng.
o “Đáp ứng mọi nhu cầu”: Khả năng tự động hóa cho phép chấp nhận các
đơn hàng khác nhau từ mọi khách hang.
o Thuế: Trong giai đoạn đầu của TMĐT, nhiều nước khuyến khích bằng
cách miến thuế đối với các giao dịch trên mạng.
- Lợi ích đối với xã hội:
o Hoạt động trực tuyến: Thương mại điện tử tạo ra môi trường để làm việc,
mua sắm, giao dịch từ xa nên giảm việc đi lại, ô nhiễm, tai nạn.
o Nâng cao mức sống: Nhiều hàng hóa, nhiều nhà cung cấp tạo áp lực giảm
giá do đó khả năng mua sắm của khách hàng cao hơn, nâng cao mức sống
của mọi người.
o Lợi ích cho các nước nghèo: Những nước nghèo có thể tiếp cận với các
sản phẩm, dịch vụ từ các nước phát triển hơn thông qua Internet và
TMĐT. Đồng thời cũng có thể học tập được kinh nghiệm, kỹ năng được
đào tạo qua mạng.
o Dịch vụ công được cung cấp thuận tiện hơn: Các dịch vụ công cộng như y
tế, giáo dục, các dịch vụ công của chính phủ được thực hiện qua mạng
SV: Nguyễn Thanh Trang 8
GVHD: Nguyễn Lương Anh Tuấn 2012
với chi phí thấp hơn, thuận tiện hơn. Cấp các loại giấy phép qua mạng, tư
vấn y tế là các ví dụ thành công điển hình.
- Khi bạn xây dựng và phát triển một website dùng để quảng bá thương hiệu trên
internet, thường thì bạn sẽ gặp phải những vấn đề như: tốn một khoảng tiền (3 - 5
triệu) và một khoảng thời gian (2 - 4 tuần) để thuê một công ty chuyên về thiết kế và
tạo ra mã nguồn cho website của bạn. Website nhiều nội dung sẽ giúp bạn tiết kiệm
rất lớn về hai vấn đề nêu trên.
- Ý tưởng website nhiều nội dung dựa trên ý tưởng quản lý tập trung dữ liệu trên môi
trường internet. Mã nguồn của website nhiều nội dung được phát triển một lần và chỉ
có một nhưng được sử dụng cho nhiều site khác nhau, có tính mở rộng để phát triển
dần dần các tính năng mới cho website.
- Website nhiều nội dung đưa ra cho bạn nhiều lựa chọn về cả nội dung và giao diện
website. Bạn có thể thay đổi theo sở thích của bạn một cách nhanh chóng và ngay lập
tức. Và quan trọng hơn là bạn sẽ không phải tốn thêm một khoản chi phí nào cho
những sự thay đổi ấy.
1.2. Mục đích
- Xây dựng một hệ thống Website có chất lượng:
o Nội dung hấp dẫn, đầy đủ, hợp với chủ ý của việc xây dựng website.
o Được sắp xếp, bố cục một cách hợp lý, tạo điều kiện cho người đọc dễ định
hướng trong website. Hình thức đẹp, phù hợp với chủ đề nội dung.
o Tương thích với nhiều trình duyệt phổ dụng như: Internet Explorer, Firefox,
Opera…
o Thuận tiện cho các thao tác sử dụng, có thiết kế đẹp, bảng màu phù hợp, có
cấu trúc chuyên mục thông tin rõ ràng.
SV: Nguyễn Thanh Trang 9
GVHD: Nguyễn Lương Anh Tuấn 2012
o Tìm kiếm nhanh nội dung trên website.
- Xây dựng một hệ thống website đa năng với các tiêu chí:
o Thời gian hoàn thành website nhanh chóng 3 - 5 ngày.
o Chi phí thiết kế & duy trì rất tiết kiệm.
o Giao diện tiếng Việt có video hướng dẫn giúp dễ quản lý và cập nhật nội
dung, hình ảnh, sản phẩm
o Rất nhiều chức năng chuyên nghiệp.
o Thay đổi giao diện cực nhanh, nhiều chủ đề, nếu bạn bán hàng trong dịp tết
hay giáng sinh, valetine bạn có thể thay đổi giao diện lễ tết, giáng sinh cho
sinh động.
o Thay đổi bố cục website theo ý muốn.
o Tích hợp thanh toán Ngân Lượng, Paypal, Bảo kim.
o Tối ưu mã nguồn tìm kiếm Google, yahoo toàn diện giúp tiếp cận khách hàng
nhanh chóng, dễ dàng.
o Tích hợp Google Maps, để hướng dẫn đường đi cho khách hàng của bạn.
o Hình ảnh Flash chuyên nghiệp.
1.3. Đối tượng
- Tìm hiểu ngôn ngữ lập trình website PHP là gì?
- Tìm hiểu ngôn ngữ đánh dấu HTML là gì?
- Tìm hiểu ngôn ngữ dàn trang CSS là gì?
- Tìm hiểu một ngôn ngữ thông dịch Javascript là gì?
- Tìm hiểu website nhiều nội dung và xây dựng ứng dựng bằng ngôn ngữ php.
1.4. Phạm vi nghiên cứu
- Nghiên cứu và tìm hiểu về website nhiều nội dung.
- Nghiên cứu cách thức hoạt động của website nhiều nội dung.
- Nghiên cứu xây dựng website nhiều nội dung bằng ngôn ngữ PHP và từ đó xây dựng
trang web i-shopping dựa trên ứng dụng của website nhiều nội dung.
SV: Nguyễn Thanh Trang 10
GVHD: Nguyễn Lương Anh Tuấn 2012
Chương 2:GIỚI THIỆU WEBSITE NHIỀU NỘI DUNG
2.1. Giới thiệu về website nhiều nội dung
- Website nhiều nội dung là website có một mã nguồn nhưng có khả năng cho ra
nhiều giao diện khác nhau tương ứng với nhiều database và hình ảnh thông tin
khác nhau. Sự khác nhau giữa các tên miền (domain) khi truy cập sẽ dẫn đến sự
khác nhau về những nội dung mà website nhiều nội dung trả về.
- Có thể nói website nhiều nội dung như một hệ thống lớn, khi người dùng truy cập
với những tên miền khác nhau, hệ thống sẽ trả về những nội dung của tên miền
đó chứ không như cách hoạt động của những website thông thường là luôn luôn
hiển thị những giao diện và nội dung đã được thiết lập sẵn.
- Bạn không cần phải hiểu về kỹ thuật, thông qua hướng dẫn 4 bước trực quan trên
hệ thống, bạn sẽ dễ dàng tạo ra website cho mình trong vòng 10 phút.Và chỉ trong
vài giờ, website của bạn lên internet.
- Với chi phí cho việc thiết kế và vận hành website dưới một triệu đồng cho năm
đầu tiên, bạn không còn phải bận tâm về giá thành. Các năm tiếp theo, bạn chỉ
phải trả phí vận hành mà thôi.
- Với nhiều giao diện được thiết kế chuyên nghiệp và cập nhật liên tục vào thư viện
thiết kế của hệ thống, bạn hoàn toàn là người quyết định phong cách cho bộ-mặt-
trực-tuyến của mình. Bạn hoàn toàn thay đổi logo, hình ảnh, video, nội dung, sản
phẩm, bản đồ cho mình.
2.2. Ưu và nhược điểm
2.2.1. Ưu điểm
- Website nhiều nội dung có khả năng mở rộng rất lớn về số lượng nội dung.
Nếu đảm bảo về vấn đề phần cứng – máy chủ và đường truyền mạng – thì
một website nhiều nội dung có thể cung cấp cả trăm nội dung với chỉ một mã
nguồn.
- Vì có khả năng mở rộng về các tính năng nên chúng ta có thể phát triển dần
dần để có thể cho người dùng nhiều sự chọn lựa về các tính năng.
SV: Nguyễn Thanh Trang 11
GVHD: Nguyễn Lương Anh Tuấn 2012
- Về mặt giao diện: website nhiều nội dung có thể tích hợp bao nhiêu giao diện
tùy thích. Càng về sau, kho giao diện càng nhiều cho phép khách hàng thay
đổi nhanh chóng
- Để tạo thêm một giao diện và một nội dung mới rất đơn giản và chỉ mất
khoảng 1-5 phút là khách hàng có thể sử dụng website ngay lập tức mà chi
phí lại rất thấp.
- Đối tượng khác hàng mà website nhiều nội dung hướng tới là các doanh
nghiệp vừa và nhỏ, các cửa hàng và cá nhân muốn quảng bá sản phẩm và
thương hiệu của mình mà không phải tốn nhiều tiền để đầu tư cho việc quảng
cáo này.
- Từ những ưu điểm trên, website nhiều nội dung luôn được sự tín nhiệm và là
cách lựa chọn đầu tiên của người dùng.
2.2.2. Nhược điểm:
- Vì website nhiều nội dung có một mã nguồn nhưng được sử dụng cho nhiều
nội dung nên tốc độ đôi khi có thể chậm hơn một website thông thường.
- Có nhiều tên miền được trỏ vào một mã nguồn nên website nhiều nội dung
luôn chịu một lượng truy cập rất lớn là điều không thể tránh khỏi, đôi khi lên
đến hàng trăm ngàn lượt truy cập cùng một lúc là chuyện bình thường.
- Phải quan tâm nhiều hơn đến các vấn đề tăng tốc độ cho website cũng nhưng
hạn chế đến mức thấp nhất việc gửi yêu cầu trực tiếp vào hệ thống cơ sở dữ
liệu để tránh tình trạng quá tải cho máy chủ cung cấp cơ sở dữ liệu.
2.3. Các thành phần của website nhiều nội dung
- Một website nhiều nội dung phải có ít nhất các thành phần cơ bản sau:
o Control & Config
o Module
o Package
o Profile
SV: Nguyễn Thanh Trang 12
GVHD: Nguyễn Lương Anh Tuấn 2012
o Template
Hình 2-1: Thành phần cơ bản của 1 website nhiều nội dung
2.3.1. Control & Config
- Config: Chứa các thông tin cấu hình hệ thống như: Thông tin kết nối database,
chuẩn bị tất cả function…
- Control: Có nhiệm vụ điều hướng các yêu cầu (request) từ khách hàng để đến
đúng nội dung mà khách hàng mong muốn dựa vào tên miền mà khách hàng đó
request…
2.3.2. Module
- Đây là nơi chứa tất cả các module của hệ thống như: module sản phẩm, module
tin tức, module đơn hàng…Khi muốn nâng cấp hệ thống ta có thể thêm mới các
module ở đây.
SV: Nguyễn Thanh Trang 13
GVHD: Nguyễn Lương Anh Tuấn 2012
2.3.3. Package
- Cấu trúc của các gói web được xây dựng ở đây. Hiện tại trong hệ thống có 3 gói
web, đó là: web bán hàng, web tin tức, web giới thiệu. Sự phân loại rõ ràng nhằm
mục đích sau này chúng ta có thể phát triển thêm nhiều dạng web khác nhau đáp
ứng yêu cầu của khách hàng.
2.3.4. Profile
- Đây là thư mục chứa tài liệu, hình ảnh sản phẩm… của từng nội dung. Mỗi nội
dung sẽ được tạo một thư mục có tên giống với tên miền của nội dung… Hệ
thống có bao nhiêu tên miền thì sẽ có bấy nhiêu thư mục để cho khách hàng có
thể upload tài liệu của mình.
2.3.5. Templates
- Thành phần này chứa tất cả các gói giao diện để khách hàng có thể chọn tùy theo
nhu cầu, nội dung của họ. Mỗi giao diện sẽ tương ứng với một gói web. Có thể bổ
sung dần dần các gói giao diện để hệ thống thêm sinh động.
Chương 3: WEBSITE NHIỀU NỘI DUNG VỚI NGÔN NGỮ PHP
3.1. Tổng quan về website nhiều nội dung trong ngôn ngữ PHP
3.1.1. PHP là gì?
- PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập trình
kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết
cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với
web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng
dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian
xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã
nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
SV: Nguyễn Thanh Trang 14
GVHD: Nguyễn Lương Anh Tuấn 2012
- Đoạn mã sau minh họa giúp cách viết PHP lồng vào các trang HTML dễ dàng
như thế nào:
Code:
<html>
<head>
<title>Mã mẫu</title>
</head>
<body>
<?php
echo "Hello PHP!";
?>
</body>
</html>
Thẻ <?php và thẻ ?> sẽ đánh đấu sự bắt đầu và sự kết thúc của phần mã PHP
qua đó máy chủ biết để xử lý và dịch mã cho đúng. Đây là một điểm khá tiện lợi
của PHP giúp cho việc viết mã PHP trở nên khá trực quan và dễ dàng trong việc
xây dựng phần giao diện ứng dụng HTTP.
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng và
có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của
PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển
ở quy mô doanh nghiệp.
3.1.2. Lịch sử phát triển của PHP
SV: Nguyễn Thanh Trang 15
GVHD: Nguyễn Lương Anh Tuấn 2012
- PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do Rasmus
Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giản của các
mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch của ông trên
mạng. Ông đã đặt tên cho bộ mã kịch bản này là 'Personal Home Page Tools'. Khi
cần đến các chức năng rộng hơn, Rasmus đã viết ra một bộ thực thi bằng C lớn
hơn để có thể truy vấn tới các cơ sở dữ liệu và giúp cho người sử dụng phát triển
các ứng dụng web đơn giản. Rasmus đã quyết định công bố mã nguồn của
PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi có trong nó đồng thời
cải tiến mã nguồn.
- PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm một số
các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó có các
biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp HTML
nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều, đơn giản và
có phần thiếu nhất quán.
- Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu hút được
hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền đã được
ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên mạng Internet.
Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh mã nguồn
của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của một người.
- PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một thời gian
khá dài chỉ được công bố dưới dạng các bản beta. Nhưng không lâu sau đó, nó
đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.
SV: Nguyễn Thanh Trang 16
GVHD: Nguyễn Lương Anh Tuấn 2012
- PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với các
phiên bản PHP mà chúng ta được biết ngày nay. Nó đã được Andi Gutmans và
Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước đó.
Lý do chính mà họ đã tạo ra phiên bản này là do họ nhận thấy PHP/FI 2.0 hết
sức yếu kém trong việc phát triển các ứng dụng thương mại điện tử mà họ đang
xúc tiến trong một dự án của trường đại học. Trong một nỗ lực hợp tác và bắt
đầu xây dựng dựa trên cơ sở người dùng đã có của PHP/FI, Andi, Rasmus và
Zeev đã quyết định hợp tác và công bố PHP 3.0 như là phiên bản thế hệ kế tiếp
của PHP/FI 2.0, và chấm dứt phát triển PHP/FI 2.0.
- Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở rộng
mạnh mẽ của nó. Ngoài khả năng cung cấp cho người dùng cuối một cơ sở hạ
tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giao thức và API khác nhau, các
tính năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển tham gia và
đề xuất các mô đun mở rộng mới. Hoàn toàn có thể kết luận được rằng đây
chính là điểm mấu chốt dẫn đến thành công vang dội của PHP 3.0. Các tính
năng khác được giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp hướng đối
tượng và nhiều cú pháp ngôn ngữ nhất quán khác.
- Ngôn ngữ hoàn toàn mới đã được công bố dưới một cái tên mới, xóa bỏ mối
liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà cái tên PHP/FI 2.0
gợi nhắc. Nó đã được đặt tên ngắn gọn là 'PHP', một kiểu viết tắt hồi quy của
"PHP: Hypertext Preprocessor".
- Vào cuối năm 1998, PHP đã phát triển được con số cài đặt lên tới hàng chục
ngàn người sử dụng và hàng chục ngàn Web site báo cáo là đã cài nó. Vào thời
kì đỉnh cao, PHP 3.0 đã được cài đặt cho xấp xỉ 10% số máy chủ Web có trên
mạng Internet.
SV: Nguyễn Thanh Trang 17
GVHD: Nguyễn Lương Anh Tuấn 2012
- PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời gian 9
tháng được cộng đồng kiểm nghiệm.
- Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công bố, Andi
Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần lõi của PHP.
Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng phức tạp, và cải
tiến tính mô đun của cơ sở mã PHP. Những ứng dụng như vậy đã chạy được
trên PHP 3.0 dựa trên các tính năng mới và sự hỗ trợ khá nhiều các cơ sở dữ
liệu và API của bên thứ ba, nhưng PHP 3.0 đã không được thiết kế để xử lý các
ứng dụng phức tạp như thế này một cách có hiệu quả.
- Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên của Zeev
và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành công, và lần
đầu tiên được giới thiệu vào giữa năm 1999. PHP 4.0, dựa trên động cơ này, và
đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức được công bố
vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời. Ngoài tốc độ xử
lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ yếu khác gồm
có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc HTTP, tạo bộ đệm
thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào bảo mật
hơn và cung cấp một vài các cấu trúc ngôn ngữ mới.
- Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và hàng
triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên mạng
Internet.
- Nhóm phát triển PHP cũng đã lên tới con số hàng nghìn người và nhiều nghìn
người khác tham gia vào các dự án có liên quan đến PHP như PEAR, PECL và
tài liệu kĩ thuật cho PHP.
SV: Nguyễn Thanh Trang 18
GVHD: Nguyễn Lương Anh Tuấn 2012
- Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát triển
PHP tự mãn. Cộng đồng PHP đã nhanh chóng giúp họ nhận ra những yếu kém
của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP), xử lý
XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ trợ
dịch vụ web yếu. Những điểm này chính là mục đích để Zeev và Andi viết Zend
Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot đã cho thấy việc phát
triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12 năm 2002 nhưng những
bài phỏng vấn Zeev liên quan đến phiên bản này thì đã có mặt trên mạng
Internet vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6 năm 2003, PHP 5 Beta
1 đã chính thức được công bố để cộng đồng kiểm nghiệm. Đó cũng là phiên bản
đầu tiên của Zend Engine 2.0. Phiên bản Beta 2 sau đó đã ra mắt vào tháng 10
năm 2003 với sự xuất hiện của hai tính năng rất được chờ đợi: Iterators,
Reflection nhưng namespaces một tính năng gây tranh cãi khác đã bị loại khỏi
mã nguồn. Ngày 21 tháng 12 năm 2003: PHP 5 Beta 3 đã được công bố để kiểm
tra với việc phân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các
hàm PHP bên trong XSLT, sửa chữa nhiều lỗi và thêm khá nhiều hàm mới. PHP
5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các
bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản
sản xuất đầu tiên nhưng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác
thực HTTP.
- Ngày 14 tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu
sự chín muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong việc tạo ra
một hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực hiện các
câu truy vấn.
3.1.3. Tại sao nên dùng PHP?
SV: Nguyễn Thanh Trang 19
GVHD: Nguyễn Lương Anh Tuấn 2012
- PHP là một mã nguồn thông tin mở: Bởi vì mã nguồn của PHP sẵn có nên cộng
đồng các nhà phát triển Web luôn có ý thức cải tiến nó,nâng cao để khắc phục
các lỗi trong chương trình này .PHP rất ổn định và tương hợp ,vận hành khá tốt
trên các hệ điều hành gồm cả Unix ,windown… Đồng thời nó cũng nối với một
số máy chủ như IIS hay Apache.
3.2. Ứng dụng website nhiều nội dung với ngôn ngữ PHP
3.2.1. Kernel
Hình 3-
1: Cấu trúc của kernel
- Có thể xem đây là phần nhân của hệ thống. Bao gồm 3 thành phần chính là: API,
Library và Models.
o API: Tích hợp API của các cổng trực tuyến như: Ngân Lượng, Bảo Kim,
Paypal, DNS… nhằm phục vụ cho các giao tiếp của hệ thống với các hệ thống
khác trên Internet.
o Library: Bao gồm các lớp (class) được xây dựng sẵn nhằm phục vụ cho các
module của hệ thống. Một số lớp cơ bản:
Cache: đây là class có chức năng tạo ra các file cache có nội dung là mã
HTML – kết quả của hệ thống trả về sau request của các máy trạm. Việc
tạo file cache như thế này sẽ hạn chế việc hệ thống truy cập vào cơ sở dữ
liệu, như vậy sẽ giảm thiểu được sự quá tải truy vấn cơ sở dữ liệu và tăng
tốc độ website. Bao gồm các phương thức:
save( tên file, dữ liệu) – tạo file cache có thành phần mở rộng .txt
check ( tên file ) – kiểm tra sự tồn tại của file cache .
SV: Nguyễn Thanh Trang 20
GVHD: Nguyễn Lương Anh Tuấn 2012
load( tên file ) – lấy nội dung file cache trong thư mục cache.
delete( tên file ) – Xóa file cache theo tên file.
mdelete( chuỗi ) – Xóa nhiều file cache có tên giống với chuỗi.
Ưu điểm của web caching:
• Giảm tải băng thông: bởi vì một số yêu cầu và đáp ứng cần phải
thông qua mạng máy tính. Mỗi đối tượng chỉ nhận được từ server
khi có yêu cầu, web caching làm giảm một lương băng thông chiếm
dụng bởi client. Việc này giúp tiết kiệm tiền nếu client phải trả tiền
cho băng thông, và giữ cho các như cầu về băng thông hạ xuống và
dễ dàng quản lý.
• Giảm gánh nặng cho server: một số yếu cầu do server xử lý.
• Giảm sự tiềm ẩn: bởi vì những đáp ứng có sẵn trực tiếp cho các yêu
cầu đã được lưu trữ, và gần với client được phục vụ hơn. Bởi vì ỵêu
cầu được thỏa mãn tại cache (gần với client hơn) thay vì từ server
chính, nó giảm được thời gian cho client để lấy và hiển thị đối
tượng. Nó làm cho các web sites dường như đáp ứng nhanh hơn.
Date: đây là class về định dạng và xử lý các dữ liệu liên quan đến thời
gian. Gồm một số phương thức sau:
date_format (chuỗi số,): định dạng một chuỗi số thành chuỗi dạng ngày
tháng năm.
VD: date_format (1351397399) => 28/10/2012
date2time (chuỗi ngày): chuyển một chuỗi dạng ngày tháng năm thành
chuỗi số để tiện xử lý tính toán.
add_month (chuỗi, số tháng): thêm số tháng vào một chuỗi thời gian.
dd_hour (chuỗi, số giờ): thêm số giờ vào chuỗi thời gian.
get_dayofmonth (tháng, năm): lấy ngày của tháng.
get_dayofweek (ngày, tháng, năm): lấy ngày của tuần.
Editor: class chuyên về việc xử lý dữ liệu dạng chuỗi: cắt chuỗi, tìm và
thấy thế chuỗi…
Image: class xử lý dữ liệu hình ảnh như: resize lại hình ảnh, tạo hình
ảnh…
SV: Nguyễn Thanh Trang 21
GVHD: Nguyễn Lương Anh Tuấn 2012
Input: xử lý dữ liệu đầu vào: kiểm tra chuỗi nhập có phải là mail, định
dạng tiền tệ vnđ, sắp xếp lại chuỗi….
Logs: ghi nhận các log trong hệ thống.
Mail: xử lý dữ liệu dạng mail như: gửi mail, lấy IP, đếm độ dài chuỗi, định
dạng dữ liệu mail theo kiểu UTF-8…
Security: class tạo mã capcha …
Seo: tạo đường dẫn thân thiện và chuyển từ tiếng việt sang từ không dấu…
SV: Nguyễn Thanh Trang 22
GVHD: Nguyễn Lương Anh Tuấn 2012
Hình 3-2: Cấu trúc của kernel (tt)
3.2.2. Language
SV: Nguyễn Thanh Trang 23
GVHD: Nguyễn Lương Anh Tuấn 2012
Định nghĩa ngôn ngữ cho hệ thống. Tên file ngôn ngữ định nghĩa cho phần
quản trị phải bắt đầu bằng tiếp đầu ngữ admin, ví dụ: admin_menu.php. Tên
file ngôn ngữ định nghĩa cho phần giao diện thì phải bắt đầu bằng tiếp đầu
ngữ lang, ví dụ: lang_menu.php
Hình 3-3: Cấu trúc của language
3.2.3. Public
Chứa hình ảnh layout của website, css, javascripts…
SV: Nguyễn Thanh Trang 24
GVHD: Nguyễn Lương Anh Tuấn 2012
Hình 3-4: Cấu trúc của public
3.2.4. Template
Chứa các gói giao diện tương ứng với các gói web để người dùng chọn lựa.
SV: Nguyễn Thanh Trang 25