Trên cơ sở muốn tìm hiều về Web và ứng dụng của Web, cũng như những phát triển của nó, em thực hiện đề tài: “Nghiên cứu jsp & java – Xây Dựng Website bán
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
-Đồ án tốt nghiệp
Đề tài : Xây Dựng Website bán
Giấy Dán Tường
Giáo viên hướng dẫn : Ths Phan Hữu Trung
Sinh viên thực hiện : Bùi Mạnh Khiêm - 516251 Lớp quản lý : 51PM1
Hà Nội 05/2010
Trang 2Lời cám ơn
Mạng internet tốc độ cao ADSL xuất hiện ở Việt Nam chỉ vài năm gần đây nhưng ảnh hưởng của nó tới cuộc sống và lối sống của người Việt rất rõ ràng Internet đã thành một thứ không thể thiếu với cộng đồng từ nhà nước tới người dân, từ người già tới giới trẻ Internet mang tới một kênh thông tin truyền thông hiệu quả tới người sử dụng.Kéo theo sự phát triển đó là thương mại điện tử Thương mại điện tử là một lĩnh vực mới đang được nhiều cơ quan, nhiều công ty, đoàn thể cũng như cá nhân nghiên cứu
và phát triển nhằm đưa các thiết bị, các ứng dụng liên quan đến điện tử tin học vào phục vụ cho sự phát triển kinh doanh Thương mại điện tử của Việt Nam phát triển đi kèm với sự phát triển của lượng khách hàng Khách hàng của các trang thương mại điện tử của Việt Nam hiện nay phần lớn là giới trẻ, họ trao đổi, buôn bán với nhau các vật dụng công nghệ cao như điện thoại, máy vi tính, sách vở tạp chí thậm chí là quần áo, đồ dùng gia đình Đó là lý do em thực hiện đồ án tốt nghiệp xây dựng websitebán hàng trực tuyến này
Trên cơ sở muốn tìm hiều về Web và ứng dụng của Web, cũng như những phát triểncủa nó, em thực hiện đề tài: “Nghiên cứu jsp & java – Xây Dựng Website bán
Giấy Dán Tường” Bước đầu nghiên cứu, hiện thực với kiến thức, khả năng và thờigian có hạn, đồ án này chắc chắn sẽ không tránh khỏi những thiếu sót, rất mong đượcthầy cô và các bạn góp ý để có thể hoàn chỉnh hơn trong quá trình nghiên cứu sau này
Em xin chân thành cảm ơn sự giúp đỡ tận tình của các thầy có trong suốt quá trìnhthực tập và làm đồ án tốt nghiệp, đặc biệt là Ths Phan Hữu Trung người đã trực tiếphướng dẫn em trong toàn bộ quá trình thực hiện để hoàn thành đồ án tốt nghiệp này
Trang 3Ph l c ụ ụ
Phần 1 Giới thiệu tổng quan 3
1.1 Đặt vấn đề 3
1.2 Công nghệ sử dụng 4
1.3 Chức năng của website 4
Phần 3 Phân tích và thiết kế 6
3.1 Chức năng của hệ thống 6
3.1.1 Khách ghé thăm website 6
3.1.2 Chức năng thành viên 7
3.1.3 Chức năng của admin 7
3.2 ERD 8
3.3 Thiết kế cơ sở dữ liệu 10
3.3.1 Bảng tin tức (news) 11
3.3.2 Bảng comments 11
3.3.3 Bảng sản phẩm(products) 11
3.3.4 Bảng nhà cung cấp(suppliers) 12
3.3.5 Bảng nhóm sản phẩm(categories) 12
3.3.6 Chi tiết hóa đơn(cart_detail) 13
3.3.7 Hóa đơn(Cart) 13
3.3.8 Người dùng(customer) 14
Phần 4 Thiết kế giao diện và cài đặt chương trình 14
4.1 Tổng quát về công nghệ và công cụ sử dụng 14
4.1.1 Tổng quát về PHP 14
4.1.2 Cú pháp của PHP 18
4.1.3 Tổng quát về MySQL Server 23
4.1.4 Tổng quát về Ajax 24
4.2 Framework symfony 29
4.2.1 Giới thiệu 29
4.2.2 Cài đặt symfony 31
4.2.3 Cài đặt Project 33
Trang 44.2.4 Tạo Application 34
4.2.5 Cài đặt Web server 36
4.2.6 Phát triển một dự án với symfony 39
4.3 Giao diện và các chức năng của chương trình 61
4.2.1 Giao diện chính 61
4.3.3 Trang đăng ký thành viên 62
4.3.4 Đăng Nhập 62
4.3.4.1Trang giỏ hang 64
4.3.5 Đặt Hàng 64
4.3.6 Thông kê những đơn hàng đã đặt 65
4.3.7 Hình ảnh một số mẫu giấy dán tường 65
4.3.8 Trang tin nội thất 66
4.3.9 Trang quản trị 67
4.3.10 Trang quản lý tin tức 67
4.3.11 Quản lý sản phẩm 68
4.3.12 Trang quản lý người dùng 68
4.3.13 Trang quản lý hóa đơn 69
4.3.14 Trang quản lý hình ảnh 69
4.3.15 Trang nhóm sản phẩm 70
Phần 5 Kết luận 70
5.1 Những điều đã làm được : 70
5.2 Hạn chế: 71
5.3 Hướng phát triển : 71
5.4 Tài liệu tham khảo 71
Trang 5Phần 1 Giới thiệu tổng quan
1.1.Đặt vấn đề
Ngày nay thương mại điện tử đã dần trở nên quen thuộc với người tiêu dùng bởi nó đã xoá dần mọi khoảng cách giữa người bán và người mua Thương mại điện tử đã làm cho việc mua bán giao dịch giữa người bán và người mua trở lên đơn giản hơn bao giờhết Thay vì phải gặp trực tiếp, mọi hoạt động sẽ diễn ra thông qua Internet
Các hình thức được biết đến nhiều nhất của thương mại điện tử là mua bán trực tuyến cũng như mua bán đấu giá thông qua Internet Thông qua việc Internet bùng nổ vào cuối thập niên 90, cửa hàng trực tuyến ngày càng có tầm quan trọng nhiều hơn Nhữngngười bán hàng thông qua Internet có lợi thế là họ không cần đến một diện tích bán hàng thật sự mà thông qua các trang Web sử dụng một không gian bán hàng ảo Các cửa hàng trực tuyến thường không cần đến nhà kho hay chỉ cần đến rất ít, vì thường cóthể cung cấp cho khách hàng trực tiếp từ người sản xuất hay có thể đặt hàng theo nhu cầu Lợi thế do tiết kiệm được các phí tổn cố định này có thể được chuyển tiếp cho khách hàng, đó là việc khách hàng sẽ được giảm chi phi vận chuyển so với cửa hàng
cố định
Kênh bán hàng trực tuyến còn giúp người bán giảm một số chi phí Thứ nhất, với cửa hàng trực tuyến, người bán có thể cập nhật giá và các thông tin khác liên tục, không phải in catalogue (đã in ra thì không thay đổi được) Thứ hai, cửa hàng truyền thống thường giới hạn về diện tích, trong khi với cửa hàng trực tuyến, người bán có thể giới thiệu tất cả sản phẩm mà không lo hết chỗ
Trong những năm gần đây, Đảng và Nhà Nước ta đánh giá cao tiềm năng phát triển của thương mại điện tử và đang đầu tư rất lớn cho thương mại điện tử Đầu năm 2007, chính phủ Việt Nam đă ban hành Nghị định số 27/2007/NĐ-CP ngày 23/02/2007 “Quyđịnh chi tiết thi hành Luật giao dịch điện tử về chữ ký số và dịch vụ chứng thực chữ kýsố”, số 35/2007/NĐ-CP ngày 08/03/2007 “ Về giao dịch điện tử trong hoạt động ngân hàng”
Hiện nay, các mô hình kinh doanh qua hệ thống e-Commerce ngày càng đa dạng Từthực tế này, ứng dụng Web tự động hóa quy trình quản lý và bán hàng trực tuyến (WebQLBHTT) được thiết kế phù hợp với mọi mô hình kinh doanh trên Internet Cùng với
Trang 6sự phát triển mạnh mẽ của Internet thì mọi giao dịch, hoạt động buôn bán đều có thểđược thực hiện thông qua Internet Một cửa hàng bán sản phẩm điện thoại sẽ hoàn toàn
có thể được thay thế bằng một Website mà ở đó mọi người có thể mua bất cứ sảnphẩm điện thoại yêu thích ngay cả khi ngồi ở nhà hay ở nơi làm việc
1.2.Công nghệ sử dụng
- Ngôn ngữ xây dựng website : PHP
- Ngoài ra sử thêm các open source : CkEditor, Jquery
- Cơ sở dữ liệu : My SQLServer download tại MySQL Home page :
http://www.mysql.com/downloads/mysql/ , MySQL Workbench (GUI Tool) download : http://www.mysql.com/downloads/workbench/
1.3.Chức năng của website
Chức năng của website :
1.3.1 Chức năng giỏ hàng
- Khách hàng ghé thăm website có thể tìm kiếm để chọn hàng tùy thích
- Khách hàng có thể thêm, xóa, cập nhật số lượng hàng mà họ muốn mua
1.3.2 Chức năng quản lý thành viên
- Người quản lý có thể thêm một thành viên, sửa thông tin của thành viên, xóathông tin của thành viên
- Người quản lý có thể tìm kiếm thông tin về thành viên theo : Tên đăng nhập,Email
Trang 71.3.5 Chức năng quản lý tin tức
- Người quản lý có thể thêm hay sửa thậm chí xóa thông tin về một bản tin
- Về phần tìm kiếm : người quản lý có thể tìm kiếm tin tức theo tiêu đề tin, nguồntin
1.3.6 Quản lý hóa đơn
- Người quản lý có thể xử lý hóa đơn nếu nó hợp lệ và cũng có thể xóa hóa đơnkhông hợp lệ
- Người quản lý có thể tìm kiếm hóa đơn theo: Tên người nhận, Email của ngườinhận
Trang 8Mô tả Cho phép khách hàng có thể xem tin tức
Đầu vào Lựa chọn mục tin tức muốn xem
Xử lý Lấy thông tin từ database
Đầu ra Hiển thị thông tin được yêu cầu
3.1.1.2 Tìm kiếm thông tin
Mô tả Cho phép khách hàng có thể tìm kiếm thông tin về sản phẩm
Đầu vào Lựa chọn mục cần search và nhập vào từ khóa
Xử lý Lấy thông tin từ database
Đầu ra Hiển thị thông tin được yêu cầu
3.1.1.3 Đăng ký thành viên
Mô tả Cho phép thành viên đăng ký để trở thành thành viên của website
Đầu vào Tên, tuổi, giới tính, ngày sinh, địa chỉ , email, số điện thoại
Xử lý - Kiểm tra tính hợp lệ của dữ liệu
- Check register
- Insert Database
Đầu ra - Nếu dữ liệu đưa vào là ko hợp lệ thì đưa ra thông báo không
thành công và ngược lại
Trang 93.1.2 Chức năng thành viên
3.1.2.1 Quản lý thông tin cá nhân
Mô tả Quản lý toàn bộ thông tin cá nhân
Đầu vào Cật nhập thông tin cá nhân
Xử lý Thêm sửa xóa thông tin
Đầu ra Hiển thị thông tin
3.1.2.2 Đặt hàng online
Mô tả Khách hàng ghé thăm website có thể chọn và đặt mua sản phẩm
Đầu vào Lựa chọn các sản phẩm cần mua và số lượng
Xử lý Lưu thông tin giỏ hàng
Đầu ra Hóa đơn thanh toán
3.1.3 Chức năng của admin
3.1.3.1 Quản lý thành viên
Mô tả Quản lý toàn bộ thành viên và cấp quyền
Đầu vào Cật nhập thông tin các thành viên
Xử lý Thêm sửa xóa thông tin của thành viên
Đầu ra Hiển thị thông tin của thành viên
3.1.3.2 Quản lý sản phẩm
Mô tả Quản lý toàn thông tin về sản phẩm
Đầu vào Cật nhập thông tin cho sản phẩm
Xử lý Thêm sửa xóa thông tin của sản phẩm
Đầu ra Hiển thị thông tin của sản phẩm
Trang 103.1.3.3 Quản lý hóa đơn
Mô tả Quản lý toàn bộ các hóa đơn
Đầu vào Hóa đơn của khách hàng
Xử lý Quản lý trạng thái của hóa đơn
Đầu ra Hiển thị thông tin về hóa đơn của khách hàng
3.1.3.4 Quản lý tin tức
Mô tả Quản lý toàn bộ tin tức của web
Đầu vào Cật nhật thông tin cho tin tức
Xử lý Thêm sửa xóa tin tức
Đầu ra Hiển thị tin tức
3.2 ERD
Trang 11Suppliers
Users Products
Carts
News comments
n
n 1
n
n 1
1
1
n 1
n 1
Trang 123.3 Thiết kế cơ sở dữ liệu
Trang 133.3.1 Bảng tin tức (news)
FieldName Data Type Data length Constraint Description
3.3.2 Bảng comments
FieldName Data Type Data length Constraint Description
phẩm
lời bình
3.3.3 Bảng sản phẩm(products)
FieldName Data Type Data
length Constraint Description
Trang 14prod_name Varchar 50 Tên sản phẩm
product_price
sản phẩm
3.3.4 Bảng nhà cung cấp(suppliers)
FieldName Data Type Data length Constraint Description
cấp
cung cấp
3.3.5 Bảng nhóm sản phẩm(categories)
FieldName Data Type Data length Constraint Description
Trang 153.3.6 Chi tiết hóa đơn(cart_detail)
FieldName Data Type Data length Constraint Description
cart_detail_id int(11) Primary key Mã chi tiết
FieldName Data Type Data length Constraint Description
Trang 163.3.8 Người dùng(customer)
FieldName Data Type Data length Constraint Description
nhập
Phần 4 Thiết kế giao diện và cài đặt chương trình 4.1 Tổng quát về công nghệ và công cụ sử dụng
4.1.1 Tổng quát về PHP
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úngvà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ìnhweb phổ biến nhất thế giới
PHP là một công nghệ phía máy chủ (server-side) và không phụ thuộc môitrường (cross-platform) Cả hai yếu tố này đều rất quan trọng Khái niệm công nghệ
Trang 17phía máy chủ nói đến việc mọi thứ trong PHP đều xảy ta trên máy chủ (ngược với máykhách là máy người dùng) Tính chất không phụ thuộc môi trường cho phép PHP chạytrên hầu hết các hệ điều hành như Windows , Unix (và nhiều biến thể của nó),Macintosh Một điều cũng rất quan trọng là các mã kịch bản PHP viết trên máy chủnày sẽ làm việc bình thường trên các máy chủ khác mà không cần chỉnh sửa hoặcchỉnh sửa rất ít.
PHP được sử dụng để phát triển Website động vì nó tốt, nhanh và dễ dàngnghiên cứu hơn các giải pháp khác PHP có khả năng thực hiện và tích hợp chặt chẽvới hầu hết các cơ sở dữ liệu có sẵn, tính bền vững, linh động và khả năng phát triểnkhông giới hạn Tất cả các đặc tính trên đều miễn phí vì PHP là mã nguồn mở PHPvừa dễ với người mới sử dụng, vừa có khả năng làm được mọi thứ, đáp ứng yêu cầucủa lập trình viên chuyên nghiệp PHP được sử dụng ngày càng nhiều và là môđunthông dụng cho Apache (máy chủ Web phổ biến nhất)
Đoạn mã sau minh họa giúp cách viết PHP lồng vào các trang HTML dễ dàngnhư thế nào:
<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8">
< title >Xin chào</ title >
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 PHPgiú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ầngiao diện ứng dụng HTTP
1- Lý do chọn php
Khi sử dụng PHP, người dùng sẽ có được tốc độ nhanh hơn nhiều so với các ngônngữ kịch bản khác, bởi PHP là phần mềm mã nguồn mở, được hỗ trợ bởi nhiều lập
Trang 18trình viên giỏi, có số lượng người dùng đông đảo Ngoài ra PHP chạy được trên nhiều
hệ điều hành khác nhau
Rút ngắn thời gian phát triển
- PHP cho phép bạn tách phần HTML code và phần script, do đó có thể độc lập giữacông việc phát triển mã và thiết kế Điều này vừa giúp lập trình viên dễ dàng hơnvừa có thể làm cho chương trình mềm dẻo hơn trong việc thay đổi giao diện
PHP là phần mềm mã nguồn mở
- PHP không chỉ là phần mềm mã nguồn mở mà còn thực sự miễn phí (kể cả khi bạn
sử dụng cho mục đích thương mại)
- Do là phần mềm mã nguồn mở, các lỗi (bug) của PHP được công khai và nhanhchóng được sửa chữa bởi nhiều chuyên gia
2- Zend engine
Zend là scripting engine nằm bên trong PHP Zend Engine thực sự là sự cải tiến đáng
kể Hầu hết các đoạn mã viết trên PHP3 đều có thể chạy trên PHP4 với tốc độ tăng gấp
200 lần
3- Cài đặt php
Bạn có thể tìm phiên bản mới nhất của PHP tại địa chỉ http://www.php.net
PHP là phần mềm mã nguồn mở, bạn có thể download cả mã nguồn của PHP
Bạn có thể tìm tài liệu tham khảo của PHP tại địa chỉ http://www.php.net/manual
Cài đặt PHP với IIS
Control Panel/Add Remove Programs/Add Remove Window Components
Bật Internet Information Services
Download PHP Installer (Windows Binaries) từ http://www.php.net/downloads.php
Cài đặt PHP (chọn server IIS)
Trang 19Cài đặt Apache
Download Apache tại http://httpd.apache.org/
Cài đặt Apache
Download bản PHP zip package (Window Binaries)
Giải nén vào thư mục C:\PHP
Sửa file conf/httpd.conf, thêm vào nội dung sau
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php php
Action application/x-httpd-php "/php/php.exe"
Hoặc (Copy php5ts.dll vào thư mục c:/windows/system32)
LoadModule php5_module "c:/php/sapi/php5apache2.dll"
AddType application/x-httpd-php php
Thêm alias (vào trong httpd.conf)
Alias fake “realname”
a Macromedia DreamWaver
b Nusphere PHPED
c Zend Studio
Trang 202- Xuất giá trị ra trình duyệt:
Để xuất dữ liệu ra trình duyệt chúng ta có những dòng cú pháp sau :
- Echo "Thông tin";
- Printf "Thông tin";
Thông tin bao gồm : biến, chuỗi, hoặc lệnh HTML …
Trang 21- Tên của biến phải bắt đầu bằng dấu gạch dưới và theo sau là các ký tự, số hay dấugạch dưới
- Tên của biến không được phép trùng với các từ khóa của PHP
Trong PHP để sử dụng một biến chúng ta thường phải khai báo trước, tuy nhiên đối với các lập trình viên khi sử dụng họ thường xử lý cùng một lúc các công việc, nghĩa
là vừa khái báo vừa gán dữ liệu cho biến
Bản thân biến cũng có thể gãn cho các kiểu dữ liệu khác Và tùy theo ý định của ngườilập trình mong muốn trên chúng
Một số ví dụ về biến :
<?php
$a = 100; // biên hợp lệ
$a = “hello”; // biến hợp lệ
a = “hello”; // có lỗi vì không có $
$123 = “hello”; //có lỗi vì biến bắt đầu bằng số
?>
b) Khái niệm về hằng trong PHP.
Nếu biến là cái có thể thay đổi được thì ngược lại hằng là cái chúng ta không thể thay đổi được
- Định nghĩa hằng bằng cách sử dụng hàm define()
- Phạm vi của hằng là toàn cục (global)
- Chỉ có các dạng dữ liệu đơn giản (boolean, interger, float, string)
- Nếu tên hằng chưa được định nghĩa, PHP giả thiết rằng bạn đang sử dụng 1 hằng chứa giá trị là 1 string (chính là tên của hằng đó)
- Để xác định một hằng đã được định nghĩa hay chưa, bạn có thể sử dụng hàm defined
Trang 22Cũng giống với biến hằng được xem là hợp lệ thì chúng phải đáp ứng 1 số yếu tố :
- Hằng không có dấu "$" ở trước tên
- Hằng có thể truy cập bất cứ vị trí nào trong mã lệnh
- Hằng chỉ được phép gán giá trị duy nhất 1 lần
- Hằng thường viết bằng chữ in để phân biệt với biến
c) Khái niệm về string trong PHP.
String trong PHP là một chuỗi các ký tự 1 byte PHP không hỗ trợ Unicode, để làm việc với Unicode bạn phải sử dụng UTF8 với các hàm utf8_encode() – utf8_decode()
String của PHP hỗ trợ chiều dài rất lớn (?)
Trong PHP, string được xác định theo 3 cách
Dấu nháy đơn (single quote)
Dấu nháy kép (double quote)
Heredoc
Truyền biến trong string
Truyền kiểu đơn giản
Truyền kiểu phức
Truy cập đến từng ký tự trong string
Các toán tử trên string
Ví dụ :
<?php
echo ‘this is a sample string’; // kiểu nháy đơn
echo “this is a sample string”; // kiểu nháy kép
// kiêu heredoc
$str = <<<EOA
Example of string <br>
spanning multiple lines<br>
using heredoc syntax.<br>
EOA;
echo($str);
?>
Trang 23d) Các kiểu dữ liệu trong php
Trong php chúng ta có 6 kiểu dữ liệu sau:
3- Sử dụng php để kết nối cơ sở dữ liệu
Có 2 cách kết nối PHP với CSDL
- Sử dụng các hàm riêng cho từng loại CSDL
Ưu điểm: Tốc độ cao do được thiết kế cho từng CSDL cụ thể Tận dụng được ưu điểmcủa từng loại CSDL
Nhược điểm: Không có tính khả chuyển giữa các CSDL
- Sử dụng các hàm độc lập CSDL (thư viện PEAR DB)
Ưu điểm: Có thể sử dụng trên nhiều CSDL khác nhau
Nhược điểm: Chậm hơn phương pháp trên, không tận dụng được ưu điểm của từngCSDL
Cài đặt thư viện PEAR
– Yêu cầu: PHP phiên bản 5.0
- Cấu hình Zend Studio để làm việc với PEAR DB
– Thêm vào file $Zend_dir/bin/php5/php.ini 2 dòng
include_path=".;C:/php/pear"
extension_dir="c:/php/ext"
Trang 24– Copy file libMySQL.dll vào $Windows/$System (nếu bạn sử dụng IIS)Cài IIS, cài Mysql 5.0, cài PHP
Copy $\Mysql\bin\libMysql.dll đến c:\windows\system32
Copy PHP.rar đè lên thư mục c:/PHP
Sửa nội dung c:\windows\system32\PHP.INI, thêm vào các dòng sau (để ở cuối file)
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ậpnê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
Trang 254.1.3 Tổng quát về MySQL Server
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới (nằmtrong nhóm LAMP: Linux - Apache -MySQL - PHP) và được các nhà phát triển rất ưachuộng trong quá trình phát triển ứng dụng Vì MySQL là cơ sở dữ liệu tốc độ cao, ổnđịnh và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành, cung cấpmột hệ thống lớn các hàm tiện ích rất mạnh.Với tốc độ và tính bảo mật cao, MySQLrất thích hợp cho các ứng dụng có truy cập CSDL trên internet MySQL miễn phí hoàntoàn cho nên bạn có thể tải về MySQL từ trang chủ Nó có nhiều phiên bản cho các hệđiều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux,Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan
hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL)
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nólàm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl, Hiện naytrong số các Website có lưu lượng truy cập lớn thuộc hàng “top” trên Internet, có rấtnhiều Website sử dụng liên minh LAMP này ”Liên minh” mã mở LAMP đang đượccoi là một đối trọng với các sản phẩm mã đóng của Microsoft (Windows, IIS, SQLServer, ASP/ASP.NET)
Một số đặc điểm của MySQL:
MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương đương với SQL Server của Microsoft)
MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu
MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi người dùng có một tên truy cập (user name) và mật khẩu tương ứng để truy xuất đến CSDL
Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập và mật khẩu củatài khoản có quyền sử dụng CSDL đó Nếu không, sẽ không không thể kết nối và sửdụng dữ liệu trong đó
Trang 264.1.4 Tổng quát về Ajax
Vào những năm 90, trên thế giới, khi mà công nghệ “Web động” cho phép cáclập trình viên nhanh chóng phát triển các ứng dụng trên nền Web với khả năng tươngtác 2 chiều với người sử dụng, nhiều người đã có thể hy vọng rằng đến một lúc nào đótất cả các ứng dụng mà chúng ta sử dụng sẽ là các ứng dụng Web thay vì các phầnmềm chạy độc lập trên các máy tính đơn lẻ (ứng dụng desktop) Quả thật, với sự pháttriển chóng mặt của mạng Internet cùng với những ưu điểm của các ứng dụng Web(truy cập tại mọi nơi, không cần nâng cấp nhiều về phía máy sử dụng,…), tương laicủa các phần mềm chắc chắn sẽ gắn chặt với các ứng dụng Web, nếu không muốn nói
là có thể sẽ bị thay thế Tuy nhiên, cho đến giờ, hy vọng đó vẫn chưa được đáp ứngmột cách triệt để bởi một số điểm đặc trưng của ứng dụng Web lại chính là những giớihạn tưởng chừng như không thể vượt qua nổi Đó chính là cách thức mà người dùng
và ứng dụng Web tương tác với nhau
Khác với các phần mềm chạy độc lập ở máy khách (có khả năng tương tác gầnnhư tức thời với người dùng), các ứng dụng Web bị giới hạn bởi chính nguyên lý hoạtđộng của nó: tất cả các giao dịch phải thực hiện thông qua phương thức giao dịchHTTP (HyperText Transport Protocol - Giao thức truyền tải qua các siêu liên kết)trong một mô hình có tên Client/Server Bất kỳ một tác động nào của người dùng lênứng dụng Web thông qua trình duyệt đều cần thời gian gửi về Server và sau khi xử lý,
Trang 27Server sẽ trả về những thông tin người dùng mong đợi Như vậy, độ trễ trong trườnghợp này chính là điều mà các ứng dụng Web khó có thể sánh với như các phần mềmchạy trên máy tính đơn lẻ (đặc biệt là trong các ứng dụng như Bản đồ trực tuyến, soạnthảo văn bản trực tuyến, sát hạch trực tuyến có tính thời gian làm bài…) Thuật ngữ AJAX được xuất hiện vào ngày 18/2/2005 trong một bài báo có tên AJAX :
A New Approach to Web Applications [1] của tác giả Jesse James Garrett, công tyAdapativePath Ông định nghĩa và tóm gọn lại từ cụm từ “AsynchronousJavaScript+CSS+DOM+XMLHttpRequest” Ngay sau đó thuật ngữ AJAX được phổbiến cực kỳ nhanh chóng trong cộng đồng phát triển Web và cho đến nay nó là mộttrong những từ khóa được tìm kiếm nhiều nhất trên Internet.Nội dung định nghĩa của Garrett về AJAX trong bài báo của mình như sau:
AJAX không phải là một công nghệ Nó là tập hợp của nhiều công nghệ với thế mạnh của riêng mình để tạo thành một sức mạnh mới AJAX bao gồm:
1 Thể hiện Web theo tiêu chuẩn XHTML và CSS;
2 Nâng cao tính năng động và tương tác bằng DOM (Document ObjectModel);
3 Trao đổi và xử lý dữ liệu bằng XML và XSLT;
4 Truy cập dữ liệu theo kiểu bất đồng bộ (asynchronous) bằngXMLHttpRequest;
Và tất cả các kỹ thuật trên được liên kết lại với nhau bằng JavaScript Trong các thành phần cấu thành trên, điểm mấu chốt của AJAX nằm ởXMLHttpRequest Đây là một kỹ thuật do Microsoft khởi xướng và tích hợp lần đầutiên vào IE5 dưới dạng một ActiveX Mozilla tích hợp công nghệ này vào Mozilla1.0/Netscape 6 sau đó (đương nhiên toàn bộ các version sau này của Firefox đều cóXMLHttpRequest) và hiện nay đã có trong trình duyệt Safari 1.2 (Apple) và Opera 7trở lên Các vấn đề về XMLHttpRequest và cách sử dụng nó trên các trình duyệt khácnhau sẽ được chúng ta quay trở lại ở các phần tiếp theo Sau đây là một số nét khácbiệt cơ bản giữa các ứng dụng Web truyền thống và ứng dụng Web sử dụng AJAX.Trong các ứng dụng Web truyền thống, khi người dùng có một cần thay đổi dữ liệutrên trang Web, yêu cầu thay đổi được gửi về server dưới dạng HTTP request (hay còngọi postback), server sẽ xử lý yêu cầu này và gửi trả lại trang HTML khác thay thếtrang cũ Qui trình này được mô tả là nhấp-chờ và tải lại (click-wait-and-refresh): ví dụ
Trang 28người dùng sau khi nhấn một nút “Submit” trên trang Web phải chờ cho đến khi server
xử lý xong mới có thể tiếp tục công việc Ngược lại, trong các ứng dụng AJAX, ngườidùng có thể nhấn chuột, gõ phím liên tục mà không cần chờ đợi Nội dung tương ứngvới từng hành động của người dùng sẽ gần như ngay lập tức được hiển thị vào vị trícần thiết (đáp ứng gần như tức thời) trong khi trang Web không cần phải refresh lạitoàn bộ nội dụng Để tìm hiểu kỹ hơn điều này, ta sẽ xem xét 2 mô hình ứng dụng như[1] đã đề cập, Mô hình cổ điển và Mô hình AJAX-based:
Rõ ràng điểm khác biệt là thay vì phải tải cả trang Web thì với AJAX trình duyệtphía người dùng chỉ cần tải về phần của trang Web mà người dùng muốn thay đổi.Điều này giúp cho ứng dụng Web phản hồi nhanh hơn, thông minh hơn Ngoài ra,điểm đặc biệt quan trọng trong công nghệ AJAX nằm ở chữ A (Asynchronous) –không đồng bộ – tức là người dùng cứ gửi yêu cầu của mình tới server và quay lại vớicông việc của mình mà không cần chờ trả lời Khi nào server xử lý xong yêu cầu của
Trang 29phía người dùng, nó sẽ báo hiệu và người dùng có thể “thu nhận lấy” để thể hiệnnhững thay đổi cần thiết Vậy tất cả cơ chế này hoạt động thực sự thế nào? AJAX chophép tạo ra một AJAX Engine nằm giữa giao tiếp này Khi đó, các yêu cầu gửi(resquest) và nhận (response) do AJAX Engine thực hiện Thay vì trả dữ liệu dướidạng HTML và CSS trực tiếp cho trình duyệt, Web server có thể gửi trả dữ liệu dạngXML và AJAX Engine sẽ tiếp nhận, phân tách và chuyển hóa thành XHTML + CSScho trình duyệt hiển thị Việc này được thực hiện trên client nên giảm tải rất nhiều choserver, đồng thời người sử dụng cảm thấy kết quả xử lý được hiển thị tức thì mà khôngcần nạp lại trang Mặt khác, sự kết hợp của các công nghệ Web như CSS và XHTMLlàm cho việc trình bày giao diện trang Web tốt hơn nhiều và giảm đáng kể dung lượngtrang phải nạp Đây là những lợi ích hết sức thiết thực mà AJAX đem lại.
Đôi nét về jQuery: jQuery là một thư viện “kiểu mới” của JavaScript hỗ trợ bạn
trong việc xử lý HTML, xử lý các sự kiện trong trang HTML, tạo các hiệu ứng đẹp, xử
lý Ajax nhanh và ngắn gọn hơn cho ứng dụng web của bạn jQuery trở thành thư việnđược lựa chọn cho các nhà phát triển web và nhanh chóng trở thành sự lựa chọn đầutiên cho các lập trình viên đang tìm cách để giảm nhẹ công việc phát triển dịch vụ phíakhách của họ và tạo ra các RIA (Rich Internet Applicatrion) một cách nhanh chóng vàhiệu quả Do việc sử dụng RIA trở nên ngày càng phổ biến trên toàn thế giới, nên việc
sử dụng các thư viện JavaScript để hỗ trợ sự phát triển của họ cũng sẽ tiếp tục tăng.RIA được định nghĩa (không rõ ràng) vì rằng các ứng dụng chạy thông qua trìnhduyệt, trình duyệt này sử dụng kết hợp của CSS/JavaScript/Ajax để tạo ra công việctrên ứng dụng của máy tính để bàn Các tính năng mới nhất, được bổ sung vào các bảnphát hành gần đây của Firefox, Internet Explorer, Safari, và bản phát hành gần đây củatrình duyệt Google Chrome mới, được tập trung vào việc tăng tốc độ của máyJavaScript nội bộ của mỗi trình duyệt nhằm mục đích duy nhất là làm cho nó trở nênthuận lợi hơn cho loại ứng dụng RIAs, loại ứng dụng mà những người tạo ra trìnhduyệt tưởng tượng là chúng ta sẽ sử dụng trong tương lai gần Các công ty này hìnhdung các trang Web có chứa hàng chục ngàn dòng mã JavaScript, cho thấy tầm quantrọng của một thư viện hoàn thiện và không có lỗi và từ đó sẽ bắt đầu mọi công việcquan trọng hơn
Cho nên, vì tương lai của các ứng dụng web đang hướng tới các giao diện nhúng
và phong phú này, nên các nhà phát triển web ngày càng chú trọng vào các công cụ để
Trang 30giảm nhẹ các công việc Hiện giờ trên thế giới đã có một số thư viện JavaScript, mỗimột thư viện có những điểm mạnh và điểm yếu và có những người hâm mộ với lời phêbình riêng của nó jQuery đã trở thành sự lựa chọn chiếm ưu thế cho các thư việnJavaScript và sự lựa chọn đó đang tăng lên nhanh chóng
Symfony là một framework đầy đủ được thiết kế để tối ưu việc phát triển ứng dụng web bằng một vài đặc điểm chính Với những người mới bắt đầu, nó phân chia những qui tắc nghiệp vụ, server logic và phần hiển thị của ứng dụng web Nó có nhữngcông cụ và class để thu ngắn thời gian phát triển của những ứng dụng web phức tạp Thêm vào đó, nó tự động hóa những công việc thông thường để lập trình viên có thể tập trung hoàn toàn vào những đặc điểm của ứng dụng Kết quả cuối cùng của những điểm lợi này là không cần phải lặp lại (reinvent the wheel) mỗi lần tạo ứng dụng web!
Trang 31Symfony được viết hoàn toàn bằng PHP 5 Nó đã được kiểm tra một cách hoàn hảo trong nhiều dự án thực tế khác nhau và thực sự được dùng cho những website kinhdoanh điện tử có yêu cầu cao Nó tương thích với hầu hết các loại cơ sở dữ liệu, bao gồm MySQL, PostgreSQL, Oracle, và Microsoft SQL Server Nó chạy trên hệ điều hành *nix và Windows Hãy bắt đầu xem xét những tính năng của nó
Những tính năng của Symfony
Symfony được xây dựng để thực hiện các yêu cầu sau:
- Dễ cài đặt và cấu hình trên hầu hết các hệ điều hành (và được bảo đảm làm việc trên các hệ điều hành chuẩn *nix và Windows)
- Độc lập với hệ cơ sở dữ liệu
- Dễ dùng trong hầu hết các trường hợp nhưng vẫn đủ mềm dẻo để thích nghi với những trường hợp phức tạp
- Hoạt động theo cấu hình định trước lập trình viên chỉ cần cấu hình trong những trường hợp riêng biệt
- Tuân theo những hoạt động và mẫu thiết kế tốt nhất
- Sẵn sàng cho môi trường xí nghiệp thích nghi với những chính sách và kiến trúccông nghệ thông tin và đủ ổn định cho những dự án dài hạn
- Mã rất dễ đọc, với những chú thích kiểu phpDocumentor, dễ dàng bảo trì
- Dễ dàng mở rộng, cho phép tích hợp với những thư viện khác
Những tính năng dự án web được tự động Hầu hết các chức năng thông thường của những dự án web được tự động trong symfony, như sau:
- Lớp internationalization có sẵn cho phép phiên dịch giao diện, dữ liệu cũng như làcontent localization
- Phần presentation sử dụng template và layout có thể được xây dựng bởi người thiết kế HTML mà không cần có kiến thức về framework Các helper làm giảm số lượng mã presentation phải viết bằng cách tóm gọn các phần của mã vào những
function đơn giản
- Các form hỗ trợ kiểm tra và điền tự động, và điều này đảm bảo chất lượng tốt của
dữ liệu trong cơ sở dữ liệu và kinh nghiệm người sử dụng tốt hơn
- Việc escape output bảo vệ các ứng dụng khỏi những tấn công thông qua dữ liệu bịhỏng
- Những tính năng quản lý cache giúp giảm lượng băng thông và tải của máy chủ
Trang 32- Những tính năng phân quyền và xác nhận giúp việc tạo các quản lý những mục hạn chế và bảo mật người dùng dễ dàng hơn
- Việc định hướng và các URL thông minh làm cho phần địa chỉ của các trang trở nên thân thiện với máy tìm kiếm
- Các tính năng quản lý API và email sẵn có cho phép ứng dụng web vượt qua những tương tác trình duyệt cổ điển
- Các danh sách trở nên thân thiện với người dùng hơn nhờ việc phân trang, sắp xếp
và tìm kiếm 1 cách tự động
- Các factory, plugins và mixins cung cấp khả năng mở rộng ở mức cao
- Các tương tác AJAX dễ hiện thực nhờ vào các helper 1 dòng tóm lượt những hiệuứng javascript tương thích với các trình duyệt
Môi trường và công cụ phát triển:
Để đáp ứng những yêu cầu của những doanh nghiệp có các chuẩn viết mã riêng vàcác qui tắc quản lý dự án, symfony có thể hoàn toàn được tùy biến Mặc nhiên nó cungcấp một vài môi trường phát triển và được gói gọn với nhiều công cụ để tự động hóa những nhiệm vụ công nghệ phần mềm thông thường:
- Các công cụ sinh mã tự động rất tuyệt cho việc tạo bản prototype và phần quản
lý backend chỉ với vài dòng lệnh
- Unit và funtional testing framework sẵn có cung cấp những công cụ rất tốt cho phép test-driven developement
- Debug: giúp debug tất cả thông tin mà lập trình viên cần trên trang
- Giao diện chế độ dòng lệnh tự động hóa triển khai các ứng dụng giữa hai server
- Tính năng logging cung cấp cho adminnistrators những chi tiết đầy đủ về sự hoạt động của một ứng dụng
Trang 33Để cài đặt symfony, download file nén trên trang web symfony Hướng dẫn này đượcviết trên symfony 1.2, hãy download phiên bản mới nhất của symfony 1.2.
Ở mục "Source Download", bạn sẽ tìm thấy file nén dạng .tgz hoặc .zip Downloadfile này và copy vào thư mục vừa tạo lib/vendor, sau đó giải nén:
Trang 34Nếu đoạn script không hiện thông báo lỗi, hãy kiểm tra để chắc rằng symfony được càithành công bằng cách sử dụng lệnh của symfony để xem phiên bản (chữ cái V viết hoa):
Từ thư mục jobeet, chạy lệnh generate:project để tạo 1 project symfony:
$ php lib/vendor/symfony/data/bin/symfony generate:project jobeet
Ở Windows:
c:\> php lib\vendor\symfony\data\bin\symfony generate:project jobeet
Lệnh generate:project tạo ra cấu trúc file và thư mục mặc định cần cho một project symfony:
Trang 35Tại sao symfony tạo ra quá nhiều file vậy? Một trong những lợi ích của việc sử dụngfull-stack framework là chuẩn hoá sự phát triển của bạn Nhờ cấu trúc file và thư mụcthống nhất của symfony, bất kì lập trình viên nào có hiểu biết về symfony cũng có thểthực hiện công việc bảo trì cho bất kì dự án symfony nào Sau một thời gian ngắn, anh
ta đã có thể bắt đầu code, sửa lỗi, và thêm tính năng mới
Lệnh generate:project cũng tạo một shortcut symfony ở thư mục ngoài cùng của project Jobeet để giảm số kí tự phải gõ trong lệnh
Vì thế, từ bây giờ, thay vì gõ đầy đủ đường dẫn, chúng ta chỉ cần gõ symfony
Bây giờ, tạo application frontend bằng lệnh generate:app:
$ php symfony generate:app escaping-strategy=on
escaping-strategy: cho phép output escaping để chống tấn công XSS
csrf-secret: cho phép session tokens in form để chống tấn công CSRF
Trang 36Nhờ 2 tham số này, chúng ta đã bảo vệ được ứng dụng của mình khỏi 2 lỗ hổng bảomật phổ biến trên web.
Bây giờ, bạn có thể copy project Jobeet đến bất kì đâu, nó vẫn chạy được
Môi trường
Trong thư mục web/ , bạn có thể thấy 2 file PHP: index.php và frontend_dev.php
Những file này được gọi là front controllers: mọi yêu cầu đến ứng dụng đều thông
qua chúng Nhưng tại sao chúng ta có 2 file front controllers trong khi chúng ta chỉ cómột ứng dụng?
Cả hai file đều gọi cùng một ứng dụng nhưng trong những môi trường khác nhau Khibạn phát triển một ứng dụng, trừ khi bạn phát triển trực tiếp sản phẩm trên server, bạncần vài môi trường:
development environment: môi trường sử dụng bởi web developers để thêm
các tính năng, sửa lỗi,
test environment: môi trường sử dụng cho các ứng dụng test tự động.
staging environment: môi trường sử dụng bởi customer để test ứng dụng và
thông báo lỗi và các tính năng thiếu
production environment: môi trường tương tác với end user.
Trong môi trường development, ứng dụng cần log tất cả các request để dễ dàng tìmlỗi, nó phải hiển thị exception trên trình duyệt, và hệ thống cache phải được tắt để cóthể thấy thay đổi khi thay đổi code Vì thế, môi trường development phải được cấuhình cho phù hợp với lập trình viên