Cung cấp nội dung Sử dụng các giao thức chuẩn hoá để cho phép người dùng sử dụngthông tin theo cách của mình nghĩa là có khả năng tùy biến thông tin.. So sánh ứng dụng web truyền thống v
Trang 1MỤC LỤC
MỤC LỤC 1
PHẦN 1 : CƠ SỞ LÝ THUYẾT 3
CHƯƠNG 1: MỘT SỐ CÔNG NGHỆ WEB 3
1.1 Giới thiệu về web 2.0 và công nghệ Ajax 3
1.1.1 Web 2.0 3
1.1.2 Công nghệ Ajax 4
1.1.3 So sánh công nghệ Ajax và công nghệ web truyền thống 5
1.2 Các công nghệ trong Ajax 6
1.2.1 CSS 7
1.2.2 DOM 8
CHƯƠNG 2: CÔNG NGHỆ WEB LAMP 9
2.1 Giới thiệu công nghệ Web LAMP 9
2.2 Các thành phần cơ bản của LAMP 9
2.2.1 Linux 9
2.2.2 Apache 13
2.2.3 MySQL 14
2.2.4 PHP-Ngôn ngữ kịch bản 21
PHẦN 2 : XÂY DỰNG HỆ THỐNG 41
CHƯƠNG 1: MÔ TẢ HỆ THỐNG 41
1.1 Đặt vấn đề 41
1.2 Thi trắc nghiệm ngoại ngữ truyền thống hiện nay: 42
1.3 Một số hạn chế của hình thức thi trắc nghiệm truyền thống là: 43
1.4 Hệ thống thi trắc nghiệm ngoại ngữ trên mạng 44
1.4.1 Thành phần tham gia: 44
1.4.2 Hoạt động gồm: 44
1.5 Các dạng trắc nghiệm ngoại ngữ có thể thực hiện: 47
1.5.1 Câu hỏi có nhiều phương án lựa chọn với một phương án 47
Trang 21.5.2 Câu hỏi có nhiều phương án lựa chọn với nhiều phương án 47
1.5.3 Câu hỏi đúng sai 47
1.5.4 Câu hỏi điền khuyết 47
1.5.5 Câu hỏi ghép đôi 47
1.5.6 Câu hỏi tìm ý chính của một đoạn văn 48
CHƯƠNG 2 : PHÂN TÍCH HỆ THỐNG 49
2.1 PHÂN TÍCH CHỨC NĂNG 49
2.1.1 Sơ đồ ngữ cảnh 49
2.1.2 Biểu đồ phân rã chức năng : 50
2.1.3 Mô tả chi tiết chức năng : 51
2.1.4 Sơ đồ luồng dữ liệu 54
2.1.5 Đặc tả một số tiến trình chính 62
2.2 PHÂN TÍCH DỮ LIỆU 68
2.2.1 Mô hình quan hệ 68
2.2.2 Đặc tả bảng dữ liệu 70
CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH 92
3.1 THIẾT KẾ KIỂM SOÁT (PHÂN NHÓM NGƯỜI DÙNG): 92
3.3.1 Xác định nhu cầu bảo mật: 92
3.3.2 Phân định nhóm người dùng: 93
3.3.3 Quy định quyền hạn cho các nhóm người dùng 93
3.2 THIẾT KẾ CƠ SỞ DỮ LIỆU VẬY LÝ: 94
3.3.1 Xây dựng các bảng cơ sở sữ liệu trên MySQL: 94
3.3.2 Lược đồ quan hệ Diagrams: 100
3.3 THIẾT KẾ GIAO DIỆN: 101
3.3.1 Các kỹ thuật sử dụng: 101
3.3.2 Các Modul chính: 101
3.3.3 Chi tiết từng trang 101
KẾT LUẬN 115
LỜI CẢM ƠN 116
Trang 3TÀI LIỆU THAM KHẢO 117
Trang 4PHẦN 1 : CƠ SỞ LÝ THUYẾT
CHƯƠNG 1: MỘT SỐ CÔNG NGHỆ WEB
1.1Giới thiệu về web 2.0 và công nghệ Ajax
1.1.1 Web 2.0
Web 2.0 hội tụ 7 đặc tính sau
1 Web có vai trò nền tảng, có thể chạy mọi ứng dụng
2 Tập hợp trí tuệ cộng đồng
3 Dữ liệu có vai trò then chốt
4 Phần mềm được cung cấp ở dạng dịch vụ web và được cập nhật không ngừng
5 Phát triển ứng dụng dễ dàng và nhanh chóng
6 Phần mềm có thể chạy trên nhiều thiết bị
7 Giao diện ứng dụng phong phú
Kiến trúc công nghệ của Web 2.0 hiện vẫn đang phát triển nhưng cơbản bao gồm: phần mềm máy chủ, cơ chế cung cấp nội dung, giao thứctruyền thông, trình duyệt và ứng dụng
Cung cấp nội dung
Sử dụng các giao thức chuẩn hoá để cho phép người dùng sử dụngthông tin theo cách của mình (nghĩa là có khả năng tùy biến thông tin) Cónhiều giao thức được phát triển để cung cấp nội dung như RSS, RDF vàAtom, tất cả đều dựa trên XML Ngoài ra còn có các giao thức đặc biệtnhư FOAF và XFN dùng để mở rộng tính năng của website hay cho phépngười dùng tương tác
Dịch vụ WEB
Các giao thức truyền thông 2 chiều là một trong những thành phần thenchốt của kiến trúc Web 2.0 Có hai loại giao thức chính là REST vàSOAP REST (Representation State Transfer) là dạng yêu cầu dịch vụ
Trang 5web mà máy khách truyền đi trạng thái của tất cả giao dịch; còn SOAP(Simple Object Access Protocol) thì phụ thuộc máy chủ trong việc duy trìthông tin trạng thái Với cả hai loại, dịch vụ web đều được gọi qua API.Ngôn ngữ chung của dịch vụ web là XML, nhưng có ngoại lệ.
Phần mềm máy chủ
Web 2.0 được xây dựng trên kiến trúc web thế hệ trước nhưng chútrọng hơn đến phần mềm làm việc ở background Cơ chế cung cấp nộidung chỉ khác phương thức cấp phát nội dung động (của Web 1.0) vềdanh nghĩa, tuy nhiên dịch vụ web yêu cầu tiến trình làm việc và dữ liệuchặt chẽ hơn
Các giải pháp phát triển theo hướng Web 2.0 hiện nay có thể phân làmhai loại: hoặc xây dựng hầu hết tính năng trên một nền tảng máy chủ duynhất; hoặc xây dựng ứng dụng "gắn thêm" cho máy chủ web, có sử dụnggiao tiếp API
1.1.2 Công nghệ Ajax
Ajax 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:
Thể hiện web theo tiêu chuẩn XHTML và CSS
Nâng cao tính năng động và phản hồi bằng DOM (DocumentObject Model)
Trao đổi và xử lý dữ liệu bằng XML và XSLT
Truy cập dữ liệu theo kiểu bất đồng bộ (asynchronous) bằngXMLHttpRequest
Và tất cả các công nghệ trên được liên kết lại với nhau bằngJavaScript
1.1.3 So sánh công nghệ Ajax và công nghệ web truyền thống
Điểm khác biệt cơ bản nhất của công nghệ Ajax và cách công nghệ webtruyền thống là việc xử lý thông tin được thực hiện trên máy khách(Client) thay vì máy phục vụ (Server) như cách truyền thống Máy chủ chỉ
Trang 6làm một việc đơn giản là nhận thông tin từ máy khách và trả các dữ liệu
về cho máy khách Máy khách xử lý sơ bộ thông tin của người dùng nhậpvào, sau đó chuyển về máy chủ rồi nhận dữ liệu từ máy chủ và xử lý đểhiển thị cho người dùng
So sánh ứng dụng web truyền thống và Ajax
Các ứng dụng Ajax phần lớn trông giống như thể chúng được đặt trênmáy của người sử dụng hơn là được đặt trên một máy phục vụ thông qua
Internet Lý do: các trang được cập nhật nhưng không nạp lại (refresh)
toàn bộ "Mọi thao tác của người sử dụng sẽ gửi mẫu của một lời gọi
JavaScript tới bộ xử lý (engine) Ajax thay vì tạo ra một yêu cầu HTTP (HTTP request)".
Trang 7Sự tương tác đồng bộ trong ứng dụng web truyền thống và dị bộ trong ứng dụng
Ajax
1.2.Các công nghệ trong Ajax
JAX là một tập hợp các công nghệ bổ sung lẫn nhau JavaScript có vaitrò chất keo kết dính các ứng dụng lại với nhau Giao diện người dùngđược tạo và tái nạp bằng cách dùng JavaScript để điều khiển DocumentObject Model, tạo và tổ chức biểu diễn dữ liệu cho người dùng, đồng thời
xử lí các tương tác trên chuột và bàn phím
1.2.1 CSS
Cascading Style Sheets (CSS) cung cấp một sự nhất quán trên cảm
quan “look and feel” cho ứng dụng và khả năng thao tác mạnh mẽ vớiDOM Đối tượng XMLHttpRequest (hay một cơ chế tương đương nào đó)được dùng để liên lạc một cách bất đồng bộ với server, đảm bảo việc gửiyêu cầu người dùng và tái nạp dữ liệu trong khi người dùng vẫn làm việc.Cascading Style Sheet – tạm dịch là bảng kiểu xếp chồng - là một phầnkhông thể thiếu trong thiết kế Web, nó được dùng rất nhiều trong các ứng
Trang 8dụng Web truyền thống cũng như trong Ajax Một stylesheet đưa ra cáchkiểm soát các loại định dạng trực quan, nó có thể được áp dụng cho cácthành phần riêng lẻ trên các trang.
Ưu điểm của CSS trong thiết kế web
Giúp tiết kiệm được thời gian và công sức cho việc thiết kế web
Cho phép điều khiển cách định dạng và cách bố trí của cùng lúc nhiều trang web với chỉ duy nhất một lần thay đổi tại một vị trí
Có thể định nghĩa nhiều style vào một thẻ HTML
1.2.2 DOM
Document Object Model (DOM) giúp phân tích một tài liệu (một trang
web chẳng hạn) phục vụ cho cơ chế của JavaScript Sử dụng DOM, cấutrúc của tài liệu có thể được phân rã theo cấu trúc cây và thao tác theo cácnút Đây là một khả năng đặc biệt hữu ích để viết một ứng dụng Ajax Trong các ứng dụng web truyền thống, trình duyệt phải tái nạp cáctrang HTML theo một luồng từ server Trong một ứng dụng AJAX, sựthay đổi giao diện người dùng chủ yếu được tạo ra bởi DOM Các thẻHTML trong trang web được tổ chức theo cấu trúc cây Gốc của cây làthẻ <HTML>, để biểu diễn tài liệu Trong đó thẻ <BODY> biểu diễnphần thân của tài liệu, là gốc của phần hiển thị của tài liệu Trong thân của
Trang 9tài liệu, có các bảng, paragraph, list, và các loại thẻ khác với các thẻ ởmức thấp hơn nữa
Một biểu diễn theo mô hình DOM của một trang web là một cấu trúccây, có các phần tử là các nút, rồi nó chứa các nút con trong nó, và cứ tiếptục một cách đệ qui như thế JavaScript làm việc với nút gốc của trangweb hiện thời qua một biến toàn cục gọi là document, biến này là điểmbắt đầu của mọi thao tác trên DOM Phần tử DOM đã được đặc tả bởiW3C Mỗi phần tử DOM có một phần tử cha duy nhất, có hoặc không cócác phần tử con, và có một số bất kỳ các thuộc tính, chúng được lưu trữtrong mảng móc nối Mối quan hệ giữa các phần tử DOM có thể được đốichiếu bởi danh sách các thành phần HTML Mối quan hệ này là hai chiều.Sửa đổi mô hình DOM sẽ thay đổi cấu trúc HTML và dẫn đến thay đổicách biểu diễn một trang web
CHƯƠNG 2: CÔNG NGHỆ WEB LAMP
2.1Giới thiệu công nghệ Web LAMP
L.A.M.P là một thuật ngữ được dùng khá phổ biến hiện nay, là một
hệ thống đáp ứng đầy đủ những tính năng khó nhất của ứng dụng webnhư: Database, Mail, SOAP
L.A.M.P là cụm từ viết tắt từ những từ: Linux, Apache, Mysql,PHP/Perl/Python- là một hệ thống hoàn toàn mở và miễn phí
2.2Các thành phần cơ bản của LAMP
- Linux là gì?
Linux là hệ điều hành Về mặt nguyên tắc hệ điều hành cũng là mộtphần mềm; nhưng đây là một phầm mềm đặc biệt – được dùng để quản lý,điều phối các tài nguyên của hệ thống (bao gồm cả phần cứng và các phần
Trang 10mềm khác) Linux còn được gọi là Open Source Unix (OSU), Unix-likeKernel, clone of the UNIX operating system.
Hiện nay, Linux là một hệ điều hành với mã nguồn mở và miễn phídưới bản quyền của tổ chức GNU (Gnu’s Not Unix)
Khởi đầu, Linux được thiết kế để hoạt động trên nền tảng của kiến trúci386 Intel với khả năng đa tác vụ Tuy nhiên ngày nay, Linux đã có cácphiên bản trên các họ chip khác chẳng hạn như chip Alpha
Linux có nguyên lý hoạt động tương tự hệ điều hành Unix (Unix-like).Mặc dù Linux không phải là Unix nhưng người ta vẫn xem Linux như làphiên bản Unix trên PC (PC version of Unix OS)
Do là Unix-like; Linux có đầy đủ tất cả các đặc tính của Unix (fullyfunctional) Ngoài ra nó còn hỗ trợ thêm một số tính năng mà trên Unixkhông có, như long file name (tên file có ký tự space “ ”)
Hiện tại có nhiều hãng, nhiều tổ chức, nhiều nhóm khác nhau cùng pháttriển Linux Tất cả các phiên bản Linux đều có chung phần kernel (phầnnhân của hệ điều hành) và hầu hết các tính năng đặc trưng, tuy nhiên cáccông cụ và tiện ích có đôi chút dị biệt Có rất nhiều các ứng dụng choLinux, tuy nhiên hầu hết các ứng dụng cho Linux hiện có đều là các ứngdụng mang tính chuyên dụng Để đưa Linux vào từng gia đình, các tổchức, các hãng đang cố gắng phát triển các ứng dụng mang tính phổ cậptrên Linux chẳng hạn hãng SUN đưa ra phiên bản Star Office tương tựnhư MS Office – và cũng tương thích với MS Office - cho những người
sử dụng Linux ở gia đình, văn phòng
Hãng Borland (nay là hãng Inprise) đang phát triển một dự án có tên làKyLix, nhằm đưa ra một môi trường lập trình cấp cao trên Linux, đồngthời các ứng dụng trên Windows được viết bằng Delphi/C++Builder sẽ dễdàng compile (biên dịch) lại dưới Linux bằng KyLix Hiện tại Kylix đã cóphiên bản thử nghiệm (beta) Dự án này hứa hẹn một loạt các ứng dụngthông thường đã có trên MS Windows sẽ mau chóng được chuyển sang
Trang 11Linux, và điều này sẽ giúp cho hệ điều hành Linux dễ dàng thâm nhậpvào thị trường PC nhanh chóng hơn Các ứng dụng được viết trên Linuxđều có thể hoạt động trên các hệ thống UNIX
Các phiên bản hiện nay gồm có:
RedHat Linux (Fedora Core)
Những ứng dụng văn phòng của Linux rất đa dạng như chương trình xử
lý văn bản mức chuyên nghiệp, chuơng trình tính toán, chương trình vẽ…Những bộ office văn phòng hiện nay của Linux cũng rất đa dạng đượccung cấp bởi nhiều công ty khác nhau Mỗi một bộ office văn phòng củaLinux đều có những đặc tính riêng nhằm cung cấp cho người sử dụngnhững ứng dụng cần thiết, những bộ office được biết đến như:OpenOffice, KOffice, StarOffice, CrossOver Office, Ximian Desktop andoffice applications, GNOME Office…Có một số bộ office cơ bản nhưsau:
OpenOffice
Koffice
StarOffice
- Những ứng dụng trong việc quản lý cơ sở dữ liệu:
Những hệ thống quản lý cơ sở dữ liệu được sử dụng trong hệ điều hànhLinux rất đa dạng như: Oracle, Sybase, và DB2 của hãng IBM… Red Hatcũng đã cung cấp cho Linux những hệ thống quản lý cơ sở dữ liệu lớn như
Trang 12MySQL và PostgreSQL Tuy nhiên ngoài những hệ thống quản lý cơ sở
dữ liệu ở mức lớn, Linux còn được cung cấp những hệ thống quản lý dữliệu vừa và nhỏ như KDE và GNOME Ngoài ra Linux còn cung cấpnhững phần mềm sẵn sàng cho những cơ sở dữ liệu truy nhập với ngônngữ lập trình như Xbase Tất cả các hệ quản trị cơ sở dữ liệu đểu miễnphí Có các loại quản trị cơ sở dữ liệu như sau:
Domain Name Service (DNS)
Một mạng máy tính của Linux bao gồm:
Linux file server
Linux backup
Linux firewall
Trang 13 Các client (có thể chạy nhiều hệ điều hành khác nhau Unix, Macintosh
Apache hay là chương trình máy chủ HTTP là một chương trình dànhcho máy chủ đối thoại qua giao thức HTTP Apache chạy trên các hệ điềuhành tương tự như Unix, Microsoft Windows, Novell Netware và các hệđiều hành khác Apache đóng một vai trò quan trọng trong quà trình pháttriển của mạng web thế giới (tiếng Anh: World Wide Web)
Khi được phát hành lần đầu, Apache là chương trình máy chủ mãnguồn mở duy nhất có khả năng cạnh tranh với chương trình máy chủtương tự của Netscape Communications Corporation mà ngày nay đượcbiết đến qua tên thương mại Sun Java System Web Server Từ đó trở đi,Apache đã không ngừng tiến triển và trở thành một phần mềm có sứccạnh tranh mạnh so với các chưong trình máy chủ khác về mặt hiệu suất
và tính nãng phong phú Từ tháng 4 nãm 1996, Apache trở thành mộtchương trình máy chủ HTTP thông dụng nhất Hơn nữa, Apache thườngđược dùng để so sánh với các phần mềm khác có chức năng tương tự.Tính đến tháng 1 năm 2007 thì Apache chiếm đến 60% thị trường cácchưong trình phân phối trang web
Trang 14Apache được phát triển và duy trì bở một cộng đồng mã nguồn mởdưới sự bảo trợ của Apache Software Foundation Apache được phát hànhvới giấy phép Apache License và là một phần mềm tự do và miễn phí.
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,
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ằngPHP hay Perl,
- Tại sao lại sử dụng MySQL:
MySQL từ lâu đã là hệ CSDL được dùng phổ biến nhất với PHP vì tínhgọn nhẹ, nhanh, miễn phí và được PHP hỗ trợ sẵn Ổn định, bảo mật, truyxuất cơ sở dữ liệu nhanh, dễ cài đặt, dễ sử dụng, phù hợp với những phầnmềm cơ sở dữ liệu nhỏ, các website thông thường Hiện nay trong số cácWebsite có lưu lượng truy cập lớn thuộc hàng nhất trên Internet, có rấtnhiều Website sử dụng liên minh LAMP này "Liên minh" mã mở LAMPđang được coi là một đối trọng với các sản phẩm mã đóng của Microsoft(Windows, IIS, SQL Server, ASP/ASP.NET)
- Một số đặc điểm của MySQL
Trang 15MySQL 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 quacá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 đếnCSDL 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ủa tài khỏan có quyền sử dụng CSDL đó
+ Kết nối vào cơ sở dữ liệu
PHP cung cấp hàm mysql_connect để kết nối vèo MySQL server Cúpháp của hàm này như sau: mysql_connect($server_address, $username,
$password)
$server_address là địa chỉ của MySQL server, có thể là domain namehoặc IP address, các ví dụ trong bài viết này sẽ dùng giá trị "localhost"cho $server_address
$username là tên account dùng để login vào MySQL server, các ví dụtrong bài viết sẽ sử dụng giá trị "root" cho $username
$password là mật mã để kết nối vào MySQL server, các ví dụ trong bàiviết sẽ sử dụng "aaa" làm mật mã Hàm mysql_connect sẽ trả về 1 kết nốiđến MySQL server nếu như quá trình kết nối thành công, hoặc trả về giátrị FALSE nếu như kết nối không được Để đóng kết nối tới MySQLserver, PHP cung cấp hàm mysql_close
Trang 16if ( !$conn ) {
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
} //end if
//đóng kết nối
mysql_close($conn);?>
Chọn cơ sở dữ liệu để làm việc
Sau khi connet vào MySQL server, thao tác tiếp theo là chọn CSDL đểlàm việc PHP cung cấp cho ta hàm mysql_select_db để làm việc này Cúpháp của hàm này như sau:
mysql_select_db($db_name[, $conn])
Với $db_name là tên CSDL cần chọn, $conn là kết nối được thực hiệnqua lệnh mysql_connect
+ Thực thi một câu lệnh select và lấy kết quả trả về
PHP cung cấp cho ta 3 hàm hữu dụng để thực hiện công việc này:
$result = mysql_query($sql, $conn): thực hiện câu lệnh SQL được cung
cấp qua tham số $sql và trả về 1 kết quả kiểu $result (hàm này trả vềFALSE nếu như câu lệnh thực hiện không thành công)
mysql_num_rows($result): hàm này trả về số lượng row lấy được qua
câu lệnh SELECT (được thực thi bởi hàm mysql_query) trước đó
$row = mysql_fetch_row($result), $row = mysql_fetch_assoc($result):
trả về dòng kết quả hiện thời của câu lệnh select và chuyển con trỏ tớidòng tiếp theo (như vậy lệnh gọi mysql_fetch_row hoặcmysql_fetch_assoc tiếp đó sẽ trả về dòng tiếp theo); hoặc giá trị FALSEnếu như không còn dòng nào để trả về nữa Kết quả trả về từ hai hàm này
là một mảng
Trang 17mysql_error($conn): trả về thông báo lỗi của MySQL server nếu như
một lệnh trước đó có lỗi Để hiểu rõ hơn công dụng của các hàm trên,
đồng thời phân biệt sự khác nhau giữa 2 hàm mysql_fetch_row và
mysql_fetch_assoc, ta cung xem xét các ví dụ sau Các ví dụ của ta sẽ sử
dụng table có tên là mk_managers với các trường và dữ liệu như sau:useranem, password
Hàm mysql_fetch_row() sẽ trả về 1 array mà phần tử thứ [0] sẽ tương
ứng với cột đầu tiên của table, phần tử thứ [1] sẽ tương ứng với cột thứhai của table Chương trình trên sẽ in ra ra 4 dòng:
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server: ".mysql_error($conn)); } //end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
$sql = "SELECT * FROM `mk_managers`";
$result = mysql_query($sql, $conn);
Trang 18echo "Username = ".$row['username']."<br>\n";
echo "Password = ".$row['password']."<br>\n";
Hàm mysql_fetch_assoc() sẽ trả về 1 array mà các phần tử sẽ được truy
cập qua tên, với tên được lấy từ tên các cột của table Chương trình ví dụ
2.3.3.3 Thực thi câu lệnh update, insert hoặc delete
Hàm mysql_query cũng được dùng để thực thi các câu lệnh DELETE,
INSERT hoặc UPDATE, nhưng lúc này hàm sẽ trả về TRUE nếu câu lệnhthực hiện thành công và FALSE trong trường hợp ngược lại Để lấy sốlượng các row được chèn với lệnh INSERT hoặc bị thay đổi bởi lệnhUPDATE, PHP cung cấp cho ta hàm mysql_affected_rows Ta hãy xem
ví dụ sau:
<?php
Trang 19//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server: ".mysql_error($conn)); } //end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
$sql = "INSERT INTO `mk_managers` (username, password) VALUES ('xyz', '000')";
$result = mysql_query($sql, $conn); //chèn thêm 1 dòng vào table
Trang 20$sql = "DELETE FROM `mk_managers`";
$result = mysql_query($sql, $conn); //xoá hết tất cả các account
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 đốingắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thànhmột ngôn ngữ lập trình web phổ biến nhất thế giới
PHP được xây dựng bởi cộng đồng mã nguồn mở và có sự đóng góp rấtlớ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ênnhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy
mô xí nghiệp
- Lịch sử ra đời của PHP
PHP được phát triển từ một sản phẩm có tên là PHP/FI do RasmusLerdorf tạo ra năm 1995 PHP/FI, viết tắt từ "Personal Home Page/Forms
Trang 21Interpreter", 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.
Vào 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C 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
PHP 3.0 là phiên bản đầu tiên được Andi Gutmans và Zeev Suraski – 2nhà phát triển người Israel tạo ra Ngoài khả năng cung cấp cho ngườidùng cuối một cơ sở hạ tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giaothức và API khác nhau, các tính năng mở rộng của PHP 3.0 đã thu hút rấtnhiều nhà phát triển tham gia và đề xuất các modul mở rộng mới Và 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"
PHP 4: Vào năm 1998 PHP 4.0 ra đời đem đến các tính năng chủ yếukhác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việcHTTP, 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
PHP 5: Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã chính thức đượccông bố để cộng đồng kiểm nghiệm Đó cũng là phiên bản đầu tiên củaZend Engine 2.0 PHP 5 Beta 3 đã được công bố để kiểm tra với việcphân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các hàmPHP 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ỗikhá dài các bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3 Ngày 14tháng 7 năm 2005, PHP 5.1 Beta 3 ra đời
Cho đến nay thì PHP đã được công bố tới phiên bản 5.2.5 và càng ngàycàng hoàn hảo và dễ sử dụng Đến nay PHP vẫn là một dịch vụ hàng đâumiễn phí Tuy nhiên không giống như một số ngôn ngứ khác càng ngày
Trang 22nó càng trở thành một xu hướng vì rất nhiều các trang Web hiện nay đượclàm bằng PHP
- Ưu điểm của PHP
Được thiết kế đặc biệt chuyên dụng trong các ứng dụng Web 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ắcphục các lỗi trong chương trình này PHP rất ổn định và tương hợp, mớiđây PHP đã vận hành khá ổn định trên các hệ điều hành gồm cả Linux,Unix, windown Đồng thời nó cũng nối với một số máy chủ như IIS hayApache
PHP là ngôn ngữ dễ học, dễ tiếp xúc, PHP không theo 1 trình tự cụ thể.Nghĩa là code thế nào cũng được chỉ cần ra 1 kết quả thì xem như thànhcông PHP tuy lý thuyết rất nhiều và rất dài Nhưng rất dễ học, thực hành.Thủ thuật viết PHP hiện nay cũng rất phong phú và được chia sẻ rất nhiềutrên mạng
PHP hoàn toàn miễn phí cho mọi người sử dụng
Với những ưu điểm về chi phí, khi dễ dàng sử dụng, là mã nguồn mởnên PHP ngày càng được nhiều người quan tâm, sử dụng và cùng xâydựng để hoàn thiện
Trang 23echo ("some editors (like FrontPage) don't like processinginstructions")
</script>
- <% echo ("You may optionally use ASP-style tags"); %>
<%= $variable; # This is a shortcut for "<%echo " %>
Chú ý: Cách 1 chỉ có thể sử dụng nếu những tag ngắn được cho phép sửdụng Có thể sửa short_open_tag trong cấu hình của php hoặc biên dịchfile php với lựa chọn cho phép dùng các tag ngắn Tương tự như vậy, cáchthứ 4 chỉ có tác dụng nếu asp_tag được đặt trong file cáu hình của PHP.PHP cho phép hỗ trợ các kiểu chú thích của cả C, C++ và Unix shell.VD:
• Mảng:
Mảng là một dạng của biến trong đó có chứa nhiều giá trị Ví dụmột dạng đơn giản của mảng:
Trang 24$thang = array("Gieng", "Hai", "Ba", "Bon", "Nam", "Sau", "Bay",
"Tam", "Chin", "Muoi", "Muoi Mot", "Muoi Hai");
Để truy xuất được tất cả các phần tử trong mảng, bạn có thể tính rachiều dài của mảng và thực hiện vòng lặp:
for ($i=0; $i<count($months); $i++)
{ echo $thang[$i] "<br>\n" ; }
Mảng liên hợp:
Cũng giống như các ngôn ngữ khác, PHP tận dụng khả năng của mảngliên hợp (associative array) Có thể bạn cảm thấy mới mẻ với khái niệmnày Mỗi phần tử trong mảng liên hợp mang khoá riêng Các phần tử củamảng sẽ được truy cập thông qua khoá Điều này giống như cách thứctruy xuất trong các query khi làm việc với Database Trong ví dụ sau, bạn
sẽ thấy các phần tử first_name, last_name, e-mail sử dụng các key:
- Tất cả các mảng trong PHP đều là mảng liên hợp
PHP cũng sẽ tự động gán cho chúng các key Ví dụ: $x= array ("pug",
"poodle"), PHP sẽ tự gán cho $x các khoá là các con số nguyên theo thứ
tự bắt đầu từ số 0
Mảng đa chiều:
Mảng đa chiều thường sử dụng nhất đó là mảng hai chiều Chúng chứathông tin dựa trên hai khoá Chúng ta sẽ xác lập một mảng $people Trongmảng $people lại chứa mảng cho từng cá nhân:
$people = array (
"khai" => array ("ho_lot" => "tongphuoc", "tuoi" => 30),
"minh" => array ("ho_lot" => "leanh" , "tuoi" => 52) );
Trang 25Có thể truy cập tất cả các phần tử trong mảng hai chiều bằng cách
sử dụng vòng lặp trên cả hai chiều của mảng:
while(list($person, $person_array) = each($people))
{
echo "<b>Ban biet gi ve $person</b><br>\n";
while(list($person_attribute, $value) = each($person_array))
setcookie(name, value, time_to_expire, path, domain, security, setting);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ạnchế 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ỉhttp://mydomain.com
Không có xác lập đặc biệt nào về bảo mật
Trang 26Một khi cookie được xác lập, các biến phát sinh từ cookie có tác dụnggiố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.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["mycookie"] Bạn có thể xác lập cookie cungcấp khả năng truy xuất như là một mảng:
setcookie("mycookie[first]","dddd",time()+2592000,"/","192.168.1.1",0);
ẩn trong form hay cookie
Ví dụ: <? session_start();
session_register("my_var");
Trang 27$my_var = "hello world";?>
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ìnhduyệ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
Gán từ trình duyệt (web browser)
Thông thường các thông tin này được nhập vào thông qua một formHTML Nhưng cũng có thể chúng xuất phát từ các nguồn khác như:HTML, cookie, session
Biến từ Form của HTML
<form action=mypage.php action=post>
<input type=”text” name=”email”>
<input type=”text” name=”first_name”>
<input type=”submit” name=”submit” value=”OK”>
<input type=” reset” name=”reset” value=”Cancel”>
</form>
Sau khi submit dữ liệu lên sever thì các giá trị lấy lên từ form làfirst_name, email được gọi là biến từ form Các biến cũng có thể đượctruy xuất thông qua mảng $HTTP_POST_VARS hoặc
$HTTP_GET_VARS, dựa vào method sử dụng trong form Có thể truycập bất kỳ phần tử riêng biệt nào như đã làm trong mảng liên hợp
($HTTP_POST_VARS["e-mail"]) Hoặc có thể tạo vòng lặp duyệt quatất cả các phần tử của mảng:
while (list($key, $value) = each($HTTP_POST_VARS))
{ echo "variable = $key value = $value <br>"; }
Trang 28sử dụng nó khi muốn truy cập lại chính trang web đang thi thành
HTTP_POST_VARS: viết tắt là $_POST
Đây là một mảng chứa tất cả các biến được chuyển tiếp thông quaPOST method từ một form
HTTP_GET_VARS: viết tắt là $_GET
Đây là một mảng chứa tất cả các biến được chuyển tiếp thông qua GETmethod
HTTP_COOKIE_VARS
Tất cả các cookie chuyển đến trình duyệt đều có thể được truy xuấttrong mảng liên hợp này Nó bao gồm cả session cookie
Biến của Apache
Apache có sẵn rất nhiều biến Sau đây là một số biến mà có lẽ thường
sẽ sử dụng thường xuyên trong chương trình
Trang 29Biến này chứa toàn bộ đường dẫn của tập tin
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
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
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() Sử dụnghàm này khi không chắc rằng biến là một trị nguyên hay chuỗi
Tương tự có một loạt hàm kiểm tra kiểu của biến sau đây:
Trang 30Đổ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
Cách thức: settype($biến, "kiểu")
Biến của biến
Trang 31Nghe qua có vẻ lạ lạ, nhưng đây là một "độc chiêu" của PHP Với cáchthức này 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
<?
$tacgia = array ("ho"=>"Tong", "ten"=>"Khai");
while (list($field,$value) = each($tacgia))
_FILE_ : tên của script file đang được thực hiện.
_LINE_ : số dòng của mã script đang được thực hiện trong script file
hiện tại
_PHP_VERSION_ : version của PHP
TRUE, FALSE
E_ERROR : báo hiệu có lỗi
E_PARSE : báo lỗi sai khi biên dịch.
E_NOTICE : Một vài sự kiện có thể là lỗi hoặc không.
E_ALL : Có thể định nghĩa một hằng số bằng hàm define()
<?php define("CONSTANT", "Hello world."); echo CONSTANT; //outputs "Hello world." ?>
• Biểu thức
Trang 32Biểu thức là một phần quan trọng trong PHP Phần lớn mọi thứ viết đềuđược coi như một biểu thức PHP hỗ trợ ba kiểu giá trị cơ bản nhất: sốnguyên, số thực, và xâu Ngoài ra còn có mảng và đối tượng
if (điều kiện) { do something; }
else if ( điều kiện ) { do something;} else { do something;}
foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement
Break và continue
break : thoát ra khỏi vòng lặp hiện thời
continue : bỏ qua vòng lặp hiện tại, tiếp tục vòng tiếp theo
Switch
switch (tên biến) {
case trường hợp 1: break;
case trường hợp 2: break;
case trường hợp 3: break;
default :
}
Trang 33function makecoffee ($type = "cappucino")
{return "Making a cup of $type.n"; }
Chú ý : khi sử dụng hàm có đối số có giá trị mặc định, các biến này sẽphải nằm về phía phải nhất trong danh sách đối số
Giá trị trả lại của hàm:
Có thể là bất kỳ giá trị nào Tuy vây, không thể trả lại nhiều giá trị riêng
lẻ nhưng có thể trả lại một mảng các giá trị
Trang 34PHP có các toán tử cho các phép số học : + - * / %
Các toán tử logic : and or xor ! && ||
Toán tử thao tác với bit : & | ^ ~ << >>
VD: <?php
class ManagersController extends AppController {
var $name = 'Managers';
var $helpers = array('Html', 'Form' , 'Ajax');
function check_block(){
$managers=$this->Manager->findAll('Manager.block=2');
$today=date('y-m-d h:m:s'); //echo date('d/m/Y',strtotime($day));
foreach ($managers as $manager):
if((date('d')-date('d',strtotime($manager['Manager'] ['dateblock'])))>=1)
{
$this->data['Manager']['block']=1;
$this->data['Manager']['id']= $manager['Manager'] ['id'] ;
$this->Manager->save($this->data);
Trang 35• Các cấu trúc điều khiển
Cấu trúc nổi bật của PHP là foreach: endforeach;
foreach (array_expression as $value) statements;
foreach (array_expression as $key => $value) statements;
Giả sử ta có bảng cơ sở dữ liệu: `mk_managers` có các trường `id`,
`name`, `username`, `block`, `name`, `group`, `count` được nằm trong cơ
sở dữ liệu có tên là `mmk_ marklearn `
Như đã giới thiệu ở trên (phần mysql) ta kết nối cơ sở dữ liệu ở fileconnect.inc
Trang 36<td> <a href="#" onClick="new Ajax.Updater">
<?php echo $row['username']; ?></a>
Trang 37<a href="#" onClick="new Ajax.Updater"> <img src="image/publish_g.png" alt ="UnBlock" border="0" width="15"></a>
<a href="#"onClick="new Ajax.Updater"> <img src="image/edit.png" alt
="reset" border="0" width="15"></a>
Với mỗi dòng thu được ta thực hiện các thao tác với nó Như in ra mànhình dữ liệu
Trang 38mysql_free_result($result) : giải phóng khi duyệt hết vòng lặp mysql_close($conn) ; : đóng kết nối.
Trang 39nhiều lĩnh vực khác … Trong đó thi viết là một hình thức thi phổ biến từ
trước đến nay được áp dụng trong ngành giáo dục Tất cả các học sinh,sinh viên đều làm cùng một đề giống nhau, do đó sẽ dẫn đến việc đánh giákết quả cụ thể của từng thí sinh không chính xác, không công bằng vì cóthể gian lận bài thi của nhau, quay cóp … trong lúc thi Còn nếu mỗi họcsinh, sinh viên thi mỗi đề khác nhau thì dẫn đến việc ra đề thi gặp khókhăn cho người ra đề và việc đánh giá kết quả cũng phải mất nhiều thời
gian, vì lý do đó mà thi trắc nghiệm được áp dụng trong vài năm gần đây.
- Thi trắc nghiệm là một hình thức thi để kiểm tra trình độ, kiến thức,khả năng nhạy bén của từng học sinh, sinh viên ở tất cả các trường, nơituyển sinh của các cơ quan ban ngành (thậm chí cả ở các công ty, xínghiệp cũng áp dụng hình thức thi trắc nghiệm để tuyển nhân viên) dựatrên nhiều đề khác nhau và việc ra đề cũng gặp ít khó khăn hơn cũng nhưviệc đánh giá kết quả ít tốn thời gian hơn Do đó mà hình thức thi trắcnghiệm được dùng khá phổ biến trong các trường Đại học, Cao đẳng,Trung cấp, … trong vài năm gần đây Ngày nay với sự phát triển ngàycàng mạnh mẽ của khoa học máy tính nói chung và mạng máy tính nóiriêng, đáng chú ý nhất là mạng toàn cầu Internet Sự ra đời của mạngInternet đã đưa con người đến với thế giới máy tính, hòa nhập với thếgiới Với mạng Internet chúng ta có thể trao đổi thông tin, gởi Email,truyền dữ liệu, truy xuất dữ liệu … một cách nhanh chóng, an toàn vàhiệu quả Giáo dục ngày nay ngày càng phát triển, do đó có nhiều loại
Trang 40hình đào tạo khác nhau như công lập, dân lập, các trung tâm đào tạo từ xa
… của nhiều trường khác nhau Cho nên một sinh viên có thể học ở mộttrường Đại học này nhưng đồng thời học ở một trung tâm khác Do đósinh viên có nhu cầu học và thi qua mạng nhằm giảm bớt thời gian đếntrường; Học sinh đang học cũng có thể tham dự các kỳ thi do nhà trườnghoặc các kỳ thi thử do các trung tâm hay các trường đại học tổ chức đểkiểm tra trình độ của học sinh …
- Để giải quyết các vấn đề khó khăn phức tạp trong việc ra đề thi vàviệc thi của sinh viên và học sinh thông qua mạng máy tinh, sự ra đời của
hệ thống thi trắc nghiệm ngoài ngữ trực tuyến sẽ giúp người sử dụng
quản lý một số các vấn đề về ngoại ngữ một cách tự động, nhằm trợ giúpcho người sử dụng ra đề thi trắc nghiệm các môn ngoại ngữ và thí sinh dựthi một cách dễ dàng, nhanh gọn, an toàn và hiệu quả nhất qua mạng máytính
1.2Thi trắc nghiệm ngoại ngữ truyền thống hiện nay:
Bước 1: Sắp xếp danh sách học sinh – sinh viên có đủ điều kiện để
được dự thi kết thúc ½ học kỳ, hết học kỳ đối với học sinh và thi kết thúcmôn đối với sinh viên Khi vào phòng thi, thi sinh dự thi sẽ được phát một
đề thi bao gồm các câu hỏi trắc nghiệm mà thí sinh sẽ phải trả lời, số câuhỏi phụ thuộc vào đề thi; một phiếu điền các câu trả lời tương ứng với cáccâu hỏi trong đề thi Mỗi câu hỏi sẽ có nhiều đáp án, thí sinh chọn phương
án trả lời cho câu hỏi trong đề thi và tích chọn ô kết quả trong phiếu điềnkết quả theo hướng dẫn của tờ phiếu
Bước 2: Sau thi hết thời gian làm bài cán bộ coi thi thu bài thi và ký
nhận vào bài thi sau đó đem nộp lại cho ban tổ chức thi Các bài thi sau đóđược dọc phách và đưa cho giáo viên chấm thi Bộ phận chấm thi sẽ chấmthi các bài thi trắc nghiệm của thí sinh dự thi theo mẫu kết quả có sẵn củacác để thi sau đó cho điểm từng câu và cuối cùng sau khi chấm xong phải