NGÔN NGỮ PHP

Giảng viên: Hoàng Văn Hiệp Bộ môn Kỹ thuật Máy tính Viện CNTT – ĐH Bách Khoa Hà Nội

 Tổng quan về ứng dụng web  Lập trình web với PHP  Kết nối cơ sở dữ liệu MySQL bằng PHP

NỘI DUNG BÀI GIẢNG

 Tổng quan về ứng dụng web  Lập trình web với PHP  Kết nối cơ sở dữ liệu MySQL bằng PHP

NỘI DUNG BÀI GIẢNG

 Các ứng dụng web chạy trên môi trƣờng web

TỔNG QUAN VỀ ỨNG DỤNG WEB

theo mô hình client / server.

 Môi trƣờng web bao gồm các web server và các trình duyệt (client) đƣợc kết nối với nhau

 Server chờ và nhận các yêu cầu từ các client.  Server xử lý yêu cầu tƣơng ứng rồi gửi kết quả

GIAO TIẾP GIỮA CLIENT VÀ SERVER

đến các client.

 Client hiển thị kết quả trả về tùy chƣơng trình

ứng dụng.

 Là các server đƣợc cài phần mềm web server.  Có nhiệm vụ chờ các yêu cầu, xử lý yêu cầu và gửi kết quả.

 Các phần mềm web server

thông dụng hiện nay  IIS  Apache

WEB SERVER

 Là các trình duyệt  Gửi yêu cầu đến server  Hiển thị kết quả trả về

WEB CLIENT

 Cho phép tƣơng tác với ngƣời sử dụng.  Kết nối với các hệ CSDL nhằm lƣu trữ, khai thác

thông tin hiệu quả.

 Kết nối với các hệ thống tài nguyên khác nhƣ âm

thanh, hình ảnh, video …

 Một số công nghệ web động đang đƣợc sử dụng hiện

nay  PHP  ASP  .NET  JSP

CÁC CÔNG NGHỆ WEB ĐỘNG

 Tổng quan về ứng dụng web  Lập trình web với PHP  Kết nối cơ sở dữ liệu MySQL bằng PHP

NỘI DUNG BÀI GIẢNG

 PHP là ngôn ngữ kịch bản phía server  Các kịch bản (lệnh) PHP đƣợc thực hiện trên

GIỚI THIỆU NGÔN NGỮ PHP

server trƣớc khi trả về cho trình duyệt

 PHP hỗ trợ nhiều hệ CSDL nhƣ MySQL, SQL

Server, Oracle, Infomix, Sybase …

 PHP chạy trên nhiều hệ điều hành khác nhau nhƣ

TẠI SAO LÀ PHP

Windows, UNIX, Linux, Symbian, …

 Tƣơng thích với các phần mềm web server nhƣ

Apache, IIS, …

 Là phần mềm mã nguồn mở, đƣợc cung cấp miễn

phí.

 Cài đặt web server Apache  Cài đặt PHP  Cài đặt MySQL

=> Cài đặt XAMPP

CÀI ĐẶT WEB SERVER

 Sử dụng công cụ cấu

CẤU HÌNH WEB SERVER

hình sẵn có của XAMPP  Cho phép bật tắt và cấu hình chi tiết các dịch vụ  Nội dung của các trang web đƣợc lƣu vào thƣ mục htdocs trong thƣ mục cài đặt xampp

SẴN SÀNG LẬP TRÌNH WEB

 PHP là ngôn ngữ kịch bản phía server  JavaScript là ngôn ngữ kịch bản phía client.  Kịch bản PHP đƣợc thực hiện trên server. Một

yêu cầu PHP luôn trả về client dƣới dạng HTML thuần túy.

 Kịch bản JavaScript đƣợc thực hiện trên client. Mã nguồn JavaScipt đƣợc đƣa về client rồi mới thực hiện.

SO SÁNH PHP VÀ JAVASCRIPT

 Một khối lệnh PHP bao giờ cũng đƣợc bắt đầu

CÚ PHÁP PHP CƠ BẢN

bằng

// các lệnh PHP ?>

 Một file PHP có thể chứa các lệnh PHP, các thẻ

HTML, các đoạn mã JavaScript.

Demo 2

VÍ DỤ

doan chu thich


Đoạn này viết bằng HTML.

 Biến luôn luôn đi sau ký tự $  Đặt tên biến theo quy tắc đặt tên giống nhƣ các

BIẾN TRONG PHP

