Mỗi người sử dụng có thể nhận được nội dung khác nhau phụ thuộc vào kết quả chạy chương trình.
 Trang web viết bằng HTML + Ngôn ngữ lập trình phía server. Có thể được thay đổi bởi người sử dụng
 Khả năng tương tác mạnh
                
              
                                            
                                
            
                       
            
                 35 trang
35 trang | 
Chia sẻ: haohao89 | Lượt xem: 2857 | Lượt tải: 2 
              
            Bạn đang xem trước 20 trang tài liệu Bài giảng Apache và MYSQL và PHP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Apache & MySQL & PHP
Nguyễn Quang Trung
Nội dung
 Lập trình Web tĩnh và Web ñộng
 Cài ñặt Apache
 MySQL
 Ngôn ngữ PHP
Web tĩnh và web ñộng
Trang web tĩnh
 Mọi người sử dụng nhận ñược kết quả
giống nhau.
 Trang web ñược viết bằng HTML, chỉ 
thay ñổi khi có sự thay ñổi của người 
xây dựng
 Khả năng tương tác yếu
 Webserver hoạt ñộng giống 1 file 
server.
Web 
ServerURL yêu cầu
URL yêu cầu
HTML
HTML
Client
Network
Trang web ñộng
 Mỗi người sử dụng có thể nhận ñược nội dung 
khác nhau phụ thuộc vào kết quả chạy chương 
trình.
 Trang web viết bằng HTML + Ngôn ngữ lập 
trình phía server. Có thể ñược thay ñổi bởi 
người sử dụng
 Khả năng tương tác mạnh
Web 
Server
URL yêu cầu
URL yêu cầu
HTML
HTML
Client
Network Biên dịch,
Thực thi Trang web ñộng
Một số công nghệ viết web ñộng
 Động phía client:
– JavaScript, VBScript ñược chạy ở client. 
– Applet
– Flash
 Động phía server:
– CGI: Common Gateway Interface
– Java Server Pages
– ASP, ASP.NET: Microsoft
• Viết bằng VBScript, JavaScript chạy phía server. 
• Sử dụng web server IIS.
– PHP: Mã nguồn mở
• Ngôn ngữ lập trình PHP, chạy phía server.
• Webserver: Apache, IIS
• Bộ biên dịch: PHP
– Perl
Cài ñặt và cấu hình các phần mềm
 Web server: Chọn 1 trong 2
– IIS (Internet Information Service) – tích hợp trong 
Win 2000, XP, 2003, Vista.
– Apache: 
 Biên dịch: PHP: 
 Hệ quản trị CSDL: MySQL www.mysql.com
 Hỗ trợ quản lý CSDL MySql
– MySql Control
– PHPMyAdmin (web)
– SQL Manager
– Navicat MySQL
 Hỗ trợ soạn thảo:
– PSpad, Ediplus
– Macromedia Dreamweaver
 Phần mềm khác:
– Bộ gõ: Unikey, Vietkey bản ñầy ñủ
– Adobe Photoshop
– Xara3D…
Cài ñặt Apache, PHP, MySQL
WampServer2.0.exe
Giới thiệu về Apache
 Là một WEB Server miễn phí ñược phát triển theo 
chuẩn mã nguồn mở.
 Apache chạy ñược trong cả hai môi trường Linux 
và Windows.
 Có thể download phiên bản mới nhất của Apache 
tại ñịa chỉ: 
 Các phiên bản 1.x và 2.x (mới nhất) khác nhau 
về kiến trúc. Chi tiết xin xem trong feature log.
Cài ñặt Apache 2.x (Windows)
 Để cài ñặt Apache trong Windows bằng chương trình cài ñặt 
tự ñộng, cần download chương trình này về từ website của 
Apache. Thông thường những chương trình dạng này sẽ
không hỗ trợ giao thức https.
 Quá trình cài ñặt sẽ tự ñộng sao chép tất cả các file cần 
thiết vào thư mục chỉ ñịnh.
 Có thể sử dụng chương trình quản lý ở mức dịch vụ ñể
start, stop, restart, reload Apache hoặc khởi ñộng bằng tay.
Trang PHP ñầu tiên
 Soạn thảo:
