Tải bản đầy đủ (.doc) (62 trang)

Tự học thiết kế web html

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (348.07 KB, 62 trang )

#1 (permalink)
11-27-2009, 03:14 AM
thangtong
Member

Gia nhập: Nov 2009
Bài gởi: 88
Bài 1: Những khái niệm căn bản về mạng máy tính
Mục đích và yêu cầu:
- Nắm được các khái niệm cơ bản nhất về mạng máy tính.
- Biết cách cài đặt giao thức TCP/IP và web server.
Yêu cầu:
- Một tờ giấy trắng
- Một gói café + 1 cốc nước nóng, hoặc một ít chè xanh.
- Bộ cài Windows.
- Bộ cài XAMPP (có trong mục download - PHP Storage).
Bắt đầu:
Bước 1: Ghi vào tờ giấy dòng chữ: "Đang bận làm việc, không tiếp khách, chỉ tiếp gái đẹp" rồi dán
trước cửa hoặc trên bàn làm việc Grin
Bước 2: Pha một cốc café. Cheesy
Bước 3: Bắt đầu với những khái niệm:
I. Khái niệm cơ bản:
1. Mạng máy tính: Là 2 hay nhiều máy tính được kết nối với nhau.
2. Máy chủ - Máy khách:
Trong mạng máy tính, máy chủ (hay còn gọi là server) là một máy tính được sử dụng để các máy
tính khác truy cập. Các máy tính truy cập vào 1 máy chủ được gọi là máy khách.
Như vậy, 1 máy tính trong mạng có thể vừa là 1 máy chủ (khi có máy khác truy cập đến nó), vừa là
một máy khách (nếu nó truy cập đến một máy tính khác). Vì vậy đừng nên nghĩ rằng máy chủ là 1
cái gì đó cao siêu cho mệt óc Cheesy
3. Giao thức mạng:
Các máy tính trên mạng "nói chuyện" với nhau thông qua một ngôn ngữ đặc biệt gọi là các giao thức


mạng. Có rất nhiều giao thức khác nhau, mỗi giao thức có 1 nhiệm vụ riêng. Ở đây tôi tạm chia ra
làm 2 nhóm giao thức:
- Giao thức truyền dữ liệu, chuyên dùng để vận chuyển dữ liệu giữa 2 máy tính.
- Giao thức xử lý dữ liệu, có nhiệm vụ xử lý dữ liệu nhận được từ giao thức truyền dữ liệu
Túm lại: Không nên phát hoảng khi nghe thấy 2 từ giao thức. Chẳng qua nó chỉ là 1 dạng ngôn ngữ
để trao đổi với nhau mà thôi. Và bạn cứ yên chí rằng nếu thích, bạn có thể tự định nghĩa ra một cái
giao thức nào đó. Chẳng hạn như các chương trình chat của Yahoo, hay các chương trình remote
trojan… Chúng tự đẻ ra các giao thức riêng dựa trên nền giao thức TCP/IP đấy.
4. Chùm giao thức TCP/IP
Giao thức TCP/IP là 1 giao thức được sử dụng để truyền dữ liệu giữa 2 máy tính. Theo giao thức
này, mỗi máy tính sẽ có 1 địa chỉ xác định trên mạng gọi là địa chỉ IP. Địa chỉ IP là một cụm chữ số
có dạng a.b.c.d (a,b,c,d là các số từ 0 đến 255). VD: 174.178.0.1.
Giao thức TCP/IP chỉ có nhiệm vụ duy nhất là truyền dữ liệu giữa 2 máy tính và đảm bảo giữ
nguyên vẹn dữ liệu khi truyền đi. Ngoài ra nó chẳng cần biết dữ liệu đó là gì và được xử lý như thế
nào.
Dựa trên khả năng vận chuyển của giao thức TCP/IP, người ta xây dựng nên một nhóm các giao
thức khác chuyên xử lý dữ liệu nhận được từ TCP/IP, gọi là chùm giao thức TCP/IP hay họ giao
thức TCP/IP.
Để phân chia các giao thức con trong chùm giao thức TCP/IP, người ta sử dụng một khái niệm khác
gọi là Cổng giao thức. Đây là 1 con số nguyên từ 0 đến 32767 thì phải . Mỗi giao thức con trong
chùm giao thức sẽ chiếm hữu một cổng riêng. Thông thường thì mỗi chương trình ứng dụng trên
server sẽ chịu trách nhiệm mở một cổng TCP/IP, định nghĩa giao thức cho cổng đó, và sau đó là
lắng nghe các yêu cầu từ máy khách và xử lý các yêu cầu đó.
Như vậy, trong hệ giao thức TCP/IP, một máy khách sẽ truy cập thành công đến máy chủ nếu như
nó có địa chỉ IP và cổng đang mở của dịch vụ trên máy chủ.
Chẳng hạn: Với 1 máy chủ quản lý web (web server), chúng ta cần phải có một ứng dụng web gọi là
web server. Ứng dụng này sẽ mở 1 cổng (mặc định là 80) và xử lý các tín hiệu đến từ cổng đó.
Bây giờ hãy nhấp 1 ngụm café cho tỉnh táo đã Cheesy
II. Trang Web tĩnh và Trang Web động
1. Trang web tĩnh và trang web động

Bạn đã từng xây dựng một trang Web và đưa nó lên mạng? Trang web của bạn thật là thú vị (ít nhất
là theo ý nghĩ của bạn Cheesy) và tất nhiên bạn muốn tham khảo ý kiến của người đọc? Chẳng nhẽ
bạn lại cho số điện thoại và yêu cầu người góp ý phải gọi điện đến? Hic… Đảm bảo sẽ chẳng có ma
nào thèm gọi điện.
Bạn muốn "xin" một ít thông tin về người duyệt Web… hic. Làm cách nào bây giờ???
Vâng, đó chính là nhược điểm của cái gọi là trang web tĩnh. Đó là các trang Web không cho phép
bạn có thể tương tác với người dùng (chẳng hạn như là trao đổi hay thu thập các thông tin từ phía
người dùng). Nó là các trang web có đuôi *.htm thông thường. Ngược lại, các trang Web động cho
phép bạn nhận thông tin từ người dùng, xử lý thông tin đó, và có thể đáp trả lại các yêu cầu của họ.
Xem ra nó cũng linh động ra phết đấy chứ?
Để làm được điều đó, tất nhiên là bạn phải … theo dõi các bài viết này Cheesy
2. Lập trình Script
Các trang web nguyên thuỷ sử dụng ngôn ngữ định dạng chuẩn là HTML (HyperText Markup
Language). HTML chuẩn chỉ bao gồm các cặp thẻ đánh dấu để định khuôn dạng của tài liệu. Tuỳ
theo tên thẻ là gì mà trình duyệt sẽ tự động hiểu và làm các công việc do thẻ đó quy định. Chẳng
hạn như cặp thẻ <B>….</B> quy định đoạn văn bản trong đó sử dụng chữ đậm. Vì vậy, trên thực tế
người ta không coi nó là một ngôn ngữ (vì nó chẳng liên quan gì đến những thứ mà ta hay gặp trong
lập trình như biến, câu lệnh rẽ nhánh, lặp…). Cũng chính vì nguyên nhân này, nó phải tự mở rộng
bằng cách cho phép "nhúng" vào bản thân nó một số đoạn mã lệnh chương trình đặc biệt, người ta
thường gọi chúng là các đoạn mã Script hay các đoạn mã nhúng . Ngôn ngữ sử dụng trong các
đoạn mã lệnh đó gọi là các ngôn ngữ Script. Các ngôn ngữ script thường đơn giản và không có
nhiều sức mạnh như các ngôn ngữ "kinh điển" cùng tên, hay nói cách khác, chúng là một phần rất
nhỏ của một ngôn ngữ nào đó được tích hợp vào trình duyệt để thực hiện một số thao tác nhất định.
Chi tiết về ngôn ngữ HTML đã có đầy rẫy trên Internet, cũng như ở các hiệu sách, nên chúng không
được nhắc lại ở đây. Nếu các bạn chưa biết gì về nó thì bạn phải tìm đọc các tài liệu về HTML trước
khi tiếp tục theo dõi khoá học này.
Lập trình Script ở máy khách
Như tên gọi của nó, lập trình script ở máy khách là viết các đoạn script chạy trên máy khách. Các
đoạn mã này được máy chủ gửi kèm trong tài liệu, đưa về máy khách và được thực hiện ở đây.
Trong tài liệu gửi về trình duyệt, các đoạn mã này thường được tìm thấy trong cặp thẻ <Script

language ="xxxxxx">…</Script>.
Có nhiều ngôn ngữ script phía máy khách. Nổi tiếng hơn cả là Javascript. Kế đến là VbScript và
PerlScript.
Vì tài liệu này chủ yếu tập trung vào PHP - một ngôn ngữ script chạy trên máy chủ, nên chi tiết
những ngôn ngữ này không được nhắc đến trong tài liệu. Riêng về JavaScript, các bạn có thể tìm
thấy các tài liệu tiếng Việt qua trang tìm kiếm Vinaseek.com. Nếu có thời gian, tôi khuyên các bạn
nên tìm hiểu về chúng. Rất nhiều xảo thuật bắt mắt có thể tìm thấy trong các đoạn mã này.
Kích chuột vào đây để tham khảo một tài liệu về JavaScript
Lập trình Script ở máy chủ
Trái ngược với lập trình Script ở máy khách (thực thi mã lệnh ở máy khách), lập trình script ở máy
chủ cho phép thực thi các đoạn mã ngay ở trên máy chủ. Không như các đoạn mã script hoạt động
ở máy khách, các tài liệu có chứa các đoạn mã script phía máy chủ thường được lưu ở các file tài
liệu có đuôi mở rộng riêng biệt, và các đoạn mã thi hành trên máy chủ cũng phải được đặt trong một
cặp thẻ đặc biệt tuỳ theo quy định của chương trình xử lý. Chú ý rằng đối với mỗi loại ngôn ngữ
server script sẽ có một chương trình xử lý riêng. Chẳng hạn các đoạn mã ASP thường được đặt
trong các file *.asp, và chúng được xử lý bằng file ASP.dll.
Chi tiết về cách thức hoạt động của loại này, có thể tóm tắt như sau:
- Bước 1: Client gửi yêu cầu đến máy chủ
- Bước 2: Web server kiểm tra xem yêu cầu đó cần loại tài liệu nào. Nếu đó là loại tài liệu có chứa
các đoạn mã server script, nó sẽ triệu gọi chương trình xử lý tương ứng với loại tài liệu đó
- Bước 3: Chương trình xử lý sẽ thực thi các đoạn mã server script trong tài liệu đó, và trả kết quả
(thường là dưới khuôn dạng HTML) về cho web server.
- Bước 4: Web server trả kết quả tìm được cho Client và ngắt kết nối
Bài 2: Cài đặt hệ thống (Web server Apache, CSDL MySQL, PHP)
Cài đăt web server Apache, MySQL và PHP.
1. Cài đặt giao thức TCP/IP
Các dịch vụ web server dựa trên nền giao thức TCP/IP. Vì vậy trước khi cài đặt server, ta phải tiến
hành cài đặt giao thức TCP/IP.
Để cài đặt giao thức TCP/IP, ta vào Control Panel, chọn Network. Nếu thấy dòng chữ TCP/IP đã
xuất hiện trong ô Configuration, tức là giao thức TCP/IP đã được cài đặt trên máy. Còn nếu không,

