- Mua và đặt mua hàng trực tuyến (Online Shopping):
Khách hàng của bạn dễ dàng tìm kiếm hàng hoá, chọn hàng, thêm bớt mặt hàng vào giỏ hàng (Shopping Cart), tự động tính toán / ghi nhớ đơn hàng và gửi đơn đăng ký mua hàng dễ dàng. Ở chế độ mua hàng của người viếng thăm, chúng tôi luôn tuân thủ chế độ bảo mật SSL và phối hợp với các nhà cung cấp dịch vụ thanh toán (PSP - Payment Service Provider), các dịch vụ kiểm tra Credit Cards có tên tuổi như Barclays Merchant Services, LloydsTSB Cardnet.
- Quản lý các đơn đặt hàng trực tuyến (Order Management System)
Quản lý, lưu trữ và báo cáo các thông tin về đặt hàng và trạng thái của đơn hàng: đã giao hàng chưa, đã thanh toán chưa.
- Quản lý khách hàng (Customer Management)
Lưu trữ, thống kê các hoạt động gắn với các khách hàng của doanh nghiệp. Mọi hoạt động gắn với khách hàng và đơn hàng đều có thể thực hiện từ xa, không phụ thuộc vào vị trí địa lý.
- Thanh toán trực tuyến (Payment Online Process)
Hỗ trợ cơ chế thanh toán điện tử qua Website giữa bên mua và bên bán. Chương trình này có ưu điểm là tính bảo mật tuyệt đối, dễ sử dụng và được bảo chứng bởi một trong 3 nhà xử lý thanh toán trực tuyến nổi tiếng thế giới: PayPal, 2Checkout.com, Authorize.NET. Các doanh nghiệp đều đã tin tưởng rằng cửa hàng online hoàn chỉnh của bạn thỏa mãn được khách hàng trong nước và quốc tế truy cập vào cũng như yêu cầu đặt ra đối với việc bán hàng qua Internet.
77 trang |
Chia sẻ: aloso | Lượt xem: 2184 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Thiết kế WEBSITE Bảo Hiểm Trực Tuyến bằng ngôn ngữ lập trình PHP và cơ sở dữ liệu My SQL, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
khiển hoạt động trên trình chủ có khả năng nhận dạng và sinh mã tuỳ theo mục đích và yêu cầu sử dụng cuối cùng của trình khách.
II. CÔNG CỤ LÀM WEB
1. Giới thiệu cơ sở dữ liệu My SQL
My SQL là cơ sở dữ liệu được sử dụng cho các ứng dụng Web có quy mô vừa và nhỏ. Tuy không phải là cơ sở dữ liệu lớn nhưng chúng cũng có trình giao diện trên Windows hay Linux, cho phép người sử dụng có thể thao tác các hành động trên liên quan đến cơ sở dữ liệu
Cũng giống như các quan hệ cơ sở dữ liệu khác, khi làm việc với cơ sở dữ liệu My SQL, bạn đăng ký kết nối, tạo cơ sở dữ liệu, quản lý người dùng, phân quyền người sử dụng, thiết kế đối tượng Table của cơ sở dữ liệu và xử lý dữ liệu.
Để sử dụng các phát biểu hay các thao tác trên cơ sở dữ liệu, bạn có thể sử dụng trình quản lý đồ hoạ hay dùng dòng lệnh còn gọi là Command line.
Tuy nhiên trong bất kỳ cơ sở dữ liệu nào cũng vậy, nếu chúng có hỗ trợ một trình giao diện đồ hoạ, sử dụng chúng tiện lợi hơn sử dụng Command line.
Trong bất kỳ ứng dụng cần lưu trữ thông tin, đều có khuynh hướng sử dụng cơ sở dữ liệu, loại cơ sở được sử dụng cho ứng dụng phải phụ thuộc vào giải pháp và nhà quản trị. Tuỳ thuộc vào vào các yếu tố, như môi trường đòi hỏi thông tin cần bảo mật cao hay khả năng tài chính cao, quy mô của ứng dụng, loại ứng dụng cho mục đích nào,……... Cơ sở dữ liệu được chọn khác nhau, nhắc mục đích lưu trữ, xử lý và tìm kiếm dữ liệu tối ưu nhất đó chính là lý do tại sao cần phải sử dụng có sở dữ liệu.
Mục đích sử dụng cơ sở dữ liệu, bao gồm các chức năng như: Lưu trữ (Storage), truy cập (accessibility), tổ chức (Organization) và xử lý (Mainpulation).
Storage: Lưu trữ thông tin trên đĩa và có thể chuyển đổi dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác, trong thực tế có nhiều loại sơ sở dữ liệu đang sử dụng, và My SQL là cơ sở dữ liệu sử dụng phù hợp cho việc thiết kế Website vừa và nhỏ.
Accessibility: Truy cập dữ liệu phụ thuộc vào mục đích và yêu cầu của người sử dụng, ở mức độ mang tính cục bộ, truy cập dữ liệu nhay trong cơ sở dữ liệu với nhau, nhằm trao đổi hay sử lý dữ liệu của chính nó.
Organization: Khi đề cập đến tổ chức cơ sở dữ liệu, chúng phụ thuộc vào cơ sở dữ liệu, phân tích và thiết kế cơ sở dữ liệu, điều này có nghĩa tổ chức cơ sở dữ liệu phụ thuộc vào từng đặc điểm của ứng dụng, tuy nhiên khi tổ chúc cơ sở dữ liệu, cầm phải tuân theo một tiêu chuẩn của hệ thống cơ sở dư liệu, nhằm tính tối ưu khi truy cập và xử lý.
Mainpulation: Trong nhiều trường hợp chỉ cần tính toán và truy vấn dữ liệu với mục đích khác nhau, cần sử dụng nhứng câu truy vấn cùng các phép toán, phát biểu cơ sở dữ liệu để kết xuất ra kết quả như yêu cầu của mình. Thực tế để thao tác hay xử lý cơ sở dữ liệu bên trong chính cơ sở dữ liệu hay sử dụng ngôn ngữ lập trình: PHP, C++, Java, Visual Basic, C Shap ……
2. Tổng quan ORACLE
2.1. Oracle là gì ?
Oracle là một hệ quản trị cơ sở dữ liệu quan hệ client/server. Để đi sâu vào nghiên cứu cơ sở dữ liệu Oracle cần có một số khái niệm cơ bản về hệ quản trị cơ sở dữ liệu quan hệ.
Hệ quản trị cơ sở dữ liệu quan hệ. (RDBMS Relation Database Management system)
Mỗi cơ sở dữ liệu quan hệ là một tập hợp dữ liệu được tổ chức trong những bảng hai chiều có quan hệ với nhau. Mỗi bảng bao gồm các cột có tên và các hàng. Mỗi cột là một thuộc tính của quan hệ, mỗi hàng là một bộ (tuple) các giá trị của những thuộc tính của quan hệ.
Một RDBMS có nhiêm vụ:
Lưu trữ và tạo dữ liệu sẵn có trong các bảng.
Duy trì quan hệ giữa các bảng trong cơ sở dữ liệu.
Bảo đảm tích hợp dữ liệu bằng cách tạo các qui tắc quản lý giá trị dữ liệu.
Khôi phục mọi dữ liệu trong trường hợp hệ thống có sự cố.
2.2. Kiến trúc client / server
- Client là một thành phần của hệ thống yêu cầu dịch vụ hoặc tài nguyên từ những thành phần hệ thống khác.
- Server là một thành phần của hệ thống cung cấp dịch vụ hoặc tài nguyên cho những thành phần hệ thống khác.
2.3. Các yếu tố của một client / server data based system
Server:
Một tập hợp các mục dữ liệu và đối tượng trợ giúp được tổ chức và trình bày để thuận tiện phục vụ như: tìm kiếm, sắp thứ tự, khôi phục, cập nhật và phân tích dữ liệu. CSDL bao gồm bộ nhớ dữ liệu vật lý và các dịch vụ CSDL. Mọi dữ liệu đều được truy cập qua hệ phục vụ, không bao giờ được truy xuất trực tiếp.
Client:
Một chương trình có thể tác động qua lại với con người hoặc một quá trình tự động. Nó bao gồm tất cả những phần mềm có liên quan đến server, yêu cầu dữ liệu từ CSDL hoặc gửi dữ liệu đến CSDL.
Truyền nhận giữa client và server:
Sự truyền nhận này phụ thuộc nhiều vào client và server thực thi như thế nào. Mọi sự thực thi hệ thống CSDL đều thuộc một trong ba loại sau:
File_based system:
Các hệ thống này dùng ứng dụng truy xuất trực tiếp các file dữ liệu trên một đĩa cứng cục bộ hoặc một hệ phục vụ file mạng. Các hệ thống này thực hiện các dịch vụ CSDL và truyền nhận logic như một phần của ứng dụng client. Trong việc thực thi này, ứng dụng client đóng vai trò client và vai trò hệ phục vụ.
Host_based system:
Hệ thống này thường dùng trong các mainframe và mini_computer. Những hệ thống này thực thi tất cả hoặc hầu hết dịch vụ CSDL và chức năng của client trên một máy tính trung tâm lớn. Người dùng xem và tác động đến ứng dụng client bằng cách dùng một thiết bị đầu cuối từ xa. Truyền nhận giữa client và CSDL thực thi thực hiện trên một host computer và host computer đóng vai trò của client và server.
Client / server system:
Hệ thống này được thiết kế từ dịch vụ CSDL riêng lẻ đến client bằng cách cho phép truyền nhận giữa chúng là mở và linh hoạt hơn.
Dịch vụ CSDL được thực thi trên một máy tính mạnh, cho phép quản trị tập trung, bảo mật và dùng chung tài nguyên. Do đó, hệ phục vụ trong client / server là CSDL và hệ phục vụ của chính nó. Những ứng dụng client được thực thi trên các nền khác nhau bằng cách dùng nhiều công cụ khác nhau. Quá trình này cho phép linh hoạt hơn và các ứng dụng của người sử dụng có tính chất rất cao.
Hiện nay, nhiều tổ chức kết hợp sử dụng cả ba hệ thống này. Ưu, nhược điểm của chúng có thể được tóm tắt qua bảng sau:
Đặc điểm
File_based
Host_based
Client / Server
Giá cả
Rẻ
Đắt
Biến động
Độ tin cậy
Kém
Cao
Từ trung bình đến tốt
Tính bảo mật
Kém
Tốt
Từ trung bình đến tốt
Phát triển ứng dụng
Đòi hỏi kỷ năng
Phải có nhân viên lành nghề
Phải có nhân viên lành nghề
CSDL
Trung bình(~ 50MB)
Rất lớn(hàng GB)
Rất lớn (hàng GB)
Quản trị tập trung
Minimal
Excellent
Excellent
Giao diện với người sử dụng
Rất linh hoạt
Không linh hoạt
Linh hoạt
Sử dụng mạng
Không hiệu quả
Hiệu quả
Có thể hiệu quả
Vendor look_in
Từ thấp đến trung bình
Cao
Trung bình
2.4. SQL
SQL (Structured Query Language) - Ngôn ngữ truy vấn có cấu trúc là phương tiện chính để làm việc với cơ sở dữ liệu Oracle.
2.5. PL/SQL
Trong Oracle có một ngôn ngữ đặc biệt cho phép kết hợp ngôn ngữ thủ tục truyền thống với sự truy xuất các đối tượng cơ sở dữ liệu thông qua ngôn ngữ SQL, đó là ngôn ngữ PL/SQL.
3.Một số công cụ của Oracle
Oracle cung cấp cho các nhà lập trình rất nhiều công cụ lập trình phát triển ứng dụng liên quan đến cơ sở dữ liệu và phát triển Internet. Trong phiên bản Oracle 8i có khoảng 150 công cụ chạy trên các môi trường hệ điều hành khác nhau, các công cụ hỗ trợ giao tiếp cho các CSDL từ xa, phát triển ứng dụng CSDL từ xa thông qua môi trường Internet,…Một số công cụ dùng để phát triển thông dụng nhất như:
Oracle8i Enterprise Edition 8i.
SQL * Plus 8.0: Một phần mềm giao tiếp kiểu dòng lệnh, cho phép tương tác với Oracle thông qua hai ngôn ngữ SQL và PL/SQL.
Oracle Net8 : Một phần mềm kết nối CSDL dùng để cung cấp các thông tin CSDL xác thực, tối ưu trên mọi thủ tục mạng thông dụng.
Oracle Enterprise Manager: Một phần mềm có giao diện rất tốt hỗ trợ cho việc quản lý các đối tượng của cơ sở dữ liệu Oracle.
Develper 6.0, Developer/2000, Jdeveloper for Oracle 8i: gồm Oracle Form Builder, Oracle Report Builder, Oracle Procedure Builder, Oracle Project Builder được tích hợp vào môi trường phát triển.
Designer 2000: phát triển các ứng dụng Oracle.
Power Object: cung cấp môi trường phát triển ứng dụng nhanh với các đặc trưng kéo thả và quản lý CSDL.
Oracle Names: Tạo các liên kết CSDL chứa các thông tin nút mạng trên một mạng bằng cách sử dụng từ điển toàn cục chung Oracle Names.
Multi-protocol Interchange: cung cấp một nhu cầu giao tiếp trên các thủ tục khác biệt bằng cách gửi thông điệp SQL* Net từ thủ tục này sang thủ tục khác.
Oracle Network Manager: Quản lý cấu hình và quản lý mạng CSDL phân tán được thực hiện dễ dàng với Network Manager. Network Manager được sử dụng không chỉ để quản lý từ điển Oracle Names mà còn tạo ra các file cấu hình cho các thành phần Client/Server của SQL*Net và định nghĩa cho các đường kết nối cho các nút Multi-Protocol Interchange.
3.1. Giới thiệu vế lớp vật lý và lớp Logic của CSDL Oracle
CSDL Oracle gồm có hai lớp: lớp vật lý và lớp logic.
a. Lớp vật lý
Lớp vật lý của CSDL Oracle là một số tập tin nằm trên đĩa. Vị trí vật lý của những tập tin này không liên quan đến chức năng của CSDL nhưng có thể liên quan đến hiệu năng của CSDL. Dữ liệu trong những tập tin này thường được truy xuất bởi các công cụ của Oracle thông qua ngôn ngữ truy vấn có cấu trúc SQL.
Lớp vật lý bao gồm ba loại tập tin: các tập tin dữ liệu (data file), các tập tin điều khiển (control file) và các tập tin phuc hồi (Redo log files).
Data files: đây là các tập tin quan trọng nhất trong ba loại tập tin và là nơi chứa dữ liệu thật sự của CSDL. Các tập tin dữ liệu có kích thước lớn từ vài megabytes đến hàng gigabytes. Chúng lưu trữ các thông tin chứa trong CSDL. Một CSDL nhỏ có thể có vài tập tin dữ liệu và có hàng trăm tập tin dữ liệu cho những CSDL lớn. Phân bố lưu trữ thông tin trên nhiều tập tin dữ liệu có thể làm tăng hiệu năng cho CSDL. Số tập tin dữ liệu có thể được giới hạn bằng tham số MAXDATAFILES khi tạo ra một CSDL mới.
Control files: một CSDL cần có một hay nhiều tập tin điều khiển, các tập tin điều khiển lưu trữ thông tin cấu trúc của CSDL.
Redo log files: là các tập tin được sử dụng để lưu giữ các thông tin ban đầu và toàn bộ quá trình thay đổi của CSDL sau khi nó được tạo ra, phục vụ cho mục đích phục hồi lại CSDL trong trường hợp hệ thống bị sự cố.
b. Lớp logic
Lớp logic của Oracle gồm các nguyên tố sau:
Một hay nhiều không gian bảng (tablespace).
Các schame cơ sở dữ liệu gồm các đối tượng như table, view, index, cluster, stored procedure, trigger, sequence, …
Mỗi schame CSDL thuộc sở hữu một user được xác định bởi một username và password duy nhất đối với CSDL. Sau khi đăng nhập vào CSDL với username và password hợp lệ user có thể thao tác trên CSDL với quyền được cấp phát cho user đó ở cấp độ nào.
Không gian bảng là một khái niệm trừu tượng, vậy không gian bảng có liên quan như thế nào đến CSDL và các tập tin dữ liệu.
3.2. Tablespace và các tập tin dữ liệu
CSDL được chia thành một hay nhiều mẩu logic gọi là không gian bảng (tablespace). Một tablespace bao gồm một hay nhiều tập tin dữ liệu vật lý, việc phân bố nhiều hơn một tập tin dữ liệu trên một tablespace, có thể phân bổ dữ liệu trên nhiều đĩa vật lý khác nhau để phân tán truy xuất vào ra và cải thiện khả năng thi hành.
Khi tạo ra một CSDL, Oracle tự động tạo ra một tablespace SYSTEM, tablespace này là nơi chứa tự điển dữ liệu. Tự điển dữ liệu chứa thông tin về các table, index, cluster,…Tablespace SYSTEM là vị trí mặc định của tất cả các đối tượng khi một CSDL được tạo ra.
Thông thường, người ta tạo nhiều tablespace để phân hóa các đối tượng khác nhau của CSDL đồng thời dành riêng tablespace SYSTEM cho từ điển dữ liệu, đây cũng là một phương pháp hữu hiệu để bảo đảm cơ sở dữ liệu luôn khỏe mạnh.
Có thể mở rộng không gian một CSDL theo 3 cách sau:
Thêm một tập tin dữ liệu vào một tablespace.
Cú pháp:
ALTER TABLESPACE TABLESPACE_NAME ADD DATAFILE ‘DATAFILE.ORA’;
Thêm một tablespace mới.
Cú pháp:
CREATE TABLESPACE TABLESPACE_NAME DATAFILE ‘DATAFILE.ORA’;
Tăng kích thước tập tin dữ liệu.
ALTER DATABASE DATAFILE ‘DATAFILE.ORA’ AUTOEXTENT ON NEXT MIN_NUMBER MB MAXSIZE MAX_NUMBER MB;
Kích thước của tablespace là tổng kích thước của các tập tin dữ liệu tạo nên tablespace và kích thước của CSDL là tổng kích thước của các tablespace trong CSDL đó.
3.3. Schame cơ sở dữ liệu
Một schame CSDL là một tập hợp các cấu trúc logic các đối tượng hay schame objects. Schame objects này bao gồm tables, indexes, clusters, views, stored procedures, database triggers and sequences.
Tạo Table
Cú pháp:
CREATE TABLE tênbảng (tên_cột kiểu_dữ_liệu(độdài) [,…n]);
- Tạo ràng buộc khóa chính cho bảng:
Cú pháp:
CONSTRAINT PRIMARY KEY ;
- Tạo ràng buộc khóa ngoại cho bảng:
Cú pháp:
CONSTRAINT FOREIGN KEY (tên cột là khóa chính của bảng cha) REFERENCES tên_bảng_cha(tên cột là khóa chính của bảng cha);
- Tạo ràng buộc unique cho cột trong bảng:
Ràng buộc unique bảo đảm không có hai hàng của một bảng dữ liệu có giá trị trùng nhau trên cột có áp đặt ràng buộc này.
Cú pháp:
CONSTRAINT UNIQUE (tên_cột);
- Tạo ràng buộc Check Condition cho cột trong bảng:
Cú pháp:
CONSTRAINT CHECK(tên_cột toán_tử_so_sánh giá_trị);
- Tạo ràng buộc NOT NULL cho cột trong bảng:
Thêm cụm từ NOT NULL theo sau tên cột khi tạo bảng.
Ví dụ: TênTỉnh VARCHAR2(20) NOT NULL,
Thêm, xóa và bổ sung độ dài dữ liệu một cột
- Thêm một cột:
Cú pháp:
ALTER TABLE tên_bảng ADD (tên_cột kiểu_dữ_liệu (độ dài));
- Xóa một cột:
ALTER TABLE tên_bảng DROP COLUMN (tên_cột);
- Bổ sung độ dài dữ liệu một cột:
ALTER TABLE tên_bảng MODIFY (tên_cột kiểu_dữ_liệu(độ dài));
Xóa bảng
Xóa một bảng nghĩa là hủy mọi dữ liệu của bảng và quyền sở hữu đối với bảng đó.
Cú pháp:
DROP TABLE tên_bảng;
Chú ý:
Trước khi xóa một bảng, phải hủy bỏ mọi quan hệ phụ thuộc giữa bảng và các đối tượng khác.
4. View
View là một đối tượng CSDL nó lưu trữ một query đã định nghĩa trước. Công dụng của view là hiển thị dữ liệu trong một hay nhiều bảng và xử lý như một bảng ảo nghĩa là có thể nhập dữ liệu vào nhiều bảng cùng một lúc thông qua view.
Tạo view
Cú pháp:
CREATE VIEW tên_view AS (SELECT FROM ;
Xóa view
Ta có thể xóa view với cú pháp:
DROP VIEW tên_view;
5. Cluster
Cluster là một nhóm các bảng có cùng chung cột lưu trữ vật lý như một bảng để chia sẻ cột chung cho các bảng trong nhóm đã tạo nên cluster.
Cluster giúp giảm nhập/xuất đĩa và cải thiện thời gian truy cập nhờ nối các bảng cluster đồng thời cũng làm giảm không gian lưu trữ các bảng góp phần thu gọn không gian cho CSDL.
Có thể tạo cluster theo cú pháp:
CREATE CLUSTER tên_cluster();
Tương tự như các đối tượng khác của Oracle ta có thể xóa Cluster theo cú pháp:
DROP CLUSTER tên_cluster;
6. Index
Index là cấu trúc tùy chọn kết hợp với các table và các cluster. Ta có thể tạo ra các index tường minh để tăng tốc độ thực hiện các lệnh SQL trên các bảng. Một index đơn thuần chỉ là một đường truy xuất nhanh đến dữ liệu, nó trỏ trực tiếp vào vị trí của hàng chứa giá trị index đó. Index độc lập về mặt logic và vật lý với dữ liệu trong các bảng kết hợp. Ta có thể tạo ra hay xóa một index bất cứ lúc nào mà không ảnh hưởng đến bảng gốc và các index khác.
Khi ta tạo ra các bảng với các ràng buộc khóa chính, khóa ngoại, unique thì Oracle tự động tạo ra index tương ứng cho các bảng đó.
Có thể tạo Index theo cú pháp:
CREATE INDEX tên_index ON tên_bảng(tên_cột);
Xóa Index theo cú pháp:
DROP INDEX tên_index;
7. Sequence
Sequence là một đối tượng CSDL đặc biệt tạo ra các số nguyên theo quy luật đặc trưng lúc sequence được tạo ra. Các sequence có thể dùng cho nhiều mục đích trong các hệ CSDL, nhưng thường người ta dùng nó để tạo ra các khóa chính của bảng một cách tự động.
Có nhiều quy luật tạo ra các sequence theo các từ khóa sẵn có của Oracle:
Start with n: sequence được tạo ra với giá trị chỉ định ban đầu trong Start with khi đó cột ảo NEXTVAL của sequence được tham trỏ.
Increment by n: Định nghĩa số tăng của sequence mỗi lúc cột ảo NEXTVAL được tham trỏ.
Minvalue n: giá trị tối thiểu có thể tạo bởi sequence nếu từ khóa nominvalue chưa được sử dụng.
Maxvalue n: giá trị tối đa có thể tạo bởi sequence nếu từ khóa nomaxvalue chưa được sử dụng.
Cycle: cho phép sequence tạo lại giá trị ban đầu khi đạt đến maxvalue hay minvalue nếu từ khóa nocycle chưa được sử dụng.
Cache n: cho phép sequence dùng bộ nhớ cache để tăng hiệu năng, nếu từ khóa nocache chưa được sử dụng.
Order: cho phép gán các giá trị theo thứ tự yêu cầu, nếu không sử dụng order từ khóa nocache có thể sử dụng .
8. Trigger
Trigger là một đối tượng CSDL được chạy tự động khi một sự kiện INSERT, UPDATE, DELETE trên bảng hay view có mốc nối với trigger.
9. Stored procedure và function
Một stored procedure hay function là một đối tượng CSDL gồm một tập các lệnh SQL hay PL/SQL tạo thành một tập tin thực thi để thực hiện một tác vụ đặc biệt nào đó.
Stored procedure và function cho phép ta kết hợp dễ dàng và linh động chức năng có tính thủ tục với một ngôn ngữ lập trình có cấu trúc SQL.
Các procedure và các function gần như giống nhau chỉ khác là function luôn trả về một hay nhiều giá trị, còn procedure thì không trả về giá trị nào.
10. Ngôn ngữ lập trình PHP
PHP là một ngôn ngữ kịch bản phía máy phục vụ, mã nguồn mở được sử dụng rộng rãi vào các mục đích chung mà đặc biệt thích hợp cho phát triển Web và có thể nhúng vào trang HTML.
Khi mới giới thiệu, PHP được viết tắt từ một nhóm từ tiếng Anh là Personal Home Page và bây giờ được tái viết tắt cho cụm từ: PHP Hypertext Preprocessor. PHP được giới thiệu vào năm 1994 bởi Rasmus Lerdorf, như một bộ sưu tập của một ngôn ngữ chưa chặt chẽ dựa vào Perl. Đến năm 1998, phiên bản 3 của PHP được công bố, từ đây PHP mới chính thức phát triển theo hướng tách riêng của mình. PHP trở thành ngôn ngữ lập trình có cấu trúc và tính năng đa dạng, chính vì thế được các nhà lập trình Web ưa dùng.
Ngôn ngữ kịch bản PHP có thể nhúng vào HTML nên đây chính là điểm khác của nó với các ngôn ngữ khác như Perl hoặc C, thay vì một chương trình được viết với nhiều dòng lệnh để xuất ra trang HTML, bạn viết một kịch bản HTML trong đó gắn mã nguồn PHP để làm một vài việc. Mã nguồn PHP thực hiện trên máy phục vụ và trả về máy khách yêu cầu nó kết quả dưới dạng các trang HTML. Khối mã nguồn PHP được bao quanh giữa các thẻ đặc biệt mà nó cho phép nhảy vào hay ra khỏi chế độ PHP.
Có thể sử dụng bốn cách tổ chức các thẻ để biểu thị các khối của mã nguồn PHP:
Ví dụ:
Ví dụ:
Ví dụ:
echo “Cách thứ ba”;
Ví dụ:
Tuy nhiên cách đầu tiên được ưa chuộng và dùng phổ biến hơn.
10.1. PHP có thể là gì
PHP chủ yếu đặt trọng tâm trên kịch bản phía máy phục vụ vì thế bạn có thể làm bất cứ điều gì mà các chương trình CGI khác có thể làm được, như tập hợp dữ liệu hình thức, tạo ra nội dung các trang động hoặc gửi và nhận các cookie. Nhưng PHP có thể làm được nhiều hơn thế. Cụ thể là kịch bản PHP có thể sử dụng trên ba nền chính sau:
Kịch bản phía máy phục vụ: đây là nền mục tiêu chính và truyền thống nhất đại diện cho PHP. Bạn cần phải có ba thứ để làm việc ở nền này, đó là bộ phân tích cú pháp PHP (CGI hoặc môđun máy phục vụ), một máy phục vụ Web và một trình duyệt Web. Bạn cần phải chạy máy phục vụ Web với một kết nối đến PHP đã được cài đặt. Bạn có thể truy cập chương trình PHP xuất ra với trình duyệt Web để nhìn trang PHP trả về từ máy phục vụ.
Kịch bản dòng lệnh: bạn có thể tạo một kịch bản PHP để chạy nó mà không cần bất cứ máy phục vụ hoặc trình duyệt Web nào. Bạn chỉ cần sử dụng bộ phân tích cú pháp PHP trong cách này.
Viết các ứng dụng GUI phía máy khách: PHP thì không có khả năng để viết rất tốt các ứng dụng windows nhưng nếu PHP của bạn tuyệt vời và có thể sử dụng những đặc trưng thuận lợi của PHP trên các ứng dụng phía máy khách bạn cũng có thể sử dụng PHP-GIK để viết các chương trình.
PHP có thể sử dụng trên tất cả các hệ điều hành chính, bao gồm Linux, nhiều hệ Unix khác nhau, Microsoft Windows, Mac OS X, RISC OS, …PHP cũng hỗ trợ cho hầu hết các máy phục vụ Web hiện nay như là Apache, Microsoft Internet Information Server, Personal Web Server, … Vì thế với PHP, bạn có thể tự do chọn lựa một hệ điều hành và một máy phục vụ Web. Hơn thế nữa, bạn cũng có thể chọn cách lập trình thủ tục hoặc lập trình hướng đối tượng hoặc trộn lẫn cả hai.
PHP không hạn chế trong việc xuất ra trang HTML. PHP có khả năng bao gồm xuất ra các dạng hình ảnh, các tệp PDF và thậm chí cả phim ảnh dưới dạng Flash. Bạn cũng có thể dễ dàng xuất ra mọi kiểu văn bản như là XHTML và bất kỳ tệp XML khác. PHP có thể tự động sinh ra các tệp dạng này và lưu chúng trong hệ thống tệp thay vì in nó ra, nội dung động được định dạng nhanh từ phía máy phục vụ.
Một đặc trưng mạnh và quan trọng nhất trong PHP là nó hỗ trợ nhiều hệ cơ sơ dữ liệu. Viết một trang Web cho phép cập nhật cơ sở dữ liệu thì đơn giản đến lạ thường. Các cơ sở dữ liệu được hỗ trợ gồm: MySQL, MS-SQL, Oracle(OCI7 và OCI8), PostgreSQL, mSQL,…PHP hỗ trợ ODBC vì thế bạn có thể kết nối bất kỳ cơ sở dữ liệu nào hổ trợ tiêu chuẩn quốc tế này.
PHP còn hỗ trợ cho việc giao tiếp với các dịch vụ sử dụng các giao thức như là POP3, HTTP, COM, SNMP, NNTP,…
Khi sử dụng PHP trong nền thương mại điện tử, bạn sẽ tìm thấy nhiều hàm hữu dụng cho các chương trình thanh toán trên mạng.
Cuối cùng nhưng không kém phần quan trọng, chúng ta có được nhiều mở rộng thú vị khác, các hàm cho bộ máy tìm kiếm mnoGoSearch, các hàm cổng IRC, nhiều tiện ích nén, chuyển đổi, thông dịch,…
11. Các kiểu dữ liệu
11.1. Kiểu Boolean
Đây là kiểu đơn giản nhất, nó có thể có hai giá trị TRUE hoặc FALSE.
Ví dụ:
<?
$foo=True;
?>
11.2. Kiểu số nguyên (Interger)
Số nguyên là một số thuộc tập hợp Z = {…,-2,-1,0,1,2,…}.
Số nguyên có thể xác định trong hệ thập phân, hệ bát phân, hệ thập lục phân, số có dấu (- hoặc +). Nếu bạn sử dụng hệ bát phân thì phải ký hiệu thêm phía trước số là 0 (zero), hệ thập lục phân thì phải ký hiệu thêm phía trước số là 0x.
Ví dụ:
<?
$a = 1234; //số thập phân.
$b = -123; // số âm
$c = 0123; // số viết dưới hệ bát phân (giá trị thập phân là 83)
$d = 0x1A; // số viết dưới hệ thập lục phân (giá trị thập phân là 26)
?>
11.3. Kiểu số thực (FLOAT POINT NUMBERS)
Ví dụ:
<?
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>
11.4. Kiểu Ký tự (STRINGS)
Một chuỗi là một nhóm các ký tự.
Có ba cách khác nhau để xác định một chuỗi trong PHP:
- Dùng dấu nháy đơn (single qouted):
Đây là cách dễ nhất để xác định một chuỗi là nó bao quanh trong hai dấu nháy đơn (‘’).
Ví dụ:
<?
echo ‘Dấu nháy đơn.’;
?>
- Dùng dấu nháy kép (double qouted):
Chuỗi được bao quanh trong hai dấu nháy kép (“ ”).
Ví dụ:
<?
echo “Dấu nháy kép.”;
?>
- Dùng Heredoc.
Một cách khác để giới hạn chuỗi là sử dụng cú pháp Heredoc (“<<<”).
Ví dụ:
<?
$str = <<<EOD
Sử dụng Heredoc
là cách thứ ba.
EOD;
echo $str;
?>
Các chuỗi có thể được nối với nhau bằng cách sử dụng toán tử chấm ‘.’.
11.5. Kiểu mảng (ARRAY)
Có thể tạo mảng trong PHP với hàm array().
Cú pháp: array([Từ khóa =>] giá trị,…)
Từ khóa: có thể là một số nguyên hay một chuỗi.
Ví dụ:
<?
$arr = array(“foo” => “bar”, 12 => true);
echo $arr[“foo”]; //bar
echo $arr[12]; //1
?>
Có thể thêm một phần tử vào mảng đã khai báo với cú pháp:
$arr[từ khóa] = giá trị;
$arr[] = giá trị;
Đồng thời cũng có thể xóa một phần tử ra khỏi mảng hay thậm chí xóa cả mảng đã tạo bằng cách sử dụng hàm unset().
Ví dụ:
<?
$arr = array(“foo” => “bar”, 12 => true);
$arr[] = 56; // sẽ được PHP hiểu như $arr[13] = 56;
$arr[“x”] = 24; // thêm một phần tử vào mảng với từ khóa là “x”
unset($arr[“foo”]); // xóa phần tử có từ khóa là “foo”.
unset($arr); Xóa mảng $arr
?>
PHP còn hỗ trợ cả mảng hai chiều và ba chiều.
Ví dụ:
$two_dimen = array( array(“a”, “b”, 10), array(“c”, “d”, 15), array(“e”, “f”, 20) );
// mảng hai chiều.
$three_dimen = array(array(array(“a”, “b”, 10),
array(“c”, “d”, 15),
array(“e”, “f”, 20)
),
array(array(“a”, “b”, 25),
array(“c”, “d”, 30),
array(“e”, “f”, 35)
),
array(array(“a”, “b”, 40),
array(“c”, “d”, 45),
array(“e”, “f”, 50)
)
); // mảng ba chiều.
11.6.Biến
PHP quy định một biến được biểu diễn bắt đầu bằng dấu $, theo sau là tên biến. Tên biến hợp lệ phải bắt đầu bằng một ký tự hoặc dấu gạch dưới ( _ ), theo sau nữa là bất kỳ ký tự hay số.
Ví dụ:
<?
$var = “Dang”;
$Var = “Trinh”;
echo “$var, $Var”; // Dang, Trinh
?>
12. Một số biến toàn cục được tạo sẵn trong PHP
$GLOBALS: chứa một tham chiếu đến mỗi biến mà nó có giá trị hiện hành trong phạm vi toàn cục của kịch bản. Các từ khóa của mảng này là tên của các biến toàn cục. $GLOBALS tồn tại từ PHP 3.
$_SERVER: tập hợp các biến bởi máy phục vụ Web. Giống như mảng $HTTP_SERVER_VARS cũ.
$_GET: các biến cung cấp đến kịch bản hiện tại bằng HTTP GET. Giống như mảng $HTTP_GET_VARS cũ.
$_POST: các biến cung cấp đến kịch bản hiện tại bằng HTTP POST. Giống như mảng $HTTP_POST_VARS cũ.
$_COOKIE: các biến cung cấp đến kịch bản hiện tại bằng HTTP cookies. Giống như mảng $HTTP_COOKIE_VARS cũ.
$_FILES: các biến cung cấp đến kịch bản hiện tại bằng HTTP post file uploads. Giống như mảng $HTTP_POST_FILES cũ.
$_ENV: các biến cung cấp đến kịch bản môi trường hiện tại. Giống như mảng $HTTP_ENV_VARS cũ.
$_REQUEST: các biến cung cấp đến kịch bản hiện tại của bất kỳ người sử dụng nhập vào máy, mà bởi vậy không thể tín nhiệm nó. Giống như mảng $HTTP_ENV_VARS cũ.
$_SESSION: các biến mà nó được đăng ký phiên làm việc của kịch bản hiện hành. Giống như mảng $HTTP_SESSION_VARS cũ.
12.1. Phạm vi biến
PHP coi một biến có một giới hạn. Để sử dụng một biến toàn cục (global) trong hàm ta cần khai báo lại. Nếu không giá trị của biến sẽ được coi như biến cục bộ trong hàm.
Ví dụ:
<?
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a +$b;
}
Sum();
echo $b;
?>
Khi có khai báo globlal trong hàm, hai biến $a, $b được hiểu là những biến toàn cục, nếu không nó chỉ được coi là biến bên trong hàm Sum(). Điểm này khác với ngôn ngữ C. Một cách khác để dùng biến toàn cục trong một hàm là ta dùng mảng $GLOBAL, ví dụ trên được viết lại như sau:
<?
$a = 1;
$b = 2;
function Sum()
{
$GLOBAL[“b”] = $GLOBAL[“a”] + $GLOBAL[“b”] ;
}
Sum();
echo $b;
?>
Một đặc trưng quan trọng khác của phạm vi biến là khai báo biến với từ khóa static. Một biến được khai báo static chỉ tồn tại trong phạm vi cục bộ của hàm.
Ví dụ:
<?
Function Test()
{
static $a = 0;
echo $a;
$a++;
}
?>
Biến $a sẽ không mất đi giá trị sau khi thực hiện lời gọi hàm Test() mà sẽ được tăng lên 1 sau mỗi lần gọi hàm Test().
12.2. Các biến bên ngoài phạm vi PHP
-HTML Forms: Một form được viết bằng HTML, hành động của form này gọi một script PHP, thông tin trên form sẽ có giá trị trong script. Có nhiều cách để truy cập các thông tin này.
Ví dụ:
Form HTML đơn giản:
Name:
Script PHP có thể lấy giá trị trong trường Name của Form HTML bằng các cách sau:
<?
// có giá trị từ PHP 4.1.0.
print $_POST[‘name’];
print $_REQUEST[‘name’];
// có giá trị từ PHP 3.
print $HTTP_POST_VARS[‘name’];
//Nếu khai báo register_globals = on trong tập tin php.ini thì cách sau đây sẽ có giá trị.
print $name;
?>
Ngoài ra cũng còn một số cách khác để lấy các thông tin trong form HTML như sử dụng hàm addslashes(),…
- Các biến trong IMAGE SUBMIT:
Khi dùng một ảnh để thực hiện submit thay vì sử dụng nút submit như trên.
Ví dụ:
Khi người dùng click chuột lên ảnh, form tương ứng sẽ truyền đến máy phục vụ thêm hai biến là sub_x và sub_y. Những biến này sẽ lưu giữ tọa độ mà người dùng click chuột trên ảnh.
- HTTP Cookies.
PHP hỗ trợ HTTP Cookies trông suốt như định nghĩa của Netcape’s Spec. Cookie lưu trữ thông tin máy vận hành của trình duyệt ở xa để theo dõi hoặc nhận biết khi người sử dụng truy cập trở lại. Có thể thiết lập cookie bằng cách sử dụng hàm SetCookie().
12.3. Hằng số
PHP định nghĩa sẵn một số hằng số sau:
_FILE_: Tên của tệp script đang được thực hiện.
_LINE_: Số dòng mã script đang được thực hiện trong tệp script hiện tại.
_PHP_VERSION_: Phiên bản 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: Tất cả lỗi và cảnh báo
Có thể định nghĩa một hằng số bằng hàm define().
Ví dụ:
<?
define(“CONSTANT”, “Hello World.”);
echo CONSTANT; // Hello World.
?>
12.4. Biểu thức
Biểu thức là một phần quan trọng trong PHP. Phần lớn mọi thứ bạn viết đều được coi là một biểu thức. Điều này có nghĩa là mọi thứ đều có giá trị.
Một dạng cơ bản nhất của biểu thức là bao gồm các biến và hằng số.
PHP hỗ trợ ba kiểu giá trị cơ bản nhất: số nguyên, số thực, và chuỗi. Ngoài ra còn có mảng và đối tượng. Mỗi kiểu giá trị này đều có thể gán cho các biến hay làm giá trị trả về cho các hàm.
Có thể thao tác với các biến trong PHP tương tự như trong ngôn ngữ C.
Ví dụ:
$b = $a = 5;
$c = $a++;
$e = $d = ++$b;
$f = double($d++);
$g = double(++$e);
$h = $g += 10;
13. Cấu trúc điều khiển
Cũng giống như trong các ngôn ngữ lập trình khác, PHP cũng có các cấu trúc điều khiển.
13.1. Câu lệnh IF
If (điều kiện) { các lệnh thực hiện; }
13.2. Câu lệnh IF …ELSE
If (điều kiện)
{ các lệnh thực hiện; }
else
{ các lệnh thực hiện; }
13.3. Câu lệnh IF …ELSEIF
If (điều kiện 1)
{ các lệnh thực hiện; }
elseif (điều kiện 2)
{ các lệnh thực hiện; }
else
{ các lệnh thực hiện; }
14. Vòng lặp
14.1. Vòng lặp WHILE
while (điều kiện)
{
các lệnh thực hiện;
}
hoặc
while (điều kiện):
các lệnh thực hiện;
endwhile;
14.2. Vòng lặp DO .. WHILE
do
{
các lệnh thực hiện;
} while (điều kiện)
Vòng lặp loại này thực hiện ít nhất một lần.
14.3. Vòng lặp FOR
for (biểu thức 1; biểu thức 2; biểu thức 3)
{
các lệnh thực hiện;
}
14.4. Vòng lặp FOREACH
Vòng lặp foreach được hỗ trợ từ PHP 4.
foreach (biểu_thức_kiểu_mảng as $value)
{
các lệnh thực hiện;
}
hoặc
foreach (biểu_thức_kiểu_mảng as $key => $value)
{
các lệnh thực hiện;
}
15. Break và Continue
- break: kết thúc thực hiện cấu trúc lặp hiện thời (for, foreach, while, do ..while và switch ).
- continue: Bỏ qua vòng lặp hiện tại và tiếp tục thực hiện vòng lặp tiếp theo.
16. Câu lệnh Switch
switch (biến) {
case trường hợp 1: … break;
case trường hợp 2: … break;
case trường hợp 3: … break;
default:
}
17. Hàm
Một hàm có thể được định nghĩa bằng cách sử dụng có pháp sau:
function Tên_hàm (đối_số_1, đối_số_2, … đối_số_n)
{
Các công việc;
}
18. Truyền theo tham trị
Ví dụ:
function takes_array ($input)
{
echo “$input[0] + $input[1] = ”. $input[0] + $input[1];
}
Truyền theo tham biến
Ví dụ:
function add_some_extra (&$string)
{
$string .= ‘and something extra.’
}
$str = ‘This is a string,’;
add_some_extra ($str) ;
echo $str; // ‘This is a string, and something extra.’
Hàm có gí trị trả về
Giá trị được trả về bằng cách sử dụng lệnh tùy chọn trả về return. Có thể trả về bất kỳ giá trị nào, không thể trả về nhiều giá trị riêng lẻ nhưng có thể trả về một mảng các giá trị.
Ví dụ:
function small_numbers() {
return array(0,1,2);
}
Để trả về một tham trỏ, bạn cần có dấu & ở cả khai báo hàm lẫn ở giá trị trả về.
function &return_reference() {
return &$someref;
}
$newref = &return_reference() ;
Hàm biến
PHP hỗ trợ khái niệm hàm biến. Nghĩa là nếu tên một biến có gắn kèm theo dấu ngoặc đơn, PHP sẽ tìm hàm có cùng tên với giá trị của biến đó và thực hiện hàm đó.
Ví dụ:
<?
Function foo()
{
echo “In foo()\n”;
}
function bar($arg = ‘’)
{
echo “In bar(); argument was ‘$arg’.\n”;
}
function echoit($string)
{
echo $string;
}
$func = ‘foo’;
$func(); // Câu lệnh này gọi hàm foo()
$func = ‘bar’;
$func(‘test’); // Câu lệnh này gọi hàm bar()
$func = ‘echoit’;
$func(‘test’); // Câu lệnh này gọi hàm echoit()
?>
Các toán tử
Các toán tử số học: + - * / %
Các toán tử logic: And (&&), Or ( || ), Not ( ! ) , Xor
Các toán tử thao tác với bit: And (&), Or ( | ), Not ( ~ ) , Xor ( ^ ), dịch trái (>).
Các toán tử so sánh:
Mô tả
Ký hiệu
Bằng
= =
Bằng và cùng kiểu (1)
= = =
Không bằng
! =
Không bằng
Không bằng và không cùng kiểu (2)
! = =
Nhỏ hơn
<
Lớn hơn
>
Nhỏ hơn hoặc bằng
< =
Lớn hơn hoặc bằng
> =
Hai toán tử (1), (2) ở trên chỉ có trong phiên bản PHP 4.
Toán tử điều khiển lỗi: @ - khi đứng trước một biểu thức trì các lỗi của biểu thức sẽ bị bỏ qua và lưu trong $php_errormsg.
Toán tử thực thi: ` ` - PHP sẽ thực hiện nội dung nằm trong hai dấu ` như một lệnh shell. Trả về giá trị là kết quả trực hiện lệnh.
Tham chiếu
Trong PHP, tham chiếu có nghĩa là truy cập nội dung của biến giống nhau bằng tên biến khác nhau. Không giống với con trỏ trong ngôn ngữ C, con trỏ thì tượng trưng cho bảng các bí banh. Trong PHP, tên biến và nội dung của biến là khác nhau, vì vậy cùng một nội dung có thể có nhiều tên khác nhau.
Tham chiếu trong PHP cho phép bạn tạo ra hai biến có cùng nội dung.
Ví dụ:
$a = & $b;
Tham chiếu truyền giá trị bằng tham chiếu. Thực hiện bằng cách tạo một hàm cục bộ và truyền cho hàm giá trị được tham chiếu.
Vídụ:
function foo (&$var)
{
$var++;
}
$a=5;
foo ($a);
Kết quả: biến $a bằng 6.
Giá trị trả về của một hàm bằng tham chiếu rất tiện khi bạn muốn sử dụng hàm để tìm một giá trị trong một phạm vi nào đó.
Ví dụ:
function foo (&$var)
{
$var =& $GLOBALS[“baz”];
}
foo($bar);
Khi muốn loại bỏ mối liên kết giữa tên biến và giá trị của biến thì có thể sử dụng hàm unset().
Ví dụ:
$a = 1;
$b =& $a;
unset ($a);
CHƯƠNG IV: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
I. PHÂN TÍCH HỆ THỐNG
Mô tả hệ quản trị cơ sở dữ liệu
USER
QUẢN TRỊ
USER
QUẢN TRỊ
HỆ THỐNG
Nhập thông tin Kết quả
Query
Nhập liệu Kết quả
Query
Hình 2: Sơ đồ mô tả hệ quản trị cơ sở dữ liệu
II. THIẾT KẾ HỆ THỐNG
1.Mô tả một số modul
1.1. Modul About_us
<?php
if (!defined('ADMIN_FILE')) {
die ("Access Denied");
}
global $prefix, $db, $admin_file;
$aid = substr("$aid", 0,25);
$row = $db->sql_fetchrow($db->sql_query("SELECT title, admins FROM ".$prefix."_modules WHERE title='News'"));
$row2 = $db->sql_fetchrow($db->sql_query("SELECT name, radminsuper FROM ".$prefix."_authors WHERE aid='$aid'"));
$admins = explode(",", $row['admins']);
$auth_user = 0;
for ($i=0; $i < sizeof($admins); $i++) {
if ($row2['name'] == "$admins[$i]" AND $row['admins'] != "") {
$auth_user = 1;
}
}
if ($row2['radminsuper'] == 1 || $auth_user == 1) {
/*********************************************************/
/* Sections Manager Functions */
/*********************************************************/
function about_us(){
global $prefix, $db, $language, $multilingual, $bgcolor2, $admin_file;
include("header.php");
GraphicAdmin();
title(""._CONTENTMANAGER."");
OpenTable();
$sql = "select * from about_us";
$row = $db->sql_fetchrow($db->sql_query($sql));
$content_about_us = $row['about_us'];
echo "About us\n"
."\n"
."About Your Company:$content_about_us\n"
."\n"
."\n"
."\n"
."\n"
."\n";
CloseTable();
}
function about_us_save($content_about_us) {
global $prefix, $db, $admin_file;
$sql = "select count(*) as num from about_us";
$row = $db->sql_fetchrow($db->sql_query($sql));
$num = $row['num'];
if($num > 0){
$sql = "update about_us set "
." about_us = '$content_about_us'";
}else{
$sql = "insert into about_us about_us values('$content_about_us')";
}
$db->sql_query($sql);
Header("Location: ".$admin_file.".php?op=about_us");
}
switch ($op) {
case "about_us":
about_us();
break;
case "about_us_save":
about_us_save($content_about_us);
break;
}
} else {
include("header.php");
GraphicAdmin();
OpenTable();
echo ""._ERROR."You do not have administration permission for module \"$module_name\"";
CloseTable();
include("footer.php");
}
?>
1.2. Modul Content
<?php
/************************************************************************/
/* PHP-NUKE: Web Portal System */
/* =========================== */
/* */
/* Copyright (c) 2005 by Francisco Burzi */
/* */
/* */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License. */
/************************************************************************/
if (!defined('MODULE_FILE')) {
die ("You can't access this file directly...");
}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
get_lang($module_name);
$pagetitle = "- $module_name";
function showpage($pid, $page=0) {
global $prefix, $db, $sitename, $admin, $module_name;
include("header.php");
OpenTable();
$pid = intval($pid);
$mypage = $db->sql_fetchrow($db->sql_query("SELECT * FROM ".$prefix."_pages WHERE pid='$pid'"));
$myactive = intval($mypage['active']);
$mytitle = stripslashes(check_html($mypage['title'], "nohtml"));
$mysubtitle = stripslashes(check_html($mypage['subtitle'], "nohtml"));
$mypage_header = stripslashes($mypage['page_header']);
$mytext = stripslashes($mypage['text']);
$mypage_footer = stripslashes($mypage['page_footer']);
$mysignature = stripslashes($mypage['signature']);
$mydate = $mypage['date'];
$mycounter = intval($mypage['counter']);
if (($myactive == 0) AND (!is_admin($admin))) {
echo "Sorry... This page doesn't exist.";
} else {
$db->sql_query("UPDATE ".$prefix."_pages SET counter=counter+1 WHERE pid='$pid'");
$date = explode(" ", $mydate);
echo "$mytitle"
."$mysubtitle";
$contentpages = explode( "", $mytext );
$pageno = count($contentpages);
if ( $page=="" || $page < 1 )
$page = 1;
if ( $page > $pageno )
$page = $pageno;
$arrayelement = (int)$page;
$arrayelement --;
if ($pageno > 1) {
echo ""._PAGE.": $page/$pageno";
}
if ($page == 1) {
echo "".nl2br($mypage_header)."";
}
echo "$contentpages[$arrayelement]";
if($page >= $pageno) {
$next_page = "";
} else {
$next_pagenumber = $page + 1;
if ($page != 1) {
$next_page .= "- ";
}
$next_page .= ""._NEXT." ($next_pagenumber/$pageno) ";
}
if ($page == $pageno) {
echo "".nl2br($mypage_footer)."";
}
if($page <= 1) {
$previous_page = "";
} else {
$previous_pagenumber = $page - 1;
$previous_page = " "._PREVIOUS." ($previous_pagenumber/$pageno)";
}
echo "$previous_page $next_page";
if ($page == $pageno) {
echo "".nl2br($mysignature).""
.""._COPYRIGHT." $sitename "._COPYRIGHT2.""
.""._PUBLISHEDON.": $date[0] ($mycounter "._READS.")"
.""._GOBACK."";
}
}
CloseTable();
include("footer.php");
}
function list_pages() {
global $prefix, $db, $sitename, $admin, $multilingual, $module_name, $admin_file;
include("header.php");
title("$sitename: "._PAGESLIST."");
OpenTable();
echo ""._LISTOFCONTENT." $sitename:";
$result = $db->sql_query("SELECT * FROM ".$prefix."_pages_categories");
$numrows = $db->sql_numrows($result);
$numrows2 = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_pages WHERE cid!='0' AND active='1'"));
if ($numrows > 0 AND $numrows2 > 0) {
echo ""._CONTENTCATEGORIES.""
."";
while ($row = $db->sql_fetchrow($result)) {
$cid = intval($row['cid']);
$title = stripslashes(check_html($row['title'], "nohtml"));
$description = stripslashes($row['description']);
$numrows3 = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_pages WHERE cid='$cid'"));
if ($numrows3 > 0) {
echo " $title $description";
}
}
echo ""
.""._NONCLASSCONT."";
}
$result4 = $db->sql_query("SELECT pid, title, subtitle, clanguage FROM ".$prefix."_pages WHERE active='1' AND cid='0' ORDER BY date");
echo "";
while ($row4 = $db->sql_fetchrow($result4)) {
$pid = intval($row4['pid']);
$title = stripslashes(check_html($row4['title'], "nohtml"));
$subtitle = stripslashes(check_html($row4['subtitle'], "nohtml"));
$clanguage = $row4['clanguage'];
if ($multilingual == 1) {
$the_lang = "";
} else {
$the_lang = "";
}
if ($subtitle != "") {
$subtitle = " ($subtitle)";
} else {
$subtitle = "";
}
if (is_admin($admin)) {
echo "· $the_lang $title $subtitle [ "._EDIT." | "._DEACTIVATE." | "._DELETE." ]";
} else {
echo "· $the_lang $title $subtitle";
}
}
echo "";
if (is_admin($admin)) {
$result5 = $db->sql_query("SELECT pid, cid, title, subtitle, clanguage FROM ".$prefix."_pages WHERE active='0' ORDER BY date");
echo ""._YOURADMINLIST."";
echo "";
while ($row5 = $db->sql_fetchrow($result5)) {
$pid = intval($row5['pid']);
$cid = intval($row5['cid']);
$title = stripslashes(check_html($row5['title'], "nohtml"));
$subtitle = stripslashes(check_html($row5['subtitle'], "nohtml"));
$clanguage = $row5['clanguage'];
if ($multilingual == 1) {
$the_lang = "";
} else {
$the_lang = "";
}
if ($subtitle != "") {
$subtitle = " ($subtitle) ";
} else {
$subtitle = " ";
}
echo "· $the_lang $title $subtitle [ "._EDIT." | "._ACTIVATE." | "._DELETE." ]";
}
echo "";
}
CloseTable();
include("footer.php");
}
function list_pages_categories($cid) {
global $prefix, $db, $sitename, $admin, $multilingual, $module_name, $admin_file;
include("header.php");
title("$sitename: "._PAGESLIST."");
OpenTable();
echo ""._LISTOFCONTENT." $sitename:";
$cid = intval($cid);
$result = $db->sql_query("SELECT pid, title, subtitle, clanguage FROM ".$prefix."_pages WHERE active='1' AND cid='$cid' ORDER BY date");
echo "";
while ($row = $db->sql_fetchrow($result)) {
$pid = intval($row['pid']);
$title = stripslashes(check_html($row['title'], "nohtml"));
$subtitle = stripslashes(check_html($row['subtitle'], "nohtml"));
$clanguage = $row['clanguage'];
if ($multilingual == 1) {
$the_lang = "";
} else {
$the_lang = "";
}
if ($subtitle != "") {
$subtitle = " ($subtitle)";
} else {
$subtitle = "";
}
if (is_admin($admin)) {
echo "· $the_lang $title $subtitle [ "._EDIT." | "._DEACTIVATE." | "._DELETE." ]";
} else {
echo "· $the_lang $title $subtitle";
}
}
echo "";
if (is_admin($admin)) {
$result2 = $db->sql_query("SELECT pid, title, subtitle, clanguage FROM ".$prefix."_pages WHERE active='0' AND cid='$cid' ORDER BY date");
echo ""._YOURADMINLIST."";
echo "";
while ($row2 = $db->sql_fetchrow($result2)) {
$pid = intval($row2['pid']);
$title = stripslashes(check_html($row2['title'], "nohtml"));
$subtitle = stripslashes(check_html($row2['subtitle'], "nohtml"));
$clanguage = $row2['clanguage'];
if ($multilingual == 1) {
$the_lang = "";
} else {
$the_lang = "";
}
if ($subtitle != "") {
$subtitle = " ($subtitle) ";
} else {
$subtitle = " ";
}
echo "· $the_lang $title $subtitle [ "._EDIT." | "._ACTIVATE." | "._DELETE." ]";
}
echo "";
}
echo ""._GOBACK."";
CloseTable();
include("footer.php");
}
switch($pa) {
case "showpage":
showpage($pid, $page);
break;
case "list_pages_categories":
list_pages_categories($cid);
break;
default:
list_pages();
break;
}
?>
CHƯƠNG V: CÀI ĐẶT HỆ THỐNG
I. CÀI TRÊN CLIENT
1. Điều kiện
Muốn trình duyệt web trên client môi thường thích ứng đó là Windows (Windows XP, Windows 2000,……….)
2. Yêu cầu
Cài hệ thống máy chủ ảo để trình duyệt web trên Client
Ta thực hiên các bước sau
Bước 1: Khởi động File “EasyPHPsteup.exe”
Click chọn OK khi bạn muốn cài đặt
Hình 3: cài đặt easy PHP
Bước 2: Click chọn Next để chuyển sang bước tiếp theo
Bước 3: Chọn I accept the agreement và chọn Next
Bước 4,5,6: Click chọn Next
Bước 7: Click chọn Isntall
Bước 8: Chờ khi nào cài đặt song sang bước 9 Click chọn Finish khi đó việc cài đặt của bạn đã hoàn thành
Bước 10: Khởi động Easy PHP bạn vào Start / Program / Accessories / Easy PHP
Mà hình khởi động Easy PHP như sau, bạn chờ khi nào cả hai đèn đều xanh thì khi đó đã hoàn thành việc khởi động sau đso bạn hu nhỏ màn hình lại và vào Internet Explorer để duyệt web
Hình 5 : Màn hình khi khởi động Easy PHP
Lưu ý: Khi trình duyệt web trên máy chủ bạn phải đánh Localhost vào URL (địa chỉ trình duyệt web) và tên website
Ví dụ: “ ”
Hình 7: Của sổ duyệt Web
CHƯƠNG VI: SƠ ĐỒ WEBSITE &GIAO DIỆN
I. SƠ ĐỒ WEBSITE
Giới thiệu
Trang chủ
Tin tức
Thành viên
Đăng nhập
Liên hệ
Bảo hiểm xe máy
Hợp đồng
Bảo hiểm Xe ôtô
Bảo hiểm xe cơ giới
Các dịch vụ khác
Mạng Lưới
Cam kết
Thông tin
cá nhân
Hình 8: Sơ Đồ Website
II. GIAO DIỆN WEBSITE
1. Trang Chủ
Với giao diện đẹp cách phối màu hợp lý thông tn đầy đủ bao quát toàn bộ Website
Hình 9: Trang chủ
2. Trang giới thiệu
Trang giới thiệu với thiết kế thông tin thay đổi do người quản trị quản lý ở đây các tin tức chính là giưới thiệu về công ty
Hình 10: Trang giới thiệu
3. Trang thành viên
Hình 10: Trang đăng ký thành viên
4. Trang đăng nhập
Hình 11: Trang đăng nhập
5. Trang Liên hệ
Hình 12: Trang Liên hệ
6. Trang bảo hiểm xe cơ giới
Hình 13. Bảo hiểm xe cơ giới
7. Trang các dịch vụ khác
Hình 14: Các dịch vụ khác
8. Trang mạng lưới
Hình 15: Trang mạng lưới bảo hiểm
9. Cam kết
Hình 16: Trang cam kết
10. Giao diện trang Admin
Hình 17: Trang dành cho người quản trị
CHƯƠNG VII: ỨNG DỤNG VÀ PHÁT TRIỂN
I. ỨNG DỤNG
1. Quảng bá thương hiệu
Nhà kinh doanh sẽ thấy thương hiệu của mình có danh tiếng hơn trên thương trường, và để được cạnh tranh với nhiều mặt hàng nước ngoài khác thì các nàh kinh doanh vViệt Nam phải xây dựng thương hiệu riêng cho mình
2. Kinh doanh
· Tăng cường khả năng giao tiếp của bạn với khách hàng
· Tăng cường sự tín nhiệm của khách hàng về chất lượng hàng hóa/ dịch vụ và nhãn hiệu sản phẩm
· Cung cấp thông tin và phát triển hoạt động bán hàng 24 giờ trong ngày, 07 ngày trong tuần
· Tạo sức cạnh tranh để chiếm lĩnh thị phần với các đối thủ lớn
· Khách hàng của bạn và thậm chí cả các khách hàng tiềm năng ngày nay đều đang sử dụng Internet để mua hàng, tìm kiếm thông tin, và thiết lập các mối quan hệ kinh doanh
II. PHÁT TRIỂN
Dựa trên nền tảng công nghệ Web phát triển nhiều năm qua, công nghệ WEB++ có thể cung cấp đầy đủ, hoàn chỉnh các chức năng mạnh mẽ, hỗ trợ cho việc thực hiện thương mại điện tử trực tuyến (E-Commerce).
- Cập nhật thông tin hàng hoá trực tuyến:
Bạn dễ dàng cập nhật và thường xuyên thay đổi hình ảnh, thông tin chi tiết, giá cả các mặt hàng bạn sẽ kinh doanh bất cứ lúc nào và ở bất cứ nới đâu.
- Mua và đặt mua hàng trực tuyến (Online Shopping):
Khách hàng của bạn dễ dàng tìm kiếm hàng hoá, chọn hàng, thêm bớt mặt hàng vào giỏ hàng (Shopping Cart), tự động tính toán / ghi nhớ đơn hàng và gửi đơn đăng ký mua hàng dễ dàng. Ở chế độ mua hàng của người viếng thăm, chúng tôi luôn tuân thủ chế độ bảo mật SSL và phối hợp với các nhà cung cấp dịch vụ thanh toán (PSP - Payment Service Provider), các dịch vụ kiểm tra Credit Cards có tên tuổi như Barclays Merchant Services, LloydsTSB Cardnet...
- Quản lý các đơn đặt hàng trực tuyến (Order Management System)
Quản lý, lưu trữ và báo cáo các thông tin về đặt hàng và trạng thái của đơn hàng: đã giao hàng chưa, đã thanh toán chưa...
- Quản lý khách hàng (Customer Management)
Lưu trữ, thống kê các hoạt động gắn với các khách hàng của doanh nghiệp. Mọi hoạt động gắn với khách hàng và đơn hàng đều có thể thực hiện từ xa, không phụ thuộc vào vị trí địa lý.
- Thanh toán trực tuyến (Payment Online Process)
Hỗ trợ cơ chế thanh toán điện tử qua Website giữa bên mua và bên bán. Chương trình này có ưu điểm là tính bảo mật tuyệt đối, dễ sử dụng và được bảo chứng bởi một trong 3 nhà xử lý thanh toán trực tuyến nổi tiếng thế giới: PayPal, 2Checkout.com, Authorize.NET. Các doanh nghiệp đều đã tin tưởng rằng cửa hàng online hoàn chỉnh của bạn thỏa mãn được khách hàng trong nước và quốc tế truy cập vào cũng như yêu cầu đặt ra đối với việc bán hàng qua Internet.
III. ƯU ĐIỂM CỦA WEBSITE
- Quản lý dễ dàng, cập nhật nhanh chóng các bài viết giới thiệu doanh nghiệp, dịch vụ, tin tức...
- Bài viết có thể dùng ảnh, đặt Web links liên kết, upload files và có thể đăng ở nhiều mục tin
- Bài viết có chức năng gửi bài qua e-mail cho bạn bè, in ấn bài viết
- Quản lý người soạn nội dung với nhiều quyền hạn khác nhau quy trình đăng tin lên Web site
- Đếm số lượng người truy cập, tần số đọc bài, tần số viết bài, các thông tin thống kê về hoạt động của Web site
- Có hệ thống cache cải tiến tăng tốc độ đọc trang tin
- Chức năng tìm kiếm thông tin trong Web site theo từ khoá (search by keywords)
IV. NHƯỢC ĐIỂM
Do ở Việt Nam dịch vụ thẻ chưa phát triển nên cũng hạn chế nhiều mặt khi khách hàng mua bảo hiểm phải thanh toán bằng tiền mặt cũng chính vì thế mà dịch vụ bán hàng trực tuyến cũng hạn chế rất nhiều khi thanh toán chuyển khoản.
CHƯƠNG VIII: TỔNG KẾT
Báo cáo thực tập Phần II của em đã thể hiện tổng quát được toàn bộ vấn đề thực tập bài tập lớn trong thời gian vừa qua. Báo cáo bài tập lớn đã hệ thống lại đầy đủ nhất về kiến thức đã học và tiếp thu tại trường cũng như đi thực tập tại công ty.
Trong khoảng thời gian cũng không phải là nhiều và kiến thức có hạn nên em không tránh khỏi nhứng thiếu sót mong được sự giúp đỡ của các thầy các cô và các bạn. Để em rút kinh nghiệm hơn trong những bài báo cáo sau.
Em xin chân thành cảm ơn các thầy cô giáo đã tạo đìêu kiện cho em được đi thực tập tại Công ty đây là một môi trường tốt giúp em có kinh nghiêm nhiều hơn trong cuộc sống và là một môi trường tốt để em phấn đấu học tập và làm việc.
Em cũng xin chân thánh cảm ơn ban lãnh đạo Công Ty nơi em đã thực tập và làm việc các anh các chị trong Công ty đã chỉ bảo tận tình.
Em cũng xin chân thành cảm ơn anh Trương Anh Tuấn Gián Đốc Công Nghệ, Anh Nguyễn Mạnh Tiến là người hướng dẫn làm bài tập lớn này. Qua đây em cũng xin được gửi lời cảm ơn tới các thầy cô đã tạo điều kiện thật tốt cho em trong nhưng thời gian vừa qua.
Hà Nội: Ngày ….tháng…..năm 2006
Sinh Viên Thực Hiện
Lê Thị Diệu Thuý
Các file đính kèm theo tài liệu này:
- 22214.doc