– Mở trình soạn thảo gõ nội dung dưới ñây
– Ghi lại với tên “CHAO.PHP” trong thư mục gốc của web (Nếu sử dụng 
Wamp thì thường là C:\Wamp\www)
Trang PHP dau tien
<?php
echo "Chào mừng các bạn ñến với PHP";
?>
Trang PHP dau tien
<?php
echo "Chào mừng các bạn ñến với PHP";
?>
Trang PHP ñầu tiên (tt)
 Thử nghiệm: Mở IE, gõ ñịa chỉ: 
Giới thiệu về MySQL
 Là một hệ quản trị cơ sở dữ liệu miễn phí ñược 
phát triển theo chuẩn mã nguồn mở.
 MySQL chạy ñược trong cả hai môi trường Linux 
và Windows.
 Có thể download phiên bản mới nhất của MySQL 
tại ñịa chỉ: 
 Các phiên bản 3.x, 4x và 5.x (mới nhất) khác 
nhau về kiến trúc. Chi tiết xin xem trong feature 
log.
Cài ñặt MySQL 5.x
 Download phiên bản mới nhất
RPM (.rpm)
Linux
Source code (.tar.gz)
MySQL
Program install (.msi)
Windows
Source code (.zip)
Giới thiệu về PHP
 Là một ngôn ngữ lập trình server-side miễn phí ñược phát 
triển theo chuẩn mã nguồn mở. PHP ra ñời từ sự viết tắt 
của cụm từ Personal Home Page. Nhưng hiện nay PHP ñược 
coi là sự chơi chữ của việc viết tắt ñệ quy cụm từ PHP: 
Hypertext Preprocessor.
 PHP chạy ñược trong cả hai môi trường Linux và Windows. 
Có thể download phiên bản mới nhất của PHP tại ñịa chỉ: 
 Các phiên bản 4x và 5.x (mới nhất) khác nhau về kiến trúc. 
Chi tiết xin xem trong feature log.
Ngôn ngữ lập trình PHP
 Là ngôn ngữ lập trình dạng server-side, vì vậy 
PHP ngoài các khả năng của một ngôn ngữ lập 
trình thuần túy còn có ñầy ñủ các chức năng cần 
thiết của một CGI chuẩn như: Lấy dữ liệu từ
form, sinh các trang web ñộng, gửi nhận cookie, 
hỗ trợ session, thao tác với biến của WEB Server.
 PHP cũng có hệ thống thư viện hàm ñồ sộ giúp 
cho các lập trình viên có nhiều lựa chọn trong 
việc sửa dụng PHP ñể kết nối với nhiều phần 
mềm khác nhau như: Oracle, MySQL, ODBC, 
LDAP, Mail (SMTP, POP3), COM, .Net…
Cú pháp cơ bản
 PHP mỗi khi thông dịch một file sẽ chỉ thi hành những khối 
lệnh nằm giữa 2 cặp thẻ 
 Mọi ký tự nằm ngoài các cặp thẻ trên ñều ñược giữ nguyên
và thêm vào trong luồng siêu văn bản trả về cho môi 
trường bên ngoài theo ñúng thứ tự ban ñầu.
 Nói chung, cú pháp trong PHP ñược thừa kế từ cú pháp của 
C, C++ và Perl. Tuy nhiên, cũng có một số kết hợp và thay 
ñổi từ các cú pháp gốc tạo ra nét ñặc thù riêng cho PHP.
Cú pháp cơ bản (tt)
 Để tạo ra các kết xuất trả về cho môi trường bên ngoài (trình 
duyệt) ta có thể sử dụng các cách sau:
– Viết kết xuất bên ngoài cặp thẻ 
– Dùng lệnh echo hoặc print
 Để tạo ra chú thích, có thể dùng cú pháp dạng C như sau:
– // Để chú thích dòng
– /* */ Để chú thích khối
 Lệnh của PHP kết thúc bởi dấu chấm phẩy (;) và có thể viết nhiều 
lệnh trên một dòng.
 Lưu ý không giống C, C++ trình thông dịch của PHP chỉ phân biệt 
hoa thường với tên biến, tên hằng. Còn tên hàm (có sẵn hoặc do 
người dùng ñịnh nghĩa) và từ khóa thì không phân biệt.
Biến
 Định nghĩa biến