ta kích chuột vào Add. Hộp thoại Select Component hiển thị ra. Kích chọn tiếp Protocol -> Add.
Trong danh sách bên trái, chọn Microsoft. Sau đó sang danh sách bên phải, chọn TCP/IP. Bấm
Enter để bắt đầu quá trình cài đặt.
Trong quá trình cài đặt, nếu máy tính của bạn chưa có card mạng thì hệ thống sẽ yêu cầu cài một
trình điều khiển card mạng nào đó. Đừng lo, cứ chọn đại theo chỉ dẫn sẽ xong thôi.
Sau khi cài đặt xong, mở cửa sổ Command Prompt ra. Gõ lệnh
C:\ping 127.0.0.1
Nếu thấy có 4 dòng chữ có dạng:
Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx
Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx
Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx
Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx
tức là giao thức TCP/IP đã được cài đặt thành công.
Ghi chú: Dãy số 127.0.0.1 chính là địa chỉ IP mặc định của chính máy tính bạn đang sử dụng. Bạn
cũng có thể sử dụng cái tên localhost thay cho địa chỉ IP 127.0.0.1 để truy cập vào máy tính của
chính mình.
2. Cài đặt web server, PHP, MySQL:
Công cụ cài đặt ở đây được tôi lựa chọn là XAMPP - Bộ công cụ cài đặt trọn gói bao gồm Web
server Apache, bộ xử lý PHP, và CSDL My SQL. Các bạn có thể tham khảo chi tiết phần mềm tại:
]apache friends - very easy apache, mysql, php and perl installation
without hassles.
Trước khi cài đặt và vận hành hệ thống, hãy ngắt toàn bộ các website mặc định của IIS/PWS, và
tắt luôn dịch vụ nếu các bạn đã từng cài các webserver này. Nếu các bạn đang chạy Apache và
MySQL thì cũng gỡ bỏ (uninstall) đi.
Các bạn tiến hành cài đặt XAMPP vào một thư mục nào đó (chẳng hạn ở đây tôi chọn là
c:\xampp).
Sau khi cài đặt xong, các bạn đã có thể vận hành Apache, PHP và MySQL.
Để vận hành hệ thống, các bạn vào thư mục của hệ thống (c:\xampp theo ví dụ trên), chạy file
xampp-control.exe. Tiếp đó start các dịch vụ Apache và MySQL lên. Nếu quá trình khởi động thành
công, khi gõ địa chỉ http://localhost hoặc http://127.0.0.1 vào trình duyệt thì sẽ hiển thị trang chủ