ngôn ngữ khác.

 Không cần phải khai báo  Kiểu biến đƣợc xác định khi gán với giá trị tƣơng

ứng.

VÍ DỤ VỀ BIẾN

// bien kieu nguyen // bien kieu so thuc

"; echo $y; echo "
"; echo $s; echo "
"; ?>

 Luôn đặt trong dấu “” hoặc dấu „‟  Hiển thị một chuỗi, một số, … dùng lệnh echo

KIỂU XÂU KÝ TỰ

hoặc lệnh print của PHP

 Ghép các chuỗi với nhau sử dụng ký tự .  Một số hàm xử lý chuỗi

 strlen() độ dài chuỗi  strpos() tìm vị trí của chuỗi con.

 Lấy giá trị của biến chứ không phải là tên của

GIÁ TRỊ CỦA BIẾN TRONG CHUỖI

biến

String

VÍ DỤ - CHUỖI KÝ TỰ

"; echo "Độ dài chuỗi ký tự: " . strlen($s). "
"; echo "Nội dung: $s"; ?>

Phép toán

Ý nghĩa

+

cộng

-

trừ

*

nhân

/

chia

%

lấy phần dư

++

tăng

--

giảm

CÁC TOÁN TỬ - SỐ HỌC

Phép toán

Ý nghĩa

=

gán

+=

cộng rồi gán

-=

trừ rồi gán

*=

nhân rồi gán

/=

chia rồi gán

%=

lấy phần dư rồi gán

CÁC TOÁN TỬ - GÁN

Phép toán

Ý nghĩa

==

so sánh bằng

!=

khác

<

nhỏ hơn

>

lớn hơn

<=

nhỏ hơn hoặc bằng

>=

lớn hơn hoặc bằng

CÁC TOÁN TỬ - SO SÁNH

Phép toán

Ý nghĩa

&&

||

hoặc

!

đảo

CÁC TOÁN TỬ - LOGIC

BIỂU THỨC IF…ELSE…

 Cú pháp – dạng 1 if điều_kiện

lệnh thực hiện nếu điều kiện đúng

 Cú pháp – dạng 2 if điều_kiện

lệnh thực hiện nếu điều kiện đúng

else

lệnh thực hiện nếu điều kiện sai

BIỂU THỨC ĐIỀU KIỆN IF…ELSE…

 Cú pháp – dạng 3 if điều_kiện_1

lệnh thực hiện nếu điều kiện 1 đúng

elseif điều_kiện_2

lệnh thực hiện nếu điều kiện 2 đúng

else lệnh thực hiện nếu điều kiện 2 sai

VÍ DỤ - IF

if statement

 Cú pháp switch (biểu_thức) { case giá_trị_1:

lệnh thực hiện nếu biểu_thức = giá_trị_1; break;

case giá_trị_2:

lệnh thực hiện nếu biểu_thức = giá_trị_2; break; default:

lệnh thực hiện nếu biểu_thức khác các giá_trị_1 và giá_trị_2;

}

BIỂU THỨC LỰA CHỌN SWITCH CASE

VÍ DỤ - SWITCH

echo "Number 2"; break; case 3: echo "Number 3"; break; default: echo "No number between 1 and

3";

} ?>

Switch Statement

 Lƣu trữ một hoặc nhiều giá trị trong một biến đơn

KIỂU MẢNG

(biến mảng)  Các kiểu mảng

 Mảng chỉ số – dùng chỉ số để phân biệt các thành

phần mảng

 Mảng kết hợp – dùng một chuỗi ký tự (ID) để xác

định các thành phần mảng

 Khai báo

$names = array(“An”, “Binh”, “Cuong”); hoặc $names[0] = “An”; $names[1] = “Binh”; $names[2] = “Cuong”;

 Sử dụng

echo $names[0] . $names[1] . $names[2];

KIỂU MẢNG – CHỈ SỐ

 Khai báo

$ages = array("An"=>32, "Binh"=>30, "Cuong"=>34); hoặc $ages[“An”] = 32; $ages[“Binh”] = 30; $ages[“Cuong”] = 34;

 Sử dụng

echo “Tuổi của An là ” . $ages[„An‟];

KIỂU MẢNG – KẾT HỢP

VÍ DỤ - MẢNG

Array 32, "Binh"=>30, "Cuong"=>34); echo "Ten 3 nguoi: " . $names[0] . $names[1] .

$names[2] . "
";