– Biến trong PHP ñược bắt ñầu bởi ký tự $, sau ñó là tên biến 
ñược ñịnh nghĩa theo văn phạm sau:
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
– Tên biến có phân biệt hoa thường. Có thể gán giá trị vào biến 
mà không cần khai báo. Nhưng chỉ có thể truy cập nội dung 
biến ñã có giá trị.
– Để xác ñịnh biến tồn tại hay không có thể dùng hàm isset() và 
ñể hủy biến có thể dùng hàm unset()
– Để xác ñịnh kiểu hiện tại của biến có thể sử dụng hàm 
gettype(), var_dump() hoặc các hàm is_var_type().
Biến (tt)
 Phạm vi truy cập biến:
– Biến cục bộ hàm: Chỉ ñược sử dụng trong thân các hàm do 
người dùng ñịnh nghĩa
– Biến toàn cục: Được sử dụng bên ngoài thân các hàm do người 
dùng ñịnh nghĩa. Để truy cập ñược các biến này trong thân các 
hàm, cần phải dùng từ khóa global ñể khai báo hoặc thông qua 
biến mảng siêu toàn cục $GLOBALS.
– Biến siêu toàn cục: Là các biến ñược ñịnh nghĩa trước của PHP 
có thể ñược truy cập tại mọi nơi, mọi ngữ cảnh.
– Biến tĩnh: Được sử dụng như biến tĩnh trong C++. Biến tĩnh có
thể ñược ñịnh nghĩa trong hàm và lớp.
Biến (tt)
 Truy cập giá trị biến:
– Để truy cập giá trị biến chỉ cần dùng cú pháp $var_name. Biến 
kiểu mảng cần thêm cặp ký tự [ ] ñể truy cập vào giá trị các 
phần tử trong mảng.
– Tuy nhiên trong nhiều trường hợp phải sử dụng thêm cặp 
ngoặc nhọn { } hoặc ký tự & ñể có thể xác ñịnh chính xác tên 
biến cần truy cập
$a = ‘hello’; $b = ‘every’;
$c = &$b; $d = ‘b’;
echo “$a $bone.”; echo “$a ${b}one.”;
echo “$a {$c}one.”; echo “$a $$d”;
echo “$a {$$d}one.”;echo “$a ${$d}one.”;
Biến (tt)
 4.2.4 Biến bên ngoài PHP:
– Biến form: Được truy cập thông qua các biến mảng siêu toàn 
cục ñược ñịnh nghĩa trước là $_POST, $_GET, $_COOKIE, 
$_REQUEST, $_FILES. Nếu khai báo register_global ñược bật 
trong php.ini thì tự ñộng các biến có tên tương ứng cũng ñược 
tạo ra.
– Biến session: Được truy cập thông qua các biến mảng siêu 
toàn cục ñược ñịnh nghĩa trước là $_SESSION.
– Biến server: Được truy cập thông qua các biến mảng siêu toàn 
cục ñược ñịnh nghĩa trước là $_SERVER, $_ENV.
Kiểu dữ liệu
 PHP hỗ trợ nhiều kiểu dữ
liệu phổ thông như các 
ngôn ngữ lập trình khác 
(ñược liệt kê bên phải).
 Trên thực tế, PHP không 
ñịnh kiểu tuyệt ñối cho các 
biến mà tùy vào từng ngữ
cảnh, biến sẽ ñược quyết 
ñịnh là có kiểu nào tương 
ứng.
 Để ép kiểu có thể dùng cú
pháp như của C hoặc dùng 
hàm settype().
 Kiểu vô hướng
– boolean
– interger
– float
– string
 Kiểu có cấu trúc
– array
– object
 Kiểu ñặc biệt
– resource
– NULL
 …
Kiểu dữ liệu (tt)
 Kiểu boolean
– Tập xác ñịnh: { true, false }
– Toán tử liên quan:
 = == != === !=== && || and or xor (bool)
 Kiểu interger
– Tập giá trị: { (-231) … (231 – 1) }
Kiểu dữ liệu (tt)
 Kiểu interger
– Toán tử liên quan:
& | ^ ~ + - * / % ++ -- > 
&= |= ^= += -= *= /= %= >= (int)
 Kiểu float
– Tập xác ñịnh: { (-1,8 x 10308) … (1,8 x 10308) }
Kiểu dữ liệu (tt)
 Kiểu float
– Toán tử liên quan: Giống kiểu interger
 Kiểu string
