Báo cáo môn mã nguồn mở và Source code . ỨNG DỤNG APACHE, PHP VÀ MYSQL TRONG THIẾT KẾ WEB TRA CỨU ĐIỂM THI ĐẠI HỌC. Apache, PHP, MySQL là các phần của chương trình phần mềm mã nguồn mở. Phần mềm này là sự hợp tác của những lập trình viên có đầu óc. Bằng việc thay đổi trên những mã nguồn có sẵn, các lập trình viên trên thế giới tiếp tục hoàn thiện và phát triền nó ngày càng trở nên mạnh hơn và hiệu quả hơn. Sự đóng góp của những người này được đưa ra công khai cho người khác sử dụng mã nguồn, tạo ra các phần mềm nổi tiếng trên thế giới.
Trang 1TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN MÔN: CÁC HỆ THỐNG MÃ NGUỒN MỞ VÀ DI ĐỘNG
Trang 26.1 Khái niệm cơ sở dữ liệu, bảng, cột
6.2 Một số thuật ngữ trong ngôn ngữ MySQL
6.3 Kiểu dữ liệu trong MySQL
Trang 32 Hằng trong PHP
3 Chuỗi trong PHP
III KIỂU DỮ LIỆU TRONG PHP
IV TOÁN TỬ VÀ CÁC BIỂU THỨC TRONG PHP
2 Các biểu thức cơ bản trong PHP
2.1 Biểu thức điều kiện
2.2 Vòng lặp
2.3 Biểu thức switch case
V XỬ LÝ DỮ LIỆU TRÊN FORM TRONG PHP
V KẾT HỢP PHP VÀ MYSQL
1 Kết nối cơ sở dữ liệu
2 Lựa chọn cơ sở dữ liệu
3 Thực thi câu lệnh truy vấn
4 Đếm số dòng dữ liệu trong bảng
5 Lấy dữ liệu từ bảng đưa vào mảng
6 Đóng kết nối cơ sở dữ liệu
Chương 3: ỨNG DỤNG APACHE, PHP, MYSQL TRONG THIẾT KẾ WEB TRA CỨU ĐIỂM THI ĐẠI HỌC
I GIAO DIỆN WEBFORM
Trang 4II MỘT SỐ ĐOẠN CODE CHÍNH
1 Code webform truyền dữ liệu sang file ketqua.php để xử lý
2 Khai báo thông tin cơ sở dữ liệu
3 Kết nối cơ sở dữ liệu
4 Xuất kết quả ra dưới dạng bảng
LỜI MỞ ĐẦU
Mã nguồn mở ra đời là một bước ngoặt lớn trong sự phát triển của ứng dụngcông nghệ thông tin Ngày nay, các ứng dụng mã nguồn mở đã và đang trở thành mộtphong trào phát triển cực kỳ mạnh mẽ, có ứng dụng thực tế trong nhiều lĩnh vực khácnhau như kinh tế, an ninh, quốc phòng, học tập của sinh viên… Có thể nói trong tươnglai mã nguồn mở sẽ phát triển hơn nữa và dần thay thế mã nguồn đóng
Một số lợi ích khi sử dụng phần mềm mã nguồn mở:
- Độc lập: Phần mềm mã nguồn mở không bị lệ thuộc vào bất kỳ nhà cung cấpnào
- Tính thích ứng và sáng tạo: Cho phép lập trình viên xác định và sửa lỗi cũngnhư thích ứng phần mềm với các yêu cầu mới phát sinh, giúp nhà lập trình sang tạo raphần mềm của riêng mình
- Làm chủ công nghệ, đảm bảo tính an toàn và riêng tư: Phần mềm mã nguồn
mở thường không là mục tiêu tấn công của virus Không có gián điệp điện tử Do nắm được mà nguồn nên những người sử dụng hay những nhà phát triển làm chủ được phần mềm, có khả năng thay đổi, bổ sung và phát triển
- Chất lượng tin cậy: Các phần mềm mã nguồn mở khi đã hoàn thành sẽ đượcthử nghiệm, đánh giá, phát hiện lỗi và bổ sung bởi nhiều nhà phát triển khác nhau
- Tuân thủ các chuẩn và không bị hạn chế về quyền sử dụng
- Tính tự do: Người sử dụng có thể bỏ qua các phiên bản phát triển chưa ổnđịnh để cài đặt những phiên bản hoàn chỉnh và ổn định hơn Phần mềm mã nguồn mởcũng cho phép mỗi người sử dụng tạo ra và duy trì những phiên bản đặc thù
Trang 5- Tính lâu dài: Kéo dài thời gian sử dụng/tái sử dụng các phần cứng, thiết bịtrong khi vẫn đảm bảo hiệu năng toàn hệ thống.
- Ngoài ra phần mềm mã nguồn mở là những phần mềm miễn phí kể cả cácphiên bản nâng cấp trong toàn bộ vòng đời sử dụng sản phẩm Do đó giảm chi phíđáng kể cho việc phát triển phần mềm để đáp ứng theo yêu cầu nghiệp vụ…
Apache, PHP, MySQL là các phần của chương trình phần mềm mã nguồn mở.Phần mềm này là sự hợp tác của những lập trình viên có đầu óc Bằng việc thay đổitrên những mã nguồn có sẵn, các lập trình viên trên thế giới tiếp tục hoàn thiện và pháttriền nó ngày càng trở nên mạnh hơn và hiệu quả hơn Sự đóng góp của những ngườinày được đưa ra công khai cho người khác sử dụng mã nguồn, tạo ra các phần mềmnổi tiếng trên thế giới
Trang 6CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ
APACHE, PHP VÀ MYSQL II/ APACHE HTTP SERVER
1_Lịch sử phát triển Apache HTTP Server
Apache hay là chương trình máy chủ HTTP là một chương trình dành cho máy chủ đối thoại qua giao thức HTTP Apache chạy trên các hệ điều hà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át triể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 được biế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ức cạnh tranh mạnh so với các chương 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ột chươ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ác chương trình phân phối trang webServer Apache ban đầu đã là một sự thành cônglớn, nhưng họ cho rằng mã ban đầu cần phải được kiểm tra kỹ lưỡng và thiết kế lại.Trong suốt tháng 5 năm và tháng 6 năm 1995, Robert Thau đã thiết kế một kiến trúcserver mới( mã được đặt tên là Shambhala) nó bao gồm một cấu trúc module và APIcho việc mở rộng được tốt hơn
Sau khi phát hành rộng rãi bản thử nghiệm beta, rất nhiều lỗ hổng trong các nềnkhác nhau đã được tìm thấy, một tập tài liệu mới ( của David Robinson), và quá trìnhthêm rất nhiều các chức năng trong dạng của các module chuẩn của họ, Apache 1.0 đãđược phát hành vào ngày1 tháng 12 năm 1995
Theo đánh giá của Netcraft (http://www.netcraft.com/survey/) chỉ ra rằng ngàynay Apache được sử dụng một cách rộng rãi hơn so với tất cả các web server đã đượctổng hợp
Trang 72_Cấu hình Apache
• Toàn bộ cấu hình của Apache đều được lưu dưới dạng text
• File cấu hình chính là httpd.conf nằm trong thư mục {apache_dir}\conf Trong filenày có thể chứa các khai báo include đến những file cấu hình khác
• Mỗi dòng trong file cấu hình đều mang 1 ý nghĩa
– Là khoảng trắng
– Là chú thích (bắt đầu bằng ký tự #)
– Là khai báo (gồm từ khóa và giá trị) Từ khóa và giá trị
• Toàn bộ tài liệu về Apache (bao gồm cả các khai báo cấu hình) đều được cài đặt (mặcđịnh) cùng với Apache Có thể truy cập vào tài liệu này thông qua URL (có dấu / cuốicùng) http://<tên máy/ IP>/manual/
• Thông thường URL trên sẽ bị vô hiệu hóa (mặc định) cho đến khi bỏ chú thích dòng
“Include conf/extra/httpd-manual.conf” trong file cấu hình chính (httpd.conf) và restartlại Apache
• Một số khai báo thường gặp khi cấu hình Apache:
– Listen: Khai báo web server sẽ được dùng tại IP nào và cổng nào Có thể khaibáo nhiều lần
– LoadModule: Khai báo các module được nạp vào khi Apache khởi động Nêndùng để bỏ bớt các module không cần thiết hoặc nạp module do người dùng tựviết
– ServerName: Tên của server Nếu Apache không tìm được tên của máy tínhqua DNS thì khai báo này bắt buộc phải có
– DirectoryIndex: Khai báo các file mặc định
– AddDefaultCharset: Khai báo bảng mã mặc định của luồng siêu văn bản trả
về cho client
– DocumentRoot: Thư mục gốc của web server Cần lưu ý đến quyền của hệthống gán lên thư mục này đối với account dùng để chạy Apache
Trang 8– Directory: Là khai báo khối (bên trong chứa các khai báo con) dùng để địnhnghĩa quy tắc ứng xử của Apache đối với từng thư mục
– VirtualHost: Là khai báo khối, dùng để định nghĩa các web server ảo theo têntrên một máy tính duy nhất
– Alias: Dùng để tạo các thư mục ảo
II_HỆ QUẢN TRỊ CSDL MySQL
MySQL, cơ sở dữ liệu SQL mã nguồn mở thông dụng nhất, được cung cấp bởiMySQL AB MySQL AB là một công ty thương mại thực hiện việc tạo ra các dịch vụcung cấp cho doanh nghiệp đó xung quanh cơ sở dữ liệu MySQL
1_MySQL là một hệ quản trị CSDL.
Một CSDL là một tập hợp cấu trúc của dữ liệu Nó có thể là bất kỳ một cái gì từmột danh sách bán hàng đơn giản cho tới gallery ảnh hoặc số lượng lớn các thông tintrong một mạng doanh nghiệp Để thêm, truy nhập và xử lý dữ liệu được lưu trữ trongmột CSDL máy tính, ta cần một hệ quản trị CSDL như MySQL Từ khi các máy tínhthực hiện tốt việc xử lý lượng lớn dữ liệu, quản trị CSDL đóng một vai trò chính yếutrong việc tính toán, như là các công cụ đơn lẻ, hoặc một phần của các ứng dụng khác
2_MySQL là một hệ quản trị CSDL quan hệ.
Một CSDL quan hệ lưu trữ dữ liệu trong trong một số bảng chuyên biệt tốt hơn
là việc đặt toàn bộ dữ liệu trong một nơi lưu trữlớn Điều này làm tăng thêm tốc độ và
sự linh hoạt Các bảng được liên kết với nhau bằng cách định nghĩa các quan hệ tạocho nó khả năng kết nối dữ liệu từ một vài bảng khác nhau theo yêu cầu SQL là mộtphần của MySQL trong “Structured Query Language”- ngôn ngữ chuẩn thông dụngnhất được dùng để truy nhập các CSDL
3_MySQL là một phần mềm mã nguồn mở
Mã nguồn mở có nghĩa là nó có thể được sử dụng bởi bất kỳ ai cho mục đích sửdụng hoặc thay đổi nào Bất kỳ ai cũng có thể download MySQL từ internet và sửdụng nó mà không phải trả bất kỳ một thứ gì Bất kỳ ai có ý thích cũng có thể nghiêncứu mã nguồn và thay đổi chúng theo yêu cầu của riêng mình MySQL dùng GPL(GNU General Public License) ‘http:// www.gnu Org’, để định ra ta có thể được làm
gì và không được làm gì với phần mềm trong các hoàn cảnh khác nhau Nếu ta cảm
Trang 9thấy khó chịu với GPL hoặc muốn nhúng MySQL trong một ứng dụng thương mại thì
ta có thể mua một bản quyền thương mại từ các nhà cung cấp
5_Lý do dùng MySQL
MySQL rất nhanh, đáng tin cậy và dễ dàng để sử dụng Nếu điều đó là cái màbạn đang mong muốn, bạn có thể dùng thử nó MySQL cũng có một tập các đặc điểmrất thiết thực được phát triển trong một sự hợp tác rất chặt chẽ với người sử dụng Bạn
có thể đem so sánh một cách công phu giữa MySQL và một số hệ quản trị CSDL kháctrong trang web chấm điểm của nhà cung cấp
MySQL đã được phát triển một cách sáng tạo để nắm bắt các CSDL rất lớn và nhanhhơn rất nhiều các giải pháp hiện tại và đã thành công trong việc được sử dụng trongcác môi trường sản xuất đòi hỏi cao trong vài năm Thông qua quá trình phát triểnkhông ngừng, ngày nay, MySQL cung cấp một tập các hàm rất hữu ích và dồi dào Sựkết nối, tốc độ và sự bảo mật đã làm cho MySQL trở nên thích ứng cao cho việc truycập các CSDL trên internet
5_Các đặc điểm về mặt kỹ thuật của MySQL
MySQL là một hệ thống client/server bao gồm một SQL server đa luồng chophép hỗ trợ nhiều thiết bị đầu cuối khác nhau, một vài chương trình client khác nhau
và các thư viện, các công cụ quản trị và một vài giao diện lập trình
Các nhà cung cấp cũng cung cấp MySQL như là một thư viện đa luồng mà ta có thểkết nối trong ứng dụng của ta để đạt tới một sản phẩm nhỏ hơn, nhanh hơn, dễ dàngquản lý hơn
MySQL có nhiều các phần mềm được phân phối có sẵn
Điều này thật sự thuận tiện cho ta trong việc tìm ứng dụng yêu thích của ta hoặc ngônngữ hỗ trợ MySQL
6_Ngôn ngữ MySQL
6.1_ Khái niệm cơ sở dữ liệu, bảng, cột
Cơ sở dữ liệu: là tên của cơ sở dữ liệu chúng ta muốn sử dụng
Bảng: là 1 bảng giá trị nằm trong cơ sở dữ liệu
Cột: là 1 giá trị nằm trong bảng Dùng để lưu trữ các trường dữ liệu
Trang 10Như vậy ta có thể hiểu như sau:
1 cơ sở dữ liệu có thể bao gồm nhiều bảng
1 bảng có thể bao gồm nhiều cột
1 cột có thể có hoặc không có những thuộc tính
6.2_Một số thuật ngữ trong ngôn ngữ MySQL:
NULL : Giá trị cho phép rỗng
AUTO_INCREMENT : Cho phép giá trị tăng dần (tự động).UNSIGNED : Phải là số nguyên dương
PRIMARY KEY : Cho phép nó là khóa chính trong bảng
6.3_Kiểu dữ liệu trong MySQL:
6.4_Những cú pháp cơ bản:
Cú pháp tạo 1 cơ sở dữ liệu:
CREATE DATABASE tên_cơ_sở_dữ_liệu;
Cú pháp sử dụng cơ sở dữ liệu:
Use tên_database;
Trang 11 Cú pháp thoát khỏi cơ sở dữ liệu:
Exit
Cú pháp tạo 1 bảng trong cơ sở dữ liệu:
CREATE TABLE user (<tên_cột><mô_tả>,…,<tên_cột_n>… <mô_tả_n>)
Ví dụ:
mysql> create table user(user_id INT(15) UNSIGNED NOT NULL
AUTO_INCREMENT, username VARCHAR(255) NOT NULL, password CHAR(50)NOT NULL, email VARCHAR(200) NOT NULL, PRIMARY KEY (user_id));
Hiển thị có bao nhiều bảng:
show tables;
Hiển thị có bao nhiêu cột trong bảng:
show columns from table;
Thêm 1 cột vào bảng :
ALTER TABLE tên_bảng ADD <tên_cột><thuộc_tính> AFTER <tên_cột>
Ví dụ:
mysql> alter table user add sex varchar(200) NOT NULL after email;
Thêm giá trị vào bảng:
INSERT INTO Tên_bảng(tên_cột) VALUES(Giá_trị_tương_ứng);
Ví dụ:
mysql> insert into user(username,password,email,sex,home)
values(“Lanna”,”12345″,”lanna@yahoo.com”,”F”,”www.abc.com”);
Truy xuất dữ liệu:
Cú pháp: SELECT tên_cột FROM Tên_bảng;
Ví dụ:
mysql> select user_id,username from user;
Truy xuất dữ liệu với điều kiện:
Cú pháp: SELECT tên_cột FROM Tên_bảng WHERE điều kiện;
Ví dụ:
mysql> select user_id,username from user where user_id=2;
Truy cập dữ liệu và sắp xếp theo trình tự
Cú pháp:
SELECT tên_cột FROM Tên_bảng
Trang 12WHERE điều kiện (có thể có where hoặc không)ORDER BY Theo quy ước sắp xếp.
Trong đó quy ước sắp xếp bao gồm hai thông số là ASC (từ trên xuống dưới), DESC (từ dưới lên trên)
Ví dụ:
mysql> select user_id,username from user order by username ASC ;
Truy cập dữ liệu có giới hạn :
Cú pháp:
SELECT tên_cột FROM Tên_bảngWHERE điều kiện (có thể có where hoặc không)LIMIT vị trí bắt đầu, số record muốn lấy ra
mysql> update user set email=”admin@qhonline.info” where user_id=1 ;
Xóa dữ liệu trong bảng:
Cú pháp:
DELETE FROM tên_bảng WHERE (điều kiện)
Nếu không có ràng buộc điều kiện, chúng sẽ xó toàn bộ giá trị của các record trong bảng
Trang 13và các tag kết thúc đặc biệt cho phép ta nhảy vào và nhảy ra chế độ PHP.
Điều nhận ra PHP từ những gì giống JavaScript bên phía Client là mã chương trìnhđược thực hiện bên phía server Nếu ta đã có một script giống như trên bên phía servercủa ta, client sẽ nhận các kết quả từ việc chạy script đó, mà không còn cách nào để xácđịnh điều gì bên dưới mã lệnh Thậm chí ta có thể cấu hình Webserver của ta để xử lýtất cả các file HTML của ta với PHP, và vì vậy không còn cách nào mà những người
sử dụng có thể biết điều gì ta lên kế hoạch
2_Lịch sử của PHP
PHP đã được nghĩ đến trong khoảng cuối năm 1995 bởi Rasmus Lerdorf Cácphiên bản không phát hành trước đó đã được dùng trên chính trang chủ của anh ta đểtheo dõi ai đang tìm bản lý lịch trực tuyến của anh ta Phiên bản đầu tiên được dùng
Trang 14bởi những người khác đã có sẵn trong khoảng thời gian trước năm 1995 và đã đượcbiết đến như là các công cụ trang chủ cá nhân Nó bao gồm một bộ máy phân tích từloại một cách đơn giản mà chỉ được hiểu là một số ít các macro đặc biệt và một số cáctiện ích mà được dùng một cách thông dụng trên các trang chủ trước đó Bộ phân tích
từ loại đã được viết lại vào giữa năm 1995 và có tên là PHP/FI phiên bản 2 FI có được
lạ do từ một gói khác của Rasmus đã được viết lại được biên dịch định dạng dữ liệuHTML Anh ta đã kết hợp các script các công cụ trang chủ cá nhân với trình biên dịchform và thêm vào hỗ trợ mSQL và PHP/FI đã ra đời PHP/FI đã phát triển lên mộtcách đáng kinh ngạc và mọi người đã bắt đầu đóng góp mã cho nó
Để thống kê một cách nghiêm khắc là một điều phức tạp, nhưng ước lượng khoảngcuối năm 1996 PHP/FI đã được dùng trên ít nhất 15000 trang web trên khắp thế giới.Khoảng giữa năm 1997 con số này đã tăng lên trên 50000 trang web Giữa năm 1997cũng đã thấy một sự thay đổi trong việc phát triển PHP Nó thay đổi từ việc sở hữu dự
án cưng của Rasmus rằng một nhóm người đã đóng góp vào, để có thêm nhiều sựthống nhất có trật tự của nhóm sao cho đạt hiệu quả cao
Bộ phân tích từ loại đã được viết lại một cách hỗn tạp bởi Zeev Suraski và AndiGutmans và bộ phân tích từ loại mới này đã định hình nền tảng cho phiên bản 3 củaPHP Nhiều mã tiện ích từ PHP/FI đã được dùng cho PHP3 và nhiều trong số đó đãđược viết lại một cách hoàn toàn
Phiên bản PHP5 dùng bộ máy scripting Zend để phân phối sự thực hiện cao cấp hơn,
hỗ trợ một mảng các thư viện và các mở rộng của các hãng thứ 3 rộng rãi hơn và chạynhư là một module server địa phương với toàn bộ các web server được ưa chuộng.Ngày nay, PHP 3 hoặc PHP 5 hiện tại chuyên chở một số lượng các sản phẩm thươngmại như web server Red Hat’s Stronghold Ngày nay, theo ước lượng thì PHP đượcdùng trong khoảng 5.1 triệu trang trên toàn thế giới và hơn cả IIS server của Microsoft( khoảng 5.03 triệu trang)
3_PHP có thể làm được những gì ?
Tại hầu hết các mức cơ bản nhất, PHP có thể làm bất kỳ điều gì mà các chươngtrình CGI khác có thể làm, ví dụ như tập hợp các dạng dữ liệu, sinh ra nội dung cáctrang web động, hoặc gửi và nhận các cookie