Dowload giáo trình thiết kế website
Phần I: Căn bản về PHP
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.
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
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 :p. 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 đã
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 ) 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
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.
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 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:
(xem: http://thuvienit.org/forum/forum_posts.asp?TID=1765)
3. Một số thông tin về hệ thống:
- Thư mục gốc ảo: Là thư mục www của hệ thống. Đây 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.
- 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 phpMyAdmin .
- Để xem các thông tin của hệ thống, các bạn mở trang phpinfo.php
Bài 3: Lịch sử phát triển các ứng dụng trên Web server: ASP, JSP và PHP
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