– Cách xác ñịnh
• Đặt trong cặp nháy ñơn ‘ ’: Các ký tự giữa hai dấu nháy 
ñơn ñược xử lý như văn bản thuần túy, chỉ có duy nhất 1 
ký tự metacharacter có hiệu lực là ký tự \
• Đặt trong cặp nháy kép “ ”: Các ký tự giữa hai dấu nháy 
kép ñược tiền xử lý trước khi ñược coi như một xâu thực 
sự. 
Kiểu dữ liệu (tt)
 Kiểu string
– Toán tử liên quan: . .= [ ]
 Kiểu array
– Kiểu array là kiểu có cấu trúc rất mạnh của PHP, nó cho 
phép lập trình viên có thể truy cập vào các phần tử
trong mảng thông qua cơ chế chỉ số rất linh hoạt.
– Toán tử liên quan: +
– Ví dụ
$arr = array("test" => array(6 => 5, 13 => 9, "a" => 
42));
echo $arr["test"][6]; // 5
echo $arr["test"][13]; // 9
echo $arr["test"]["a"]; // 42
Hằng
 Được ñịnh nghĩa bởi cấu trúc define.
 Tên hằng phân biệt hoa thường.
 Phạm vi sử dụng giá trị của hằng là siêu toàn 
cục.
 Giá trị của hằng phải là kiểu vô hướng.
 Ví dụ
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
Cấu trúc ñiều khiển
 Rẽ nhánh với if … else
if ($a > $b) {
echo "a > b";
$a = $b;
} else {
echo "a <= b";
$b = $a;
}
if ($a > $b):
echo "a > b";
$a = $b;
else:
echo "a <= b";
$b = $a;
endif;
Cấu trúc ñiều khiển (tt)
 Rẽ nhánh với switch … case
switch ($a) {
case 0: 
echo "a = 0";
break;
case 1: 
echo "a = 1";
break;
}
switch ($a):
case 0:
echo "a = 0";
break;
case 1:
echo "a = 1";
break;
endswitch;
Cấu trúc ñiều khiển (tt)
Lặp với while & do … while
while ($i++ < 5) {
switch ($i) {
case 2:
echo "At 2"; break 1; /* Exit only switch. */
case 5:
echo "At 5"; break 2; /* Exit switch and while. 
*/
default:
break;
}
while (1) continue 2;
echo "This never gets.";
}
Cấu trúc ñiều khiển (tt)
Lặp với for & foreach
for ($i=1; $i<=10; $i++) print $i;
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
$value = $value * 2;
print $value;
}
$arr = array("one", "two", "three");
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value";
}
Hàm
 Khai báo hàm trong PHP gần giống như khai báo 
trong C. Hàm trong PHP cũng cho phép ñệ quy, 
lồng nhau. Tuy nhiên, cũng có một số ñiểm khác 
biệt:
– Định nghĩa hàm trong PHP thay kiểu trả về khi khai báo 
bằng từ khóa function.
– Tên hàm không phân biệt hoa thường khi gọi. Phạm vi 
truy cập là siêu toàn cục. 
 Tham số trong lời gọi hàm có thể có giá trị mặc 
ñịnh. Giá trị ñược truyền vào theo dạng ByVal, ñể
tham số ñược truyền vào theo dạng ByRef cần 
dùng ký tự &
Hàm (tt)
Ví dụ:
function foo() {
echo "In foo() ";
}
function bar($arg = '') {
echo "In bar(); argument: '$arg'";
}
function echoit($string) {
echo $string;
}
$func = 'foo'; $func(); // This calls foo()
$func = 'bar'; $func('test');// This calls bar()
$func = 'echoit';$func('test');// This calls echoit()
Kết nối với MySQL
$db = mysql_connect('Máy chủ','username', 
'pwd') or die(‘Không kết nối ñược với máy 
chủ');
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
mysql_select_db('CSDL', $db) or die('Không tìm 
thấy CSDL');
$sql = ‘Câu lệnh truy vấn SQL’; 
$rs = mysql_query($sql);
for ($i = 0; $i < mysql_num_rows($rs); $i++) {
$rc = mysql_fetch_array($rs);
echo $rc[‘Trường thứ nhất’];//Cột ñầu tiên
echo $rc[1];//Cột thứ hai
echo $rc[‘Trường thứ ba’];//Cột thứ 3
}