XAMPP.
3. Một số thông tin về hệ thống:
- Thư mục tài liệu: Là thư mục gốc của Apache. Mọi địa chỉ URL gửi lên server sẽ được phân tích
thành đường dẫn tương ứng với đường dẫn của thư mục gốc ảo trên. Theo mặc định, thư mục
này được lưu trong thư mục cài đặt XAMPP với tên là htdocs (VD trên máy của tôi là
C:\xampp\htdocs
- Thư mục dữ liệu của MySQL: Nằm trong thư mục /mysql/data. Trong thư mục này, MySQL sẽ
lưu trữ các CSDL (Database) dưới dạng các thư mục, mỗi bảng trong CSDL được ghi trong một
file riêng biệt.
- Để thao tác với CSDL MySQL, các bạn có thể mở trình duyệt và vào trang
http://localhost/phpmyadmin/ . Chữ Localhost đã được giải thích ở trên.
Bài 3: Lịch sử các ngôn ngữ lập trình web động (đọc thêm)
Lịch sử phát triển các ứng dụng trên Web server. ASP, JSP và PHP
Vài năm trước đây, con đường thực sự duy nhất để vận chuyển các dữ liệu động tới trang Web là
kỹ thuật CGI (Common Gateway Interface). Các chương trình CGI cung cấp một sự liên hệ đơn
giản để tạo các ứng dụng Web cho phép tiếp nhận các dữ liệu nhập vào, các yêu cầu truy vấn cơ
sở dữ liệu từ phía người dùng và trả một vài kết quả về cho trình duyệt. Các chương trình CGI có
thể được viết trên một vài ngôn ngữ, trong đó phổ biến nhất là Perl. Web server sử dụng CGI như
là một cổng truy cập chặn giữa yêu cầu của người dùng và dữ liệu được yêu cầu. Nó sẽ được nạp
vào bộ nhớ như một chương trình bình thường. Thông thường các web server sẽ chuyển các yêu
cầu và triệu gọi chương trình CGI. Sau khi chương trình kết thúc, web server sẽ đọc dữ liệu trả về
từ chương trình và gửi nó đến trình duyệt.
Nhược điểm lớn nhất của kỹ thuật CGI là nó hoạt động kém hiệu quả. Mỗi khi web server nhận
một yêu cầu, một tuyến trình mới được tạo ra. Mỗi tuyến trình lại chứa trong nó các đoạn mã lệnh,
dữ liệu… và không được chia sẻ lẫn nhau, do đó gây ra lãng phí bộ nhớ. Để khắc phục nhược
điểm này, Microsoft và Netscape đã hợp tác và đưa ra một cải tiến đáng kể là chuyển chúng về
dạng các file thư viện liên kết động (DLL ), cho phép chia sẻ mã lệnh giữa các tuyến trình. Đây
chính là các kỹ thuật ISAPI và NSAPI.
Đen đủi thay, các kỹ thuật dựa trên DLL không phải là đã hoàn thiện. Chúng vẫn còn một số vấn
đề:

- Khi các thư viện nền tảng được gọi, nếu muốn thoát các ứng dụng này, ta phải tắt chương trình
triệu gọi (Web server) và khởi động lại máy tính.
- Các thư viện cần được đặt trong các tuyến trình bảo vệ, tức là chúng cần phải được cảnh giác
về cách sử dụng các biến chung hoặc các biến tĩnh.
- Nếu chương trình triệu gọi gây ra lỗi truy cập, nó có thể dẫn đến tình trạng server bị treo tắc tử.
- Và cuối cùng: khi đã được dịch ra các file DLL, công việc gỡ lỗi cũng như bảo trì mã lệnh trở nên
vất vả hơn bao giờ hết.
Kỹ thuật Web mới nhất của Microsoft, kết hợp HTML, các đoạn Script, các thành phần xử lý phía
server trong cùng một file, được gọi là ASP (Active Server Pages), với phiên bản mới nhất hiện
nay là ASP.Net. ASP được triệu gọi bởi một thư viện liên kết động gắn với các Web server của
Microsoft. Về bản chất, ta có thể coi ASP như là một ngôn ngữ thông dịch vậy. Một trang ASP có
thể sử dụng HTML, JScript và VBScript. Qua các đoạn mã nhúng này, ASP có thể truy cập đến
các thành phần phía server. Các thành phần này có thể được viết trên bất kỳ ngôn ngữ nào hỗ trợ
các thành phần COM của Microsoft. Và đây chính là sức mạnh của ASP: Nó có thể làm được bất
kỳ cái gì mà máy chủ có thể làm được với các thành phần COM. Sau khi được thi hành, ASP sẽ
sản sinh ra một trang Web có khuôn dạng HTML và trả nó về cho Web server.
Một bất lợi lớn đối với ASP là nó chỉ có thể hoạt động trên các họ Web server của Microsoft (bao
gồm PWS trên Win9x hay IIS trên WinNT/2000/XP). Các nhà phát triển đang hướng đến những
môi trường khác như Unix/Linux (hiện đã có bản Chili! ASP chạy trên các môi trường này), nhưng
kết quả thì còn phải đợi thêm một thời gian nữa
Trước khi đi vào tìm hiểu lịch sử của PHP, có lẽ chúng ta cũng phải nhắc đến một tên tuổi khác là
Java Server Pages. hay JSP. Giống như ASP, trang JSP cho phép chứa HTML, các đoạn mã Java
và các thành phần Java Bean và chúng sẽ thực hiện các công việc để sản sinh ra một trang Web
để gửi về Client. Bất lợi chính của loại này là phải đi kèm với "máy ảo Java", vốn không được coi
là nhanh về mặt tốc độ.
Lịch sử PHP
PHP - viết tắt của PHP Hypertext Preprocessor - một định nghĩa đệ quy khó hiểu!
Vào khoảng năm 1994, Rasmus Lerdorf đưa một số đoạn Perl Script vào trang Web để theo dõi
xem ai đang đọc tài liệu của ông ta. Dần dần, người ta bắt đầu thích các đoạn Script này và sau đó
đã xuất bản một gói công cụ có tên là "Personal Home Pages" (nghĩa đầu tiên của PHP). Ông ta

đã viết một cơ chế nhúng và kết hợp với một số công cụ khác để phân tích đầu vào từ các mẫu
biểu HTML: FI, Form Interpreter hay Phiên dịch mẫu biểu, được tạo ra theo cách đó và được đặt
tên là PHP/FI hay PHP2. Nó được hoàn thành vào khoảng giữa năm 1995.
Sau đó, người ta bắt đầu sử dụng các công cụ này để xây dựng những thứ rắc rối hơn, và đội ngũ
phát triển đã thay đổi từ một người duy nhất thành một nhóm các nhà phát triển nòng cốt trong dự
án, và nó đã được tổ chức hoá. Đó là sự bắt đầu của PHP3. Đội ngũ các nhà phát triển (Rasmus
Lerdorf, Andi Gutmans, Zeev Suraski, Stig Bakken, Shane Caraveo và Jim Winstead) đã cải tiến và
mở rộng bộ máy nhúng và bổ sung thêm một số hàm API đơn giản cho phép các lập trình viên
khác tự do bổ sung nhiều tính năng vào ngôn ngữ bằng cách viết các module cho nó. Cấu trúc của
ngôn ngữ đã được tinh chế, được kết cấu thân thiện hơn đối với những người đến từ các ngôn
ngữ hướng đối tượng hay các ngôn ngữ hướng thủ tục. Nếu bạn đã biết một vài ngôn ngữ lập
trình khác thì khi đến với PHP, bạn sẽ không cảm thấy khó khăn.
Phiên bản mới nhất cho đến thời điểm này là PHP 5.0.1. Các bạn có thể tham khảo chi tiết tại
trang web PHP: Hypertext Preprocessor.
Bài 4: Xây dựng một chương trình PHP đơn giản (Hello World)
Bắt đầu với Hello, world
I. Khởi đầu
Nếu các bạn đã từng học lập trình, chắc các bạn cũng biết được "Hello, world" là cái gì, còn nếu
bạn nào chưa biết, thì tôi sẽ giải thích ngay đây:
"Hello, world" là một chương trình dành cho những người mới bắt đầu học một ngôn ngữ lập trình
nào đó. Chương trình này đơn giản chỉ viết duy nhất một dòng chữ "Hello, world" ra màn hình. Các
bạn có thể bỏ qua nó nếu đã biết từ trước, còn nếu bạn nào chưa học, thì chúng ta bắt tay vào viết
chương trình này bằng PHP nhé.
Hãy mở NotePad ra, gõ vào nội dung sau:
Code:
<HTML>
<BODY>
<?php
echo ("hello, world");
?>

</BODY>
</HTML>
OK, Save lại với cái tên test.php. Copy nó vào thư mục gốc (Root Directory) mặc định của Web
server. Khởi động Web server Apache lên (nó sẽ hiển thị một cửa sổ đen ngòm, bạn cứ để đó,
đừng tắt nó đi, vì nếu tắt đi thì tức là bạn đã tắt chương trình Web server Apache đi rồi đấy).
Bây giờ mở trình duyệt ra, tại ô địa chỉ, gõ nội dung sau: "http://127.0.0.1/test.php" (nhớ bỏ hai dấu
ngoặc kép đi nhé)
Nó sẽ hiển thị ra cửa sổ trình duyệt với duy nhất dòng chữ hello, world
Chắc bạn thất vọng lắm hả? Vâng, nó chỉ có mỗi dòng chữ "hello, world" trên màn hình trình duyệt,
mà bạn có thể làm nó đơn giản hơn rất nhiều, chẳng cần đến cái PHP kia. OK. Đừng thất vọng
vội.
Chương trình này hoạt động như thế nào? Trước tiên chúng ta hãy tìm hiểu cách thức hoạt động
của hệ trình duyệt (Web Client) và máy chủ cung cấp dịch vụ Web (Web server ) đã nhé:
Bước 1: Trình duyệt gửi một yêu cầu HTTP đến máy chủ, yêu cầu một file nào đó
Bước 2: Máy chủ sẽ chuyển yêu cầu này đến chương trình xử lý tương ứng, chính là chương trình
Web server.
Bước 3: Web server phân tích chuỗi yêu cầu nhận được, kiểm tra xem trình duyệt ở máy khách
yêu cầu gì. Nếu đó là các file bình thường (không phải là các file chứa các đoạn mã script thực thi
phía máy chủ), nó sẽ tìm kiếm file đó và trả về cho trình duyệt ở máy khách. Còn nếu đó là các file
chứa các đoạn mã script thực thi phía máy chủ (các chương trình CGI, hay các file thư viện liên
kết động ISAPI, hoặc các file *.asp hay *.php), nó sẽ triệu gọi chương trình thực thi các đoạn mã
này. Chương trình này sẽ chịu trách nhiệm chạy các đoạn mã, trả chúng về cho Web server dưới
khuôn dạng của HTML. Sau đó, Web server mới trả kết quả lấy được cho trình duyệt.
Như vậy, chương trình của bạn phải được thực thi trên máy chủ, sau đó mới được trả về cho trình
duyêt. Và đây chính là cái gọi là "Trang Web động". Không như các trang web tĩnh, trang web động
cho phép bạn có sự tương tác với máy chủ thông qua các đoạn script thực thi phía server. Nhờ có
sự tương tác này, bạn có thể truy xuất cơ sở dữ liệu, lấy thông tin người sử dụng, điều khiển các
hoạt động khác...
OK. Bây giờ chắc bạn đã có được chút ít kiến thức với các hệ thống điều khiển Web Client -
Server rồi. Đến lượt chúng ta bắt đầu phân tích chương trình đầu tiên kia.

II. Phân tích chương trình
Quay trở về đoạn mã trên:
Code:
<HTML>
<BODY>
<?php
echo ("hello, world");
?>
</BODY>
</HTML>
Điều đầu tiên các bạn cần phải biết, đó là các đoạn mã thực thi PHP luôn luôn được đặt trong thẻ
<?php .... ?>. Chương trình xử lý phía máy chủ sẽ chỉ thực thi các đoạn mã nằm trong thẻ này. Tất
cả các đoạn mã khác nằm ngoài thẻ trên đều không được xử lý trực tiếp trên server mà được đưa
về trình duyệt.
<?php
// Đoạn mã PHP đặt ở đây
?>
Điều thứ 2 bạn cần biết là chương trình của bạn phải được đặt trong các file *.php. Nếu bạn đặt nó
vào file khác, thì đừng mong nó chạy nhé, vì nguyên tắc của chương trình Web server là chỉ triệu
gọi các chương trình xử lý tương ứng với các file có đuôi xác định trước.
Điều thứ 3 bạn cần biết là trong file *.php của bạn, ngoài các đoạn script PHP, bạn có thể đặt bất
kỳ cái gì theo khuôn dạng HTML, kể cả các đoạn JavaScript chạy trên máy khách. Tức là ngoại trừ
các đoạn script PHP ra thì nó không khác gì một file HTML thông thường
Điều thứ 4 các bạn cần biết, là chúng ta có thể đặt nhiều đoạn mã xử lý PHP khác nhau trong
cùng một file PHP. Các đoạn mã PHP này sẽ được thực thi lần lượt từ đầu file xuống dưới. Hãy
xem ví dụ sau:
Code:
<HTML>
<BODY>
<?php

echo ("hello, world");
?>
<BR>
Xin chao tat ca cac ban, day la chuong trinh PHP dau tien cua toi
<?php
echo ("<p align=right> CMXQ </p>")
?>
</BODY>
</HTML>
Khởi đầu, chương trình xử lý phía Web server sẽ phân tích file PHP này, trả về đoạn mã
<HTML>
<BODY>
Tiếp theo, khi thấy đoạn mã thứ nhất, nó sẽ thực thi và trả về dòng "hello, world" (Dòng này do
hàm echo() của PHP thực hiện). Sau đó, nó tiếp tục trả về các dòng
<BR>
Xin chao tat ca cac ban, day la chuong trinh PHP dau tien cua toi
Đến khi gặp đoạn PHP thứ 2, nó sẽ thực thực thi đoạn mã thứ 2 này (gọi hàm echo()) và trả về kết
quả:
"<p align=right> CMXQ </p>"
Hết đoạn mã thứ 2. Nó sẽ gửi tiếp phần còn lại của file về cho Web server. Sau đó, Web server
chính thức trả toàn bộ kết quả về cho trình duyệt.
Điều quan trọng cuối cùng: Kết thúc mỗi câu lệnh của PHP đều là một dấu chấm phẩy (";"), ngoại
trừ một vài trường hợp (các bạn sẽ được biết sau này)
Bây giờ tôi xin giải thích cách sử dụng hàm duy nhất trong bài này: echo()
Hàm echo được sử dụng để trả về nội dung của các biến, hằng, chuỗi... cho trình duyệt. Ở ví dụ
trên, hàm echo trả về chuỗi "hello, world" và chuỗi "<p align=right> Le Nguyen Sinh </p>". Các thẻ
HTML trong chuỗi sẽ được giữ nguyên khi nó được đưa về trình duyệt, và nó sẽ được xử lý như
các thẻ HTML khác.
III. Một số lưu ý
Dấu chú thích:

Các đoạn chú thích rất hữu dụng trong các chương trình của bạn (chẳng hạn muốn chú thích câu
lệnh này làm gì, đoạn chương trình này làm gì...). Khi phân tích mã PHP, các đoạn chú thích sẽ bị
bỏ qua, nhưng một lập trình viên thì không bao giờ bỏ qua chúng
Chúng ta có thể sử dụng một số dấu chú thích sau trong PHP:
// dòng văn bản chú thích (chỉ áp dụng trên một dòng)
/* Đoạn văn bản chú thích */ (nằm trong cặp /* và */
Lưu ý rằng các dấu chú thích này chỉ có hiệu lực trong các đoạn mã nhúng PHP thôi đấy nhé
Ví dụ
<?php
echo("Tôi là một oan hồn vô danh"); // Hiển thị lời giới thiệu lên màn hình
echo (" Sơ yếu lý lịch");
/* Hiển thị bản sơ yếu lý lịch
Copyright © by CMXQ
*/
echo ("Tên đầy đủ: XXXXXXX");
echo ("Ngày sinh: XXXX");
?>
Ký tự giải phóng
Hãy chú ý đến dòng chữ sau:
My name's "CMXQ"
Để in nó ra màn hình, chắc các bạn sẽ làm như sau:
<?php
echo("My name's ""CMXQ"");
?>
Rất tiếc là bạn đã nhầm. PHP có quy định một số ký tự đặc biệt (Dấu ngoặc kép (") là một trong
các ký tự đó). Một vài phiên bản của web server khi gặp lỗi này đã không thực hiện nữa, và thông
báo lỗi đến người dùng. Còn trong một vài phiên bản khác, nó sẽ tự động chèn một dấu sượt chéo
(/) trước ký tự gây lỗi này. Một dấu gạch chéo (\) trước ký tự gây lỗi khiến cho nó được đối xử như
là một ký tự thông thường, không phải là ký tự đặc biệt. Ký tự này (\) được gọi là ký tự giải phóng
(Escaping character).

Đoạn mã đúng như sau:
<?php
echo ("My name's: \"CMXQ\"");
?>
Dưới đây là một số các ký tự đặc biệt mà có thể được chỉ rõ với ký tự giải phóng gạch chéo
Ký tự nối tiếp Nghĩa
\' Dấu móc lửng (')
\" Dấu móc kép (")
\\ Dấu gạch chéo (\)
\$ Dấu $
\n Ký tự tạo dòng mới
\r Ký tự về đầu dòng
\t Ký tự Tab
Hãy xem ví dụ dưới đây (yêu cầu bạn tự tìm hiểu và phân tích mã nguồn)
<?php
$name="Tiến Tùng";
echo("Giá trị của biến \$name là $name);
Bài 5: Các kiểu dữ liệu cơ bản, hằng, biến trong PHP
1. Hằng và biến
Nếu các bạn chưa từng học lập trình, chắc các bạn đang còn xa lạ với hằng và biến. OK, No Star
where
- Giống như trong toán học, một hằng số xác định một giá trị duy nhất thông qua tên của hằng số,
trong Tin học cũng vậy. Môt hằng số xác định một giá trị duy nhất trong toàn bộ chương trình.
Người ta có thể sử dụng giá trị này thông qua tên của hằng số đó trong chương trình
- Tương tự đối với biến. Một biến trong lập trình được sử dụng để lưu trữ một giá trị nào đó thông
qua tên biến. Sở dĩ người ta gọi nó là biến, vì không như hằng số (giữ nguyên giá trị trong toàn bộ
quá trình chạy chương trình), người ta có thể thay đổi giá trị của biến số thông qua các phép gán.
Để tạo điều kiện dễ dàng trong quá trình phân tích dữ liệu, PHP quy định bất kỳ từ nào có dấu $ ở
trước đều là tên của biến. Ví dụ:
$ten xác định một biến có tên là ten

$custome_name: xác định một biến có tên là $custome_name
Bạn cần biết rằng tên biến là một chuỗi các ký tự chỉ bao gồm các chữ số, chữ cái (a..z) và dấu
gạch dưới ( _ ). Và PHP quy định phân biệt các biến chữ hoa và chữ thường là khác nhau. CHẳng
hạn $ab và $Ab là 2 biến hoàn toàn khác nhau. Một điểm cần lưu ý khác là không được đặt tên
biến bắt đầu bằng các chữ số (0.. 9)
Do quy định các chuỗi ký tự có chứa dấu $ ở trước là một tên biến, nên PHP tự động khởi gán giá
trị của các biến này là rỗng (đối với kiểu dữ liệu văn bản) hoặc 0 đối với kiểu dữ liệu số. Bạn sẽ
được biết đến các kiểu dữ liệu sau này.
Để gán giá trị cho các biến, bạn sử dụng câu lệnh gán như sau:
$tên_biến = giá trị cần gán;
Ví dụ:
$nam_sinh=1980;
$ho_ten="CMXQ";
Các bạn chú ý đến 2 ví dụ tôi nhập dữ liệu: một cái thì nằm trong cặp dấu ngoặc kép chỉ thị biến
đó chứa dữ liệu theo kiểu xâu, còn một cái thì không nằm trong cặp dấu ngoặc kép chỉ thị biến đó
chứa dữ liệu kiểu số. Bạn sẽ biết chi tiết hơn ở ngay sau đây:
2. Các kiểu dữ liệu trong PHP
PHP có 3 kiểu dữ liệu cơ bản: Integer, double và string. Ngoài ra còn một số kiểu dữ liệu khác,
đượ xây dựng dựa trên các kiểu dữ liệu cơ bản trên, như mảng, object, mà chúng ta sẽ đề cập
đến sau. Tất cả các biến đều được chỉ định kiểu dữ liệu, và như chúng ta đã nói ở trên, giá trị của
chúng có thể bị thay đổi trong quá trình sử dụng.
Kiểu giá trị Integer sử dụng 4 byte của bộ nhớ. Đây là kiểu giá trị nguyên (không phải là số thực)
và có giá trị nằm trong khoảng từ -2 tỷ đến 2 tỷ. Kiểu dữ liệu double là kiểu dữ liệu số thực, cho
phép chứa các số thưc. Kiểu String được sử dụng để chứa các dữ liệu như là các ký tự văn bản,
ký tự đặc biệt và các chữ số. Dữ liệu kiểu string được đặt trong cặp dấu ngoặc kép ("") chỉ định
một xâu (hay còn gọi là chuỗi ký tự).
Ví dụ:
2: Kiểu integer;
2.0: kiểu double
"2": Kiểu xâu

"2 gio": Kiểu xâu
3.Định nghĩa hằng
Hàm define() được sử dụng để tạo một hằng số:
Hàm này có cấu trúc sau:
define ("tên_hằng","giá trị của hằng");
Ví dụ:
define ("COMPANY","NS Co.Ltd");// Định nghĩa hằng COMPANY với giá trị là "NS Co Ltd"
define ("diem_so",4.5);// định nghĩa hằng diem_so với giá trị là 4.5 (hic... thi lại );
Sau khi một hằng số được tạo ra, ta có thể sử dụng chúng thay cho giá trị của chúng:
echo ("Tên công ty: ".COMPANY);
Điều này tương đương với echo ("Tên công ty: NS Co Ltd");
4. Một số hằng xây dựng sẵn (built in constant)
PHP có chứa một số hằng được xây dựng sẵn. TRUE và FALSE là 2 hằng đã được dựng sẵn với
chỉ định true (1) và false (=0 hoặc một xâu rỗng)
Hằng số PHP_VERSION chỉ định phiên bản của bộ phân tích PHP mà bạn đang dùng hiện tại.
Hằng PHP_OS chỉ định hệ điều hành server mà trình phân tích PHP đang chạy.
echo (PHP_OS); // in ra màn hình "Linux" (ví dụ)
_FILE_and_LINE_ trả về tên của đoạn script (đoạn mã nhúng) đang được phân tích tại dòng hiện
thời trong đoạn mã script.
PHP còn cung cấp một số hàm để thông báo lỗi như E_ERROR, E_WARNING, E_PARSE và
E_NOTICE.
Ngoài ra, PHP còn cung cấp một số biến cung cấp thông tin về môi trường PHP đang sử dụng. Để
xem các thông tin này,bạn có thể dùng hàm phpinfo() như sau:
<HTML>
<!-- phpinfo.php-->
<BODY>
<?php
phpinfo();
?>
</BODY>

</HTML
5. Lừa kiểu và ép kiểu dữ liệu
Như chúng ta đã biết, tất cả các biến PHP đều có kiểu dữ liệu riêng. Kiểu dữ liệu của biến sẽ
được tự động xác định bởi giá trị đặt vào biến
$a=1 // $a là kiểu integer
$a=1.2 // Bây giờ, nó là kiểu double
$a="1" // Và bây giờ nó là kiểu string
a) Chuyển kiểu chuỗi và lừa kiểu dữ liệu
Nếu bạn làm các thao tác tính toán số trên một chuỗi, PHP sẽ tính toán chuỗi như là một số. Điều
này được biết đến với cái tên gọi là "chuyển kiểu chuối (String conversion), mặc dù giá trị chuỗi
của nó có thể không cần phải thay đổi. Trong đoạn ví dụ sau, biến $str được xác định là một chuỗi:
$str="756300 không có";
Nếu chúng ta cố cộng thêm một giá trị nguyên là 3 vào biến $str, biến $str sẽ tự động tính với số
nguyên 756300:
$x=4+$str;//$x =756304
Nhưng bản thân giá trị của biến $str không thay đổi
echo ($str); // In ra màn hình chuỗi "756300 không có"
Chuyển kiểu chuỗi phải tuân theo 2 nguyên tắc sau:
- Chỉ những chuỗi bắt đầ là một xâu các chữ số. Nếu chuỗi bắt đầu bằng một giá trị số hợp lệ,
chuỗi này sẽ được xác định như giá trị của nó, trong trường hợp khác, nó sẽ trả về 0. VD: chuỗi
"35 tuổi" sẽ được ước lượng là 35, nhưng chuỗi "tuổi 35" sẽ chỉ xác định giá trị 0.
- Một chuỗi sẽ chỉ được xác định như là một giá trị kiểu double nếu giá trị kiểu double được miêu
tả bao gồm toàn bộ chuỗi. Chuỗi "3.4", "-4.2" sẽ được ước lượng như giá trị thực 3.4 và -4.2. Nếu
một ký tự không phải là ký tự kiểu số thực được đưa vào chuỗi, giá trị của chuỗi đó sẽ được ước
lượng như là một số nguyên. Chuỗi "3.4 dollar" sẽ thành số nguyên 3.
Trong việc cộng với chuỗi chuyển kiểu, PHP sẽ thực hiện "lừa kiểu" giữa 2 kiểu số. Nếu bạn thực
hiện một phép toán số học giữa kiểu thực và kiểu nguyên, giá trị sẽ là số thực
$a=1 //$ a là một số nguyên
$b= 1.0 //$b là số thực
$c=$a+$b //$c là kiểu số thực , = 2.0

$d = $c+"6th" //$d là kiểu số thực = 8.0
Ép kiểu dữ liệu
Ép kiểu dữ liệu cho phép bạn thay đổi kiểu dữ liệu của biến
$a=11.2// $a là kiểu thực
$a=(int)$a// Bây giờ, $ a là kiểu nguyên, giá trị = 11
$a= (double) $a// Bây giờ $a lại trở về kiểu thực = 11.0
$b= (string)$a// $b là giá trị kiểu chuỗi ="11"
Ngoài ra, chúng ta còn được phép ép kiểu (array) và (object)
(integer) tương đương với (int); (fload) và (real) tương đương với (double)
6. Một số hàm tiện ích khác
PHP có một số hàm hỗ trợ làm việc với các biến
- Hàm gettype($ten_bien) xác định kiểu của biến. Nó sẽ trả về một trong các giá trị: "integer",
"double", "string", "array", "object", "class", "unknown type" (Chúng ta sẽ tìm hiểu kỹ hơn vể mảng
(array) và kiểu đối tượng (object) ở các bài sau.
Ví dụ:
echo(gettype($name));
- Hàm settype($ten_bien,"kieu_du_lieu") sẽ đặt kiểu dữ liệu cho biến $ten_bien. Kiểu dữ liệu được
viết dưới dạng một chuỗi, và có thể có một trong các kiểu sau: "integer", "double", "string", "array",
"object". Nếu kiểu dữ liệu không được đặt, giá trị false sẽ được trả về, còn nếu thành công, nó sẽ
trả về giá trị true.
VD:
$a=7.5; //$a là kiểu thực
settype($a,"integer"); // bây giờ nó là một số nguyên có giá trị 7
- Hàm isset($ten_bien) được sử dụng để xác định xem biến $ten_bien đã đặt một giá trị nào đó
hay chưa. Nếu biến đó đã có giá trị, hàm trả về true. Trong truờng hợp ngược lại, hàm trả về giá trị
false;
- Hàm unset($ten_bien) được sử dụng để huỷ bỏ biến $ten_bien, giải phóng bộ nhớ bị chiếm dụng
của biến đó
Căn bản về HTML
Căn bản về HTML

Căn bản về HTML
HTML: HyperText Markup Language. Đây là một ngôn ngữ đơn giản được sử dụng trong các tài
liệu siêu văn bản. Đừng choáng. Nó cũng chỉ là các tài liệu văn bản bình thường nhưng có chứa
các thành phần đặc biệt gọi là các thẻ (hoặc các cặp thẻ) đánh dấu. Dựa theo các cặp thẻ này mà
trình duyệt có thể biết được nó phải thực hiện cái gì. Bản chất của HTML không phải là một ngôn
ngữ lập trình nên các bạn cũng chẳng cần lo lắng đến những thuật toán lằng nhằng. Nó chỉ là một
"ngôn ngữ" để đánh dấu văn bản thôi.
Ví dụ đơn giản:
Hãy lấy một ví dụ đơn giản như sau:
HTML Code:
<B>Xin chào, tôi là LGVT</B>
Các bạn chú ý: dòng chữ Xin chào, tôi là LGVT được đặt trong cặp chữ
"<B>" và "</B>" Cặp chữ này chính là ký hiệu của một cặp thẻ trong ngôn
ngữ HTML, mà khi biên dịch ra, trình duyệt sẽ hiểu là: Khi gặp thẻ
"<B>", nó phải có trách nhiệm in tất cả các chữ sau đó thành chữ đậm cho
đến khi gặp thẻ "</B>".
Các bạn có thể hiểu các thẻ trong HTML như là các từ khoá trong Pascal vậy. Cũng đừng nên lo
lắng quá, vì bản thân HTML chỉ có khoảng hơn 20 thẻ thông dụng thôi.
Trong HTML, các thẻ có thể tồn tại đơn lẻ, hoặc tồn tại dưới dạng một cặp thẻ. Nếu tồn tại dưới
dạng 1 cặp thì thẻ bắt đầu gọi là thẻ mở và thẻ kết thúc gọi là thẻ đóng. Các bạn có thể hình dung
thẻ mở như từ khoá Begin và thẻ đóng như từ khoá End trong khối câu lệnh của Pascal vậy.
VD: Thẻ <img> là 1 thẻ đơn (không có thẻ đóng), có nhiệm vụ thông báo cho trình duyệt hiển thị
một hình ảnh nào đó.
Cặp thẻ <font></font> là 1 cặp thẻ, bắt đầu bằng thẻ <font> và kết thúc bằng thẻ </font>. Cặp thẻ
này quy định font chữ, màu chữ, kích cỡ chữ của đoạn văn bản nằm giữa.
Để soạn thảo một file HTML, các bạn có thể sử dụng bất kỳ trình soạn thảo nào, chẳng hạn như
NotePad hay thậm chí Turbo Pascal cũng được. miễn là sau đó các bạn Save As dưới dạng đuôi
*.htm. Còn để mở file này thì cứ việc kích đúp chuột vào đó, trình duyệt sẽ tự động mở ra cho bạn.
Tất nhiên cũng có nhiều chương trình soạn thảo cho phép sinh tự động mã HTML, nhưng để cho
các bạn nắm vững ngôn ngữ này, tôi yêu cầu các bạn phải tự soạn bằng tay trên NotePad. Các ví

dụ dưới đây mang tính chất tham khảo, các bạn có thể copy và lưu chúng dưới dạng file .htm.
Cấu trúc của 1 thẻ trong HTML bao gồm:
- Dấu "<". Nếu là thẻ đóng thì sẽ bắt đầu bằng "</"
- Tên thẻ
- Các tham số khác nếu có. Nếu là thẻ đóng thì không cần tham số.
- Dấu ">".
Cấu trúc của một file HTML có dạng:
HTML Code:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
phần thân tài liệu
</BODY>
</HTML>
Toàn bộ nội dung chính của trang HTML được đặt trong cặp thẻ
<BODY></BODY>
Các thẻ xử lý đoạn văn bản Bây giờ chúng ta lần lượt đi qua các cặp thẻ hay sử dụng nhất. Xin
nói thêm: thẻ có cấu trúc: <tên_thẻ thuộc_tính1="gia_tri1" thuộc_tính2="gia_tri2">. Tất nhiên các
bạn có thể bỏ một số thuộc tính đi (lúc đó, các thuộc tính bị bỏ đi sẽ được đặt ngầm định bởi trình
duyệt, rất khó chịu)
1. Các thẻ xử lý đoạn
a). Thẻ phân chia đoạn
Trong HTML, các đoạn tài liệu, văn bản, hình ảnh… được phân chia bằng cặp thẻ <P>văn
bản</P>
Thẻ <P> có 1 số thuộc tính sau:
Align: Thuộc tính này sẽ chứa 1 trong 3 giá trị:
- center: Đoạn tài liệu sẽ được canh chỉnh vào giữa
- left: Đoạn tài liệu sẽ được canh chỉnh theo lề trái

- right: Đoạn tài liệu sẽ được canh chỉnh theo lề phải
- justify: Đoạn tài liệu sẽ được canh chỉnh theo hai bên
Ví dụ:
HTML Code:
<HTML>
<BODY>
<p align ="justify"> Thử một tí</p>
</BODY>
</HTML>
Style: Thuộc tính này sẽ quy định khoảng cách lề của đoạn. Trong thuộc tính này lại có các thuộc
tính con, tuy nhiên các thuộc tính con này được đặt cách nhau bằng dấu chấm phẩy. Tất nhiên các
bạn cũng có thể loại bỏ thuộc tính con:
- margin-left : x (x là số nguyên chỉ định chiều rộng của lề trái)
- margin-right : y (y là số nguyên chỉ định chiều rộng của lề phải)
- margin-top: z (z là số nguyên chỉ định chiều rộng của lề trên)
- margin-bottom: t(t là số nguyên chỉ định chiều rộng của lề dưới)
- line-height: u% (u: khoảng cách giữa các dòng tính theo đơn vị 100 %)
Ví dụ:
HTML Code:
<HTML>
<BODY>
<p align ="center" style ="margin-left: 10; margin-right: 5; margin-top:
6; margin-bottom: 6"> Thử hai tí. Tí thứ 2 này xác định đoạn văn bản căn
giữa, có lề trái = 10, lề phải bằng 5, lề trên = 6, lề dưới = 6. Hết tí
thứ 2.</p>
<p align ="left" > Thử ba tí. Tí thứ 3 này xác định đoạn văn bản căn
trái, các lề đặt theo mặc định của trình duyệt</p>
<p align ="left" style="line-height: 150%" > Thử ba tí. Tí thứ 3 này xác
định đoạn văn bản căn trái, các lề đặt theo mặc định của trình duyệt</p>
</BODY>

</HTML>
b. Thẻ xuống dòng
Trong HTML, các ký tự xuống dòng không được sử dụng. Để ngắt một dòng nào đó, ta dùng thẻ
<BR>. Đây là 1 thẻ đơn:
HTML Code:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<p align="left" style="margin-left : 30">
Trung thu là tết thiếu nhi<BR>Tại sao người lớn lại đi chơi nhiều
<BR>Chơi nhiều thì sẽ làm liều<BR>Làm liều lại đẻ ra nhiều thiếu
nhi<BR></p>
</BODY>
</HTML>
Chú ý:
Một cặp thẻ khác cũng được sử dụng để canh chỉnh đoạn tài liệu hay bảng biểu:
- <center>…</center>: Xác định canh chỉnh một đoạn tài liệu hoặc bảng biểu vào giữa trang.
Được chỉnh sửa lần cuối cùng bởi thangtong : 11-26-2009 vào lúc 11:19 PM
các thẻ định dạng của html
Các thẻ xử lý font chữ:
a. Thẻ Meta:
Thẻ này có nhiều thuộc tính khác nhau và cũng làm nhiều nhiệm vụ khác nhau. Tuy nhiên ở đây tôi
chỉ nói về cách ứng dụng thẻ này để hiển thị các đoạn mã tiếng Việt.
Trước đây các loại font chữ tiếng Việt rất phong phú, điều này khiến cho người sử dụng tiếng Việt
trên thế giới phải than trời ầm ỹ cả lên. Rất may là tại thời điểm này, hầu hết các font chữ tiếng
Việt thời "đồ đá" không còn được ứng dụng trong thiết kế web nữa, thay vào đó là các chuẩn quốc
tế Unicode.
Ở đây tôi xin giới thiệu 2 chuẩn Unicode tiếng Việt phổ biến và cách sử dụng thẻ meta cho từng

trường hợp cụ thể:
- Mã UTF-8: Là mã font Unicode rút gọn (biểu diễn font chữ theo kiểu 8 bit. Khi ta khai báo:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Trình duyệt sẽ hiểu là từ khi đọc được dòng chữ này, nó sẽ giải mã các ký tự theo kiểu UTF-8. Và
khi bạn gửi dữ liệu từ mẫu biểu của HTML đi, dữ liệu đó cũng phải được mã hoá theo tiêu chuẩn
UTF-8.
Chẳng hạn, để trình duyệt hiển thị đúng bài thơ:
Trung thu là tết thiếu nhi
Tại sao người lớn lại đi chơi nhiều
Chơi nhiều thì sẽ làm liều
Làm liều lại đẻ ra nhiều thiếu nhi.
Thì đoạn mã HTML do ta sinh ra phải có dạng:
<HTML>
<BODY>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<p align="left" style="margin-left : 30">
<img src ="bigreen.gif">
Trung thu là tết thiếu nhi<BR>Tại sao ngưỦi lớn lại đi chơi nhiỦu <BR>Chơi
nhiỦu thà sẽ là m liỦu<BR>Là m liỦu lại đẻ ra nhiỦu thiếu nhi.<BR></p>
</BODY>
</HTML>
Tất nhiên chúng ta có thể sử dụng chương trình Vietkey hoặc Unikey để gõ tiếng việt theo kiểu
UTF-8 (sử dụng bảng mã Unicode UTF-8), nhưng sẽ hơi khó chịu một tí .
- Mã UTF-16 bít: Là mã font Unicode 16 bít. Ta phải khai báo như sau:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
Trình duyệt sẽ hiểu là từ khi đọc được dòng chữ này, nó sẽ giải mã các ký tự theo kiểu UTF-16 bit.
Và khi bạn gửi dữ liệu từ mẫu biểu của HTML đi, dữ liệu đó cũng phải được mã hoá theo tiêu
chuẩn UTF- 16 bít trên.
Chẳng hạn, để trình duyệt hiển thị đúng bài thơ:
Trung thu là tết thiếu nhi

Tại sao người lớn lại đi chơi nhiều
Chơi nhiều thì sẽ làm liều
Làm liều lại đẻ ra nhiều thiếu nhi.
Thì đoạn mã HTML do ta sinh ra phải có dạng:
<HTML>
<BODY>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<p align="left" style="margin-left : 30">
<img src ="bigreen.gif">
Trung thu l#224; t#7871;t thi#7871;u nhi<BR>T#7841;i sao ng#432;#7901;i l#7899;n l#7841;i
#273;i ch#417;i nhi#7873;u.<BR>Ch#417;i nhi#7873;u th#236; s#7869; l#224;m
li#7873;u<BR>L#224;m li#7873;u l#7841;i #273;#7867; ra nhi#7873;u thi#7871;u nhi<BR></p>
</BODY>
</HTML>
Tất nhiên chúng ta có thể sử dụng chương trình Vietkey hoặc Unikey để gõ tiếng Việt theo chuẩn
này với hệ thống bảng mã Unicode UCS2
Chú ý:
1: Một số chương trình soạn thảo có hỗ trợ chế độ hiển thị mã tiếng Việt trong quá trình soạn thảo.
Khi đó nếu các bạn mở chế độ mã HTML mà vẫn đọc được tiếng Việt như thường thì các bạn cứ
ung dung gõ tiếng Việt theo kiểu Unicode thông thường là được. Còn nếu nó hiển thị ra các ký tự
loằng ngoằng thì các bạn phải đoán mò ra dạng chuẩn mã hoá font của nó và sử dụng chế độ gõ
chữ tương ứng.
2: Trong tài liệu này tôi sẽ đánh tiếng Việt thông thường, các bạn sẽ phải chịu trách nhiệm xử lý
mã tiếng Việt trong các đoạn ví dụ.
b) Cặp thẻ <font>…</font>
Cặp thẻ này quy định tên font, màu sắc, kích cỡ font. Nó có những thuộc tính sau:
Face: Tên của font, chẳng hạn: Arial, .VnTime, Times New Roman
Size: Kích cỡ của font, bé nhất là 1.
Color: Màu sắc cùa font, bao gồm dấu # và 6 chữ số hex tiếp theo quy định mã màu RGB
Ví dụ:

<HTML>
<BODY>
<p align ="center"><font face="Arial" size="5" color="#800000">Tết trung thu</font></p>
<p align="left" style="margin-left : 30"><font size ="2" name ="Verdana">
Trung thu là tết thiếu nhi<BR>Tại sao người lớn lại đi chơi nhiều <BR>Chơi nhiều thì sẽ làm
liều<BR>Làm liều lại đẻ ra nhiều thiếu nhi<BR></font></p>
</body></html>
c. Các thẻ định dạng chữ nghiêng, đậm, gạch chân:
- Định dang chữ đậm:
Cặp thẻ <B>…</B> xác định đoạn văn bản ở giữa sẽ bị in đậm. Cặp thẻ này không có tham số
kèm theo.
- Định dang chữ nghiêng:
Cặp thẻ <i>…</i> xác định đoạn văn bản ở giữa sẽ bị in nghiêng. Cặp thẻ này không có tham số
kèm theo.
- Định dang chữ gạch chân:
Cặp thẻ <u>…</u> xác định đoạn văn bản ở giữa sẽ bị gạch chân. Cặp thẻ này không có tham số
kèm theo.
Ví dụ:
<HTML>
<BODY>
<p align ="center"><font face="Arial" size="5" color="#800000"><B><I>Tết trung
thu</font></I></B></p>
<p align="left" style="margin-left : 30"><font size ="2" name ="Verdana">
Trung thu là tết thiếu nhi<BR>Tại sao người lớn lại đi chơi nhiều <BR>Chơi nhiều thì sẽ làm
liều<BR>Làm liều lại đẻ ra nhiều thiếu nhi<BR></font></p>
</body></html>
Các thẻ xử lý đoạn
a). Thẻ phân chia đoạn
Trong HTML, các đoạn tài liệu, văn bản, hình ảnh… được phân chia bằng cặp thẻ <P>văn
bản</P>

Thẻ <P> có 1 số thuộc tính sau:
Align: Thuộc tính này sẽ chứa 1 trong 3 giá trị:
- center: Đoạn tài liệu sẽ được canh chỉnh vào giữa
- left: Đoạn tài liệu sẽ được canh chỉnh theo lề trái
- right: Đoạn tài liệu sẽ được canh chỉnh theo lề phải
- justify: Đoạn tài liệu sẽ được canh chỉnh theo hai bên
Ví dụ:
<HTML>
<BODY>
<p align ="justify"> Thử một tí</p>
</BODY>
</HTML>
Style: Thuộc tính này sẽ quy định khoảng cách lề của đoạn. Trong thuộc tính này lại có các thuộc
tính con, tuy nhiên các thuộc tính con này được đặt cách nhau bằng dấu chấm phẩy. Tất nhiên các
bạn cũng có thể loại bỏ thuộc tính con:
- margin-left : x (x là số nguyên chỉ định chiều rộng của lề trái)
- margin-right : y (y là số nguyên chỉ định chiều rộng của lề phải)
- margin-top: z (z là số nguyên chỉ định chiều rộng của lề trên)
- margin-bottom: t(t là số nguyên chỉ định chiều rộng của lề dưới)
- line-height: u% (u: khoảng cách giữa các dòng tính theo đơn vị 100 %)
Ví dụ:
<HTML>
<BODY>
<p align ="center" style ="margin-left: 10; margin-right: 5; margin-top: 6; margin-bottom: 6"> Thử hai
tí. Tí thứ 2 này xác định đoạn văn bản căn giữa, có lề trái = 10, lề phải bằng 5, lề trên = 6, lề dưới
= 6. Hết tí thứ 2.</p>
<p align ="left" > Thử ba tí. Tí thứ 3 này xác định đoạn văn bản căn trái, các lề đặt theo mặc định
của trình duyệt</p>
<p align ="left" style="line-height: 150%" > Thử ba tí. Tí thứ 3 này xác định đoạn văn bản căn trái,
các lề đặt theo mặc định của trình duyệt</p>

</BODY>
</HTML>
. Thẻ xuống dòng
Trong HTML, các ký tự xuống dòng không được sử dụng. Để ngắt một dòng nào đó, ta dùng thẻ
<BR>. Đây là 1 thẻ đơn:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<p align="left" style="margin-left : 30">
Trung thu là tết thiếu nhi<BR>Tại sao người lớn lại đi chơi nhiều <BR>Chơi nhiều thì sẽ làm
liều<BR>Làm liều lại đẻ ra nhiều thiếu nhi<BR></p>
</BODY>
</HTML>
Chú ý:
Một cặp thẻ khác cũng được sử dụng để canh chỉnh đoạn tài liệu hay bảng biểu:
- <center>…</center>: Xác định canh chỉnh một đoạn tài liệu hoặc bảng biểu vào giữa trang.
Các thẻ liên kết và xử lý bảng
Các thẻ liên kết:
a. Thẻ liên kết với hình ảnh:
Trong HTML, chúng ta không thể chèn trực tiếp toàn bộ ruột gan của một file hình ảnh, mà ta phải
chỉ dẫn đến hình ảnh đặt bên ngoài. Để làm điều này, ta dùng thẻ <img>. Đây là 1 thẻ đơn.
Thẻ này có một số thuộc tính sau:
- Src: Xác định địa chỉ URL của hình ảnh:
- align: Xác định kiểu canh lề:
- right: Canh theo lề phải
- left:Canh theo lề trái
- center:Canh theo lề giữa.
<HTML>

<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<p align="left" style="margin-left : 30">
<img src ="bigreen.gif" align = "right">
Trung thu là tết thiếu nhi<BR>Tại sao người lớn lại đi chơi nhiều <BR>Chơi nhiều thì sẽ làm
liều<BR>Làm liều lại đẻ ra nhiều thiếu nhi<BR></p>
</BODY>
</HTML>
- border: Xác định chiều dày của viền bao quanh ảnh.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<p align="left" style="margin-left : 30">
<img src ="bigreen.gif" border ="5">
Trung thu là tết thiếu nhi<BR>Tại sao người lớn lại đi chơi nhiều <BR>Chơi nhiều thì sẽ làm
liều<BR>Làm liều lại đẻ ra nhiều thiếu nhi<BR></p>
</BODY>
</HTML>
b. Thẻ liên kết trang web.
Để tạo một liên kết tới một trang web khác, ta dùng cặp thẻ <a></a>. Cặp thẻ này có các thuộc
tính sau:
Href: Địa chỉ URL của trang web cần liên kết tới. bạn đã có một bookmark trên trang web, bạn có
thể trỏ đến vị trí của bookmark bằng cách dùng thuộc tính href với dấu # và tên bookmark.
name: Xác định tên của bookmark (điểm liên kết trong nội tại trang web).
Ví dụ, ta có 2 trang web:
Trang thứ nhất có địa chỉ là "tettrungthu.htm", có nội dung sau:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<p align="left" style="margin-left : 30">
<img src ="bigreen.gif" border ="5">
Trung thu là tết thiếu nhi<BR>Tại sao người lớn lại đi chơi nhiều <BR>Chơi nhiều thì sẽ làm
liều<BR>Làm liều lại đẻ ra nhiều thiếu nhi<BR></p>
</BODY>
</HTML>
Trang thứ 2 có tên là danhsachthovui.htm, có nội dung sau:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<p align="left" style="margin-left : 30">
Tet trung thu
</p>
</BODY>
</HTML>
Giả sử ta muốn thêm một liên kết với file "tettrungthu.htm" vào chữ Tet trung thu trong file
danhsachthovui.htm, ta phải chèn cặp thẻ <a>...</a> như sau:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<p align="left" style="margin-left : 30">

<a href ="tettrungthu.htm">Tet trung thu</a>
</p>
</BODY>
</HTML>
Chú ý: cả 2 file này phải được đặt cùng thư mục. Trong trường hợp đặt khác thư mục các bạn
phải ghi rõ đường dẫn đến file kia.
Các cặp thẻ xử lý bảng:
Các bảng trong HTML được định nghĩa như sau:
Định nghĩa 1 bảng bởi cặp thẻ <table></table>
Trong 1 bảng (table) được chia làm nhiều dòng , mỗi dòng giới hạn bởi 1 cặp thẻ <tr></tr>.
Trong mỗi dòng lại có các ô , giới hạn bởi cặp thẻ <td></td>
Chẳng hạn để định nghĩa 1 bảng gồm có 1 dòng và 3 ô, ta làm như sau:
<table>
<tr>
<td>Ô thứ nhất</td>
<td>Ô thứ 2</td>
<td>Ô thứ 3</td>
</tr>
</table>
Hoặc để định nghĩa một bảng gồm 2 dòng, mỗi dòng 3 ô:
<table>
<tr>
<td>Ô thứ nhất dòng 1</td>
<td>Ô thứ 2 dòng 1</td>
<td>Ô thứ 3 dòng 1</td>
</tr>
<tr>
<td>Ô thứ nhất dòng 2</td>
<td>Ô thứ 2 dòng 2</td>
<td>Ô thứ 3 dòng 2</td>

</tr>
</table>
Chú ý: Số lượng các ô trong các dòng phải bằng nhau, nếu 1 dòng nào đó có số ô khác với dòng
khác, bảng sẽ bị "vỡ kế hoạch". Để khắc phục điều này, ta phải tính trước trong 1 bảng, số lượng
tối đa các ô của 1 dòng sẽ là bao nhiêu, sau đó có thể dùng thuộc tính colspan của thẻ <td> để
gộp các ô trống trong cùng 1 hàng lại với nhau.
Thuộc tính colspan sẽ chỉ định số lượng các ô được gộp vào nhau trên một hàng.
Chẳng hạn:
<table>
<tr>
<td colspan = "2" >Chập ô thứ nhất và ô thứ 2 của dòng 1</td>
<td>Ô thứ 3 dòng 1</td>
</tr>
<tr>
<td>Ô thứ nhất dòng 2</td>
<td>Ô thứ 2 dòng 2</td>
<td>Ô thứ 3 dòng 2</td>
</tr>
</table>
Một số thuộc tính có liên quan:
Thẻ Table:
- border: Xác định độ dày của khung bao quanh bảng
- bordercolor: Màu của khung bao quanh, viết dưới dạng dấu # và 6 chữ số HEX tiếp theo.
- cellspacing: Xác định khoảng cách giữa các ô trong bảng.
- width: Xác định độ rộng của bảng
- background: Xác định hình ảnh sẽ được sử dụng để làm nền cho toàn bảng
- bgcolor: Xác định màu nền của bảng, viết theo kiểu #XXXXXX (số HEX).
Thẻ <td>
- width: Độ rộng của ô
- height: Chiều cao của ô

- colspan: Xác định bao nhiêu ô tính từ ô đó sẽ được chập vào làm 1 (trên cùng 1 dòng)
- rowspan: Xác định bao nhiêu ô tính từ ô đó sẽ được chập vào làm 1 (trên cùng 1 cột).
- background: Xác định hình ảnh sẽ được sử dụng để làm nền cho ô
- bgcolor: Xác định màu nền ô, viết theo kiểu #XXXXXX (số HEX).
Xử lý biểu mẫu(Form)
Cách sử dụng mẫu biểu trong HTML:
Một mẫu biểu (form) trong HTML bao gồm nhiều thành phần khác nhau. Các thành phần có thể là
ô văn bản, ô kéo thả, ô danh sách, nút bấm, hay các ô check ...
Mẫu biểu được bắt đầu bằng thẻ <form> và kết thúc bởi thẻ </form>. Giữa 2 cặp thẻ này, các bạn
có thể sử dụng các cặp thẻ HTML khác.
Thẻ form có một số thuộc tính sau:
- method
Thuộc tính này có 2 giá trị POST hoặc GET, để xác định dữ liệu gửi lên theo kiểu POST hay GET.
Kiểu GET chính là kiểu mà khi nhập dữ liệu lên máy chủ, các dữ liệu này sẽ được hiển thị trên ô
Address dưới dạng các căp tên=giá_tri. Nhược điểm của kiểu này là toàn bộ cái URL và xâu
tên=giá_trị kia sẽ bị giới hạn dưới 255 ký tự (do đặc điểm của trình duyệt). Vì vậy để có thể gửi
nhiều dữ liệu hơn, người ta đã sinh ra kiểu POST. Với kiểu này, dữ liệu sẽ không bị giới hạn chiều
dài 255 ký tự của chuỗi địa chỉ do không bị gộp vào chuỗi địa chỉ. Kiểu POST cũng thường dùng
để truyền các dữ liệu nhạy cảm mà người sử dụng không muốn hiển thị trên ô Address (password
chẳng hạn).
Ví dụ:
<form method = "post"> Thử một tí
</form>
- action: Thuộc tính này sẽ chỉ định form gửi dữ liệu đến trang nào. Trong trường hợp thuộc tính
này không được khai báo, form sẽ gửi thẳng dữ liệu và yêu cầu về chính trang hiện hành (sau đó
trình duyệt sẽ tải lại nội dung mới).
Ví dụ:
<form method = "post" action ="thu2ti.php"> Thử hai tí
</form>
Tuy nhiên, 2 ví dụ trên chưa có ý nghĩa gì, vì chúng ta chưa trang bị các thành phần cơ bản của

form như ô văn bản, nút bấm...
Các thẻ nhập vào (input)
Thẻ input có một số thuộc tính, mỗi thuộc tính sẽ quy định những chức năng riêng:
- name: Chỉ định tên cho thẻ. Tên này sẽ được gửi lên máy chủ cùng giá trị nhập vào cho thẻ.
- Value: Xác định giá trị đặt trước cho thẻ.
- type:
Thuộc tính này có một số giá trị sau:
* submit: Sẽ xác định một nút bấm (submit) mà khi kích chuột vào đó, form sẽ tự động kích hoạt và
gửi dữ liệu đi
* text: Hiển thị một ô văn bản cho phép người sử dụng nhập văn bản
* password: Hiển thị ô văn bản để nhập password.
* hidden: Tạo một biến ẩn, ta có thể dùng nó để lưu trữ các dữ liệu "ẩn" khỏi người dùng, tất nhiên
nếu họ biết View source lên thì chịu.
Ví dụ: đoạn mã sau sinh ra một form có 1 ô văn bản, một ô nhập mật khẩu và 1 nút bấm:
<form method="POST">
<p>
User Name:<input type="text" name="T1" size="20"> </p>
<p>
Password:
<input type="password" name="T2" size="20"><input type="submit" value="Login"
name="B1"></p>
</form>
Thẻ tạo hộp chọn xổ xuống:
Danh sách sổ xuống là một ô danh sách cho phép bạn kích chọn 1 mục trong danh sách sẵn có.
Để tạo một hộp chọn sổ xuống, ta phải sử dụng 2 thẻ: Thẻ Select và thẻ Option như sau:
<Select name =xxx>
<option value = gia_trí1>nội dung 1</option>
<option value = gia_trí2>nội dung 2</option>
<option value = gia_trí3>nội dung 3</option>
.....

<option value = gia_trín>nội dung n</option>
</select>
Trong đó:
Thẻ Select với thuộc tính name sẽ xác định tên của hộp danh sách sổ xuống.
Các thẻ option xác định giá trị của tên biến trong thẻ select nếu được chọn. Giá trị sẽ được gán
vào biến nằm trong thuộc tính value của thẻ option.
Ví dụ:
<form method="POST">
<p>
User Name:<input type="text" name="T1" size="20"> </p>
<p>
Password:
<input type="password" name="T2" size="20"><input type="submit" value="Login"
name="B1"></p>
<p>Sex: <Select name ="sex">
<option value =1>Male </option>
<option value =0>Female </option>
</select>
</p>
</form>
Khi người dùng kích chọn Male, giá trị 1 sẽ được chuyển vào biến sex (được định nghĩa trong thẻ
Select>).
Các thẻ lựa chọn radio:
Các thẻ này sẽ cho phép hiển thị ra một danh sách các nút tròn, mà chúng ta sẽ chỉ được phép
kích chọn 1 trong các nút đó.
Để hiển thị các nút radio này, các bạn có thể dùng thẻ input với type là radio. Một nhóm các nút
radio này sẽ được thiết lập nếu như thuộc tính name của chúng trùng nhau:
<input type="radio" value="" name="R1">
Ví dụ dưới đây mô phỏng dòng chọn kiểu gõ (telex, VNI) trên diễn đàn:
<input type=radio name="switcher" value="OFF" >Tắt

<input type=radio name="switcher" checked value="TELEX" >Telex
<input type=radio name="switcher" value="VNI"> VNI
Thẻ nhập khối văn bản
Thẻ input với thuộc tính type = text chỉ cho phép ta hiển thị ra một ô văn bản nhỏ (hiện được 1
dòng). Để hiện ra một ô soạn thảo lớn, có thể hiển thị nhiều dòng đồng thời, ta phải dùng thẻ
textarea:
<textarea name =xxx>Giá trị mặc định của khối văn bản </textarea>
Còn một số cặp thẻ khác, nhưng ít nhất thì tôi cũng không nhớ ra tại thời điểm này. Các bạn có thể
vào FrontPage, sau đó sử dụng menu Insert/Form để chèn các thành phần này vào, sau đó các
bạn có thể vào xem và thay đổi các thuộc cơ bản của chúng. Còn bây giờ, chúng ta quay lại với
việc lấy dữ liệu của PHP:
Để lấy các biến theo kiểu POST, PHP sẽ tự động sinh ra mảng có tên là $HTTP_POST_VARS[].
Mảng này có chỉ số chính là tên của các phần tử trong form và giá trị là nội dung giá trị do người
sử dụng nhập vào các phần tử có tên tương ứng. Chẳng hạn với mẫu biểu sau:
<form method="POST">
<p>
User Name:<input type="text" name="T1" size="20"> </p>
<p>
Password:
<input type="password" name="T2" size="20"></p>
<p>Sex: <Select name ="sex">
<option value =1>Male </option>
<option value =0>Female </option>
</select>
</p>
<input type="submit" value="Gui di" name="B1">
</form>
Bài 2: Cài đặt hệ thống (Web server Apache, CSDL MySQL, PHP)
Cài đăt web server Apache, MySQL và PHP.
1. Cài đặt giao thức TCP/IP

Các dịch vụ web server dựa trên nền giao thức TCP/IP. Vì vậy trước khi cài đặt server, ta phải tiến
hành cài đặt giao thức TCP/IP.
Để cài đặt giao thức TCP/IP, ta vào Control Panel, chọn Network. Nếu thấy dòng chữ TCP/IP đã
xuất hiện trong ô Configuration, tức là giao thức TCP/IP đã được cài đặt trên máy. Còn nếu không,
ta kích chuột vào Add. Hộp thoại Select Component hiển thị ra. Kích chọn tiếp Protocol -> Add.
Trong danh sách bên trái, chọn Microsoft. Sau đó sang danh sách bên phải, chọn TCP/IP. Bấm
Enter để bắt đầu quá trình cài đặt.
Trong quá trình cài đặt, nếu máy tính của bạn chưa có card mạng thì hệ thống sẽ yêu cầu cài một
trình điều khiển card mạng nào đó. Đừng lo, cứ chọn đại theo chỉ dẫn sẽ xong thôi.
Sau khi cài đặt xong, mở cửa sổ Command Prompt ra. Gõ lệnh
C:\ping 127.0.0.1
Nếu thấy có 4 dòng chữ có dạng:
Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx
Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx
Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx
Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx
tức là giao thức TCP/IP đã được cài đặt thành công.
Ghi chú: Dãy số 127.0.0.1 chính là địa chỉ IP mặc định của chính máy tính bạn đang sử dụng. Bạn
cũng có thể sử dụng cái tên localhost thay cho địa chỉ IP 127.0.0.1 để truy cập vào máy tính của
chính mình.
2. Cài đặt web server, PHP, MySQL:
Công cụ cài đặt ở đây được tôi lựa chọn là XAMPP - Bộ công cụ cài đặt trọn gói bao gồm Web
server Apache, bộ xử lý PHP, và CSDL My SQL. Các bạn có thể tham khảo chi tiết phần mềm tại:
]apache friends - very easy apache, mysql, php and perl installation
without hassles.
Trước khi cài đặt và vận hành hệ thống, hãy ngắt toàn bộ các website mặc định của IIS/PWS, và
tắt luôn dịch vụ nếu các bạn đã từng cài các webserver này. Nếu các bạn đang chạy Apache và
MySQL thì cũng gỡ bỏ (uninstall) đi.
Các bạn tiến hành cài đặt XAMPP vào một thư mục nào đó (chẳng hạn ở đây tôi chọn là
c:\xampp).

Sau khi cài đặt xong, các bạn đã có thể vận hành Apache, PHP và MySQL.
Để vận hành hệ thống, các bạn vào thư mục của hệ thống (c:\xampp theo ví dụ trên), chạy file
xampp-control.exe. Tiếp đó start các dịch vụ Apache và MySQL lên. Nếu quá trình khởi động thành
công, khi gõ địa chỉ http://localhost hoặc http://127.0.0.1 vào trình duyệt thì sẽ hiển thị trang chủ
XAMPP.
3. Một số thông tin về hệ thống:
- Thư mục tài liệu: Là thư mục gốc của Apache. Mọi địa chỉ URL gửi lên server sẽ được phân tích
thành đường dẫn tương ứng với đường dẫn của thư mục gốc ảo trên. Theo mặc định, thư mục
này được lưu trong thư mục cài đặt XAMPP với tên là htdocs (VD trên máy của tôi là
C:\xampp\htdocs
- Thư mục dữ liệu của MySQL: Nằm trong thư mục /mysql/data. Trong thư mục này, MySQL sẽ
lưu trữ các CSDL (Database) dưới dạng các thư mục, mỗi bảng trong CSDL được ghi trong một
file riêng biệt.
- Để thao tác với CSDL MySQL, các bạn có thể mở trình duyệt và vào trang
http://localhost/phpmyadmin/ . Chữ Localhost đã được giải thích ở trên.
__________________
Bài 3: Lịch sử các ngôn ngữ lập trình web động (đọc thêm)
Lịch sử phát triển các ứng dụng trên Web server. ASP, JSP và PHP
Vài năm trước đây, con đường thực sự duy nhất để vận chuyển các dữ liệu động tới trang Web là
kỹ thuật CGI (Common Gateway Interface). Các chương trình CGI cung cấp một sự liên hệ đơn
giản để tạo các ứng dụng Web cho phép tiếp nhận các dữ liệu nhập vào, các yêu cầu truy vấn cơ
sở dữ liệu từ phía người dùng và trả một vài kết quả về cho trình duyệt. Các chương trình CGI có
thể được viết trên một vài ngôn ngữ, trong đó phổ biến nhất là Perl. Web server sử dụng CGI như
là một cổng truy cập chặn giữa yêu cầu của người dùng và dữ liệu được yêu cầu. Nó sẽ được nạp
vào bộ nhớ như một chương trình bình thường. Thông thường các web server sẽ chuyển các yêu
cầu và triệu gọi chương trình CGI. Sau khi chương trình kết thúc, web server sẽ đọc dữ liệu trả về
từ chương trình và gửi nó đến trình duyệt.
Nhược điểm lớn nhất của kỹ thuật CGI là nó hoạt động kém hiệu quả. Mỗi khi web server nhận
một yêu cầu, một tuyến trình mới được tạo ra. Mỗi tuyến trình lại chứa trong nó các đoạn mã lệnh,
dữ liệu… và không được chia sẻ lẫn nhau, do đó gây ra lãng phí bộ nhớ. Để khắc phục nhược

điểm này, Microsoft và Netscape đã hợp tác và đưa ra một cải tiến đáng kể là chuyển chúng về
dạng các file thư viện liên kết động (DLL ), cho phép chia sẻ mã lệnh giữa các tuyến trình. Đây
chính là các kỹ thuật ISAPI và NSAPI.
Đen đủi thay, các kỹ thuật dựa trên DLL không phải là đã hoàn thiện. Chúng vẫn còn một số vấn
đề:
- Khi các thư viện nền tảng được gọi, nếu muốn thoát các ứng dụng này, ta phải tắt chương trình
triệu gọi (Web server) và khởi động lại máy tính.
- Các thư viện cần được đặt trong các tuyến trình bảo vệ, tức là chúng cần phải được cảnh giác
về cách sử dụng các biến chung hoặc các biến tĩnh.
- Nếu chương trình triệu gọi gây ra lỗi truy cập, nó có thể dẫn đến tình trạng server bị treo tắc tử.
- Và cuối cùng: khi đã được dịch ra các file DLL, công việc gỡ lỗi cũng như bảo trì mã lệnh trở nên
vất vả hơn bao giờ hết.
Kỹ thuật Web mới nhất của Microsoft, kết hợp HTML, các đoạn Script, các thành phần xử lý phía
server trong cùng một file, được gọi là ASP (Active Server Pages), với phiên bản mới nhất hiện
nay là ASP.Net. ASP được triệu gọi bởi một thư viện liên kết động gắn với các Web server của
Microsoft. Về bản chất, ta có thể coi ASP như là một ngôn ngữ thông dịch vậy. Một trang ASP có
thể sử dụng HTML, JScript và VBScript. Qua các đoạn mã nhúng này, ASP có thể truy cập đến
các thành phần phía server. Các thành phần này có thể được viết trên bất kỳ ngôn ngữ nào hỗ trợ
các thành phần COM của Microsoft. Và đây chính là sức mạnh của ASP: Nó có thể làm được bất
kỳ cái gì mà máy chủ có thể làm được với các thành phần COM. Sau khi được thi hành, ASP sẽ
sản sinh ra một trang Web có khuôn dạng HTML và trả nó về cho Web server.
Một bất lợi lớn đối với ASP là nó chỉ có thể hoạt động trên các họ Web server của Microsoft (bao
gồm PWS trên Win9x hay IIS trên WinNT/2000/XP). Các nhà phát triển đang hướng đến những
môi trường khác như Unix/Linux (hiện đã có bản Chili! ASP chạy trên các môi trường này), nhưng
kết quả thì còn phải đợi thêm một thời gian nữa
Trước khi đi vào tìm hiểu lịch sử của PHP, có lẽ chúng ta cũng phải nhắc đến một tên tuổi khác là
Java Server Pages. hay JSP. Giống như ASP, trang JSP cho phép chứa HTML, các đoạn mã Java
và các thành phần Java Bean và chúng sẽ thực hiện các công việc để sản sinh ra một trang Web
để gửi về Client. Bất lợi chính của loại này là phải đi kèm với "máy ảo Java", vốn không được coi
là nhanh về mặt tốc độ.

Lịch sử PHP
PHP - viết tắt của PHP Hypertext Preprocessor - một định nghĩa đệ quy khó hiểu!
Vào khoảng năm 1994, Rasmus Lerdorf đưa một số đoạn Perl Script vào trang Web để theo dõi
xem ai đang đọc tài liệu của ông ta. Dần dần, người ta bắt đầu thích các đoạn Script này và sau đó
đã xuất bản một gói công cụ có tên là "Personal Home Pages" (nghĩa đầu tiên của PHP). Ông ta
đã viết một cơ chế nhúng và kết hợp với một số công cụ khác để phân tích đầu vào từ các mẫu
biểu HTML: FI, Form Interpreter hay Phiên dịch mẫu biểu, được tạo ra theo cách đó và được đặt
tên là PHP/FI hay PHP2. Nó được hoàn thành vào khoảng giữa năm 1995.
Sau đó, người ta bắt đầu sử dụng các công cụ này để xây dựng những thứ rắc rối hơn, và đội ngũ
phát triển đã thay đổi từ một người duy nhất thành một nhóm các nhà phát triển nòng cốt trong dự
án, và nó đã được tổ chức hoá. Đó là sự bắt đầu của PHP3. Đội ngũ các nhà phát triển (Rasmus
Lerdorf, Andi Gutmans, Zeev Suraski, Stig Bakken, Shane Caraveo và Jim Winstead) đã cải tiến và
mở rộng bộ máy nhúng và bổ sung thêm một số hàm API đơn giản cho phép các lập trình viên
khác tự do bổ sung nhiều tính năng vào ngôn ngữ bằng cách viết các module cho nó. Cấu trúc của
ngôn ngữ đã được tinh chế, được kết cấu thân thiện hơn đối với những người đến từ các ngôn
ngữ hướng đối tượng hay các ngôn ngữ hướng thủ tục. Nếu bạn đã biết một vài ngôn ngữ lập
trình khác thì khi đến với PHP, bạn sẽ không cảm thấy khó khăn.
Phiên bản mới nhất cho đến thời điểm này là PHP 5.0.1. Các bạn có thể tham khảo chi tiết tại
trang web PHP: Hypertext Preprocessor.
__________________
Bài 4: Xây dựng một chương trình PHP đơn giản (Hello World)
Bắt đầu với Hello, world
I. Khởi đầu
Nếu các bạn đã từng học lập trình, chắc các bạn cũng biết được "Hello, world" là cái gì, còn nếu
bạn nào chưa biết, thì tôi sẽ giải thích ngay đây:
"Hello, world" là một chương trình dành cho những người mới bắt đầu học một ngôn ngữ lập trình
nào đó. Chương trình này đơn giản chỉ viết duy nhất một dòng chữ "Hello, world" ra màn hình. Các
bạn có thể bỏ qua nó nếu đã biết từ trước, còn nếu bạn nào chưa học, thì chúng ta bắt tay vào viết
chương trình này bằng PHP nhé.
Hãy mở NotePad ra, gõ vào nội dung sau:

Code:
<HTML>
<BODY>
<?php

×