echo "Tuoi cua An la ". $ages['An']; ?>

 Cú pháp for (khởi_tạo; điều_kiện; thay_đổi_biến) {

Lệnh được lặp

}

VÒNG LẶP – XÁC ĐỊNH – FOR

VÍ DỤ - FOR

For "; } ?>

VÒNG LĂP – KHÔNG XÁC ĐỊNH – WHILE

 Cú pháp – dạng 1 while (điều_kiện) {

lệnh đƣợc thực hiện khi nào điều kiện còn đúng;

}  Cú pháp – dạng 2 do {

lệnh đƣợc thực hiện khi nào điều kiện còn đúng;

} while (điều_kiện);

 Tƣơng tự nhƣ trong JavaScript  Khai báo function tên_hàm(các_giá_trị_truyền) {

// nội dung hàm return giá_trị_trả_về;

HÀM TRONG PHP

}

VÍ DỤ - HÀM

echo add(1,4); ?>

Function

 Làm một số bài tập JavaScript bằng PHP.

BÀI TẬP

 Form có tác dụng thu thập dữ liệu từ ngƣời sử dụng trên trình duyệt, sau đó đƣợc chuyển đến server.

 Thông thƣờng ngƣời sử dụng nhập các thông tin vào form sau đó nhấn vào nút submit để chuyển các thông tin đó đến server

XỬ LÝ THÔNG TIN TỪ FORM

 Là một thuộc tính của thẻ

 Cho biết file kịch bản nào sẽ đƣợc tự động thực

THUỘC TÍNH ACTION

hiện khi thông tin chuyển đến server.

 File kịch bản đó có nhiệm vụ xử lý thông tin

đƣợc chuyển đến.  (chỉ xét file PHP)

 Xác định phƣơng thức để truyền thông tin  Gồm 2 phƣơng thức

 GET  POST

THUỘC TÍNH METHOD

 Đều đƣợc sử dụng để truyền thông tin đến server bao

gồm các trƣờng và giá trị của các trƣờng đó.

 Thông tin gửi bằng phƣơng thức GET đƣợc hiển thị lên ô địa chỉ của trình duyệt, nhƣng bị hạn chế về độ dài (<100 ký tự) => Có thể trực tiếp gửi thông tin đến server mà không cần

tạo form

 Thông tin gửi bằng phƣơng thức POST không đƣợc

hiển thị lên cửa sổ trình duyệt. => Sử dụng để gửi các thông tin quan trọng

SO SÁNH 2 PHƢƠNG THỨC

value="docsach"> Đọc sách

value="nghenhac"> Nghe nhạc

content="text/html; charset=utf-8" />

Xem phim

Tôi ở tại

type="text">

Chia

Giới tính:

name="GioiTinh" value="nam"> Nam

value="nu"> Nữ

Sở thích:


http://localhost/php/form1.php?Ten=Nguyen&Ho=Anh&GioiTinh= nam&SoThich=docsach&SoThich=nghenhac&NoiO=vietnam

VÍ DỤ - PHƢƠNG THỨC GET

value="docsach"> Đọc sách

value="nghenhac"> Nghe nhạc

content="text/html; charset=utf-8" />

Xem phim

Tôi ở tại

type="text">

Chia

Giới tính:

name="GioiTinh" value="nam"> Nam

value="nu"> Nữ

Sở thích:


VÍ DỤ - PHƢƠNG THỨC POST

 Thông tin đƣợc gửi bằng phƣơng thức GET đƣợc

XỬ LÝ FORM TRONG PHP

lƣu trong biến $_GET

 Thông tin đƣợc gửi bằng phƣơng thức POST

đƣợc lƣu trong biến $_POST

 Có thể sử dụng biến $_REQUEST để lấy thông tin về form (trong trƣờng hợp không xác định phƣơng thức)

 Thông tin đƣợc lƣu trong các biến dƣới dạng

mảng kết hợp.

content="text/html; charset=utf- 8" />

content="text/html; charset=utf-8" />

VÍ DỤ - PHƢƠNG THỨC GET

Form 2

method="get">

Xu ly form 2

"
";

Họ tên:

echo "Bạn " . $_GET["tuoi"] . "

tuổi."

Tuổi:    

name="tuoi" type="text">

?>

value="Send">

VÍ DỤ - PHƢƠNG THỨC GET

content="text/html; charset=utf- 8" />

content="text/html; charset=utf-8" />

VÍ DỤ - PHƢƠNG THỨC POST

Form 2

method=“post">

Xu ly form 2

"
";

Họ tên:

echo "Bạn " . $_POST["tuoi"] . "

tuổi."

Tuổi:    

name="tuoi" type="text">

?>

value="Send">

VÍ DỤ - PHƢƠNG THỨC POST

content="text/html; charset=utf- 8" />

content="text/html; charset=utf-8" />

VÍ DỤ - SỬ DỤNG BIẾN REQUEST

Form 2

method=“post">

Xu ly form 2

. "
";

Họ tên:

echo "Bạn " . $_REQUEST["tuoi"] . "

tuổi."

Tuổi:    

name="tuoi" type="text">

?>

value="Send">

VÍ DỤ - SỬ DỤNG BIẾN REQUEST

VÍ DỤ - FORM CÓ NHIỀU KIỂU INPUT KHÁC NHAU

Nghe nhạc

value="xemphim">

Xem phim

Form 3

cellspacing="0">

value="docsach"> Đọc sách

Nam

Nữ

Họ tên Tự giới thiệu
Mật khẩu

Giới tính

Năm sinh
Sở thích

VÍ DỤ - FORM CÓ NHIỀU KIỂU INPUT KHÁC NHAU

Xu ly form 3

echo "Họ tên: " . $_POST["hoten"] . "
"; echo "Giới tính: " . $_POST[“gioitinh"] . "
"; echo "Năm sinh: " . $_POST["namsinh"] . "
"; echo "Nghe nhạc: " . $_POST["nghenhac"] . "
"; echo "Xem phim: " . $_POST["xemphim"] . "
"; echo "Đọc sách: " . $_POST["docsach"] . "
"; echo "Tự giới thiệu: " . $_POST["gioithieu"] . "
"; echo "Mật khẩu: " . $_POST["matkhau"] . "
";

?>

VÍ DỤ - FORM CÓ NHIỀU KIỂU INPUT KHÁC NHAU

VÍ DỤ - FORM CÓ NHIỀU KIỂU INPUT KHÁC NHAU

 Để kiểm tra xem một biến đã đƣợc thiết lập hay

KIỂM TRA SỰ THIẾT LẬP BIẾN

chƣa.

 Sử dụng hàm isset(tên_biến);

 Có giá trị true nếu biến đã đƣợc thiết lập  Có giá trị false nếu biến đã đƣợc thiết lập

VÍ DỤ - HÀM ISSET()

echo "Biến đã được thiết lập";

echo "Biến chưa được thiết lập";

echo "Biến đã được thiết lập";

echo "Biến chưa được thiết lập";

PHP String

BÀI TẬP 1.

BÀI TẬP 2.

 PHP sử dụng hàm date() để định dạng thời gian dƣới các dạng khác nhau: thứ, ngày, tháng, năm, giờ, phút, giây.

THỜI GIAN TRONG PHP

 Cú pháp date(định_dạng, mốc_thời_gian)  định_dạng chỉ ra dạng thức dữ liệu muốn lấy  mốc_thời_gian để lấy dữ liệu, nếu để trống thì

mặc định là mốc thời gian hiện tại

 Mốc thời gian là khoảng thời gian đƣợc tính bằng

giây từ thời điểm 00:00:00 giờ GMT ngày 1/1/1970.

 Các định dạng ngày tháng

 d – ngày (01 – 31)  m – tháng (01 – 12)  M – tháng (gồm 3 ký tự đầu)  F – tên tháng  Y – năm (gồm 4 chữ số)  l – thứ trong tuần (ký tự)  z – ngày trong năm (0 – 365)  …

THỜI GIAN TRONG PHP

 Các định dạng thời gian

 h – giờ (01 – 12)  H – giờ (00 – 23)  i – phút (00 – 59)  s – giây (00 – 59)  a – am hoặc pm  …

THỜI GIAN TRONG PHP

PHP date

VÍ DỤ - THỜI GIAN

date("d") . " " . date("Y") . "
";

echo "Time: " . date("h") . ":" . date("i") . ":" .

date("s") . " " . date("a") . "
";

?>

 Chèn nội dung của 1 file vào các file khác tại vị

INCLUDE FILE

trí gọi hàm.

 Sử dụng lại những đoạn mã chƣơng trình có tính lặp lại trong nhiều trang ví dụ nhƣ header, footer, menu…

 Sử dụng hàm include() hoặc hàm require() với

tham số là file cần chèn.

 Mục đích đều là chèn nội dung của một file nào

INCLUDE() VÀ REQUIRE()

đó vào các file khác tại vị trí gọi hàm.

 Nếu có lỗi, hàm include() tạo ra thông báo, các kịch bản PHP phía sau hàm tiếp tục đƣợc thực hiện.

 Nếu có lỗi hàm require() tạo ra thông báo và các kịch bản PHP phía sau hàm không đƣợc thực hiện.

content="text/html; charset=utf- 8" />


Đây là trang chủ

Include File Home Contact About


Giới thiệu

VÍ DỤ - INCLUDE


Đây là trang chủ


Đây là trang chủ

VÍ DỤ - INCLUDE VÀ REQUIRE

 Đƣợc dùng để phân biệt ngƣời sử dụng.  Là một file chứa thông tin đƣợc server đặt trên

COOKIE

máy của ngƣời sử dụng (client).

 Mỗi khi client gửi yêu cầu tới server, thông tin cookie trên client cũng đồng thời đƣợc gửi.

 Sử dụng hàm setcookie()  Cú pháp

TẠO COOKIE

setcookie(name, value, expire);  name – tên của cookie  value – giá trị cookie  expire – thời điểm cookie hết hạn sử dụng  Hàm setcookie() phải đặt trước thẻ

 Ví dụ

setcookie(“user”, “hello”, time() + 60);  Tạo cookie có tên là user với giá trị là hello, cookie tồn

tại trong 60s tính từ thời điểm hiện tại

 Trong PHP, sử dụng biến $_COOKIE để đọc giá

ĐỌC GIÁ TRỊ COOKIE

trị các cookie

 Các cookie đƣợc lƣu dƣới dạng mảng kết hợp  Cú pháp

$_COOKIE[tên_cookie]

 Để kiểm tra xem cookie có tồn tại hay không, sử

dụng hàm isset  Ví dụ: isset($_COOKIE[“user”])

 Để xóa cookie, sử dụng hàm setcookie() với thời

XÓA COOKIE

điểm trong quá khứ

 Ví dụ

setcookie(“user”, “”, time() – 60);

VÍ DỤ - COOKIE

echo "Welcome " . $_COOKIE["user"] . "!";

echo "Welcome Guest!";

Read Cookie

 Session đƣợc dùng để lƣu thông tin về ngƣời sử

SESSION - PHIÊN

dụng trong quá trình truy nhập một ứng dụng web nào đó; ví dụ: forum, website mua bán trực tuyến,…

 Session đƣợc bắt đầu từ khi ngƣời sử dụng truy nhập ứng dụng (nhập địa chỉ), kết thúc khi thoát khỏi ứng dụng (đóng cửa sổ)

 Session tồn tại đối với tất cả các trang của cùng

một ứng dụng

 Khi sử dụng session bắt buộc khởi tạo đối với tất cả các trang muốn truy nhập thông tin trong session

 Cú pháp

KHỞI TẠO SESSION

session_start()

 Chú ý: hàm session_start() phải đƣợc đặt trƣớc thẻ

 Thông tin trong session đƣợc lƣu trong biến

TRUY NHẬP NỘI DUNG SESSION

$_SESSION dƣới dạng mảng kết hợp.

 Đọc ghi session thông qua biến $_SESSION  Kết hợp với hàm isset() để kiểm tra 1 thông tin

session nào đó đƣợc thiết lập hay chƣa.

 Để xóa 1 thông tin nào đó trong session sử dụng

XÓA THÔNG TIN TRONG SESSION

hàm unset()

 Ví dụ

unset($_SESSION[“username”]);

 Để xóa toàn bộ nội dung session, sử dụng hàm

session_destroy()

VÍ DỤ - SESSION – SLOGIN.PHP

Login Test Session

VÍ DỤ - SESSION

echo "Abc";

echo "Đăng nhập để xem nội dung";

Test Session

 PHP File  PHP File Upload  PHP Mail  PHP Math  …

TỰ ĐỌC

 Tạo website bao gồm 2 trang index.php và

content.php.  Trang index.php

 Nếu chƣa đăng nhập thì tạo form đăng nhập (gồm

username và password)

 Nếu đăng nhập rồi thì có link cho phép thoát và link đến

trang content.php  Trang content.php

 Nếu đăng nhập thì hiện nội dung nào đó  Nếu chƣa đăng nhập thì thông báo

BÀI TẬP