1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Phát triển ứng dụng web Bài 5 Lê Đình Thanh

70 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 70
Dung lượng 130,49 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tầng khách• Thường là trình duyệt web, nhưng có thể là web crawler, web proxy • Gửi HTTP Request lên Web server và nhận HTTP Response từ Web server • Trình diễn nội dung web và tươn

Trang 1

Lê Đình Thanh

Bộ môn Mạng và Truyền thông Máy tính

Khoa Công nghệ Thông tin Trường Đại học Công nghệ, ĐHQGHN E-mail: thanhld@vnu.edu.vn, thanhld.vnuh@gmail.com

Mobile: 0987.257.504

Bài giảng

PHÁT TRIỂN ỨNG DỤNG WEB

Trang 4

Mô hình ba tầng

Phần 1

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 6

Tầng khách

• Thường là trình duyệt web,

nhưng có thể là web crawler,

web proxy

• Gửi HTTP Request lên Web

server và nhận HTTP

Response từ Web server

• Trình diễn nội dung web và

tương tác với người dùng

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 7

Web client

Mã nguồn trang web được thể hiện bằng HTML, CSS javascript Web Browser

Do Web Server gửi tới.

Hiển thị trên giao diện người dùng

• Gửi yêu cầu và nhận nội dung (mã nguồn HTML, CSS, javascript) trang web từ Web Server.

• Thông dịch mã nguồn trang web và thể hiện kết quả trên màn hình.

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 8

IIS, Apache, Tomcat, Sambar, Xitami …

HTTP Yêu cầu

Đáp ứng

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 9

Tầng giữa

• Các trang web/kịch bản được viết bằng các ngôn ngữ kịch bản khác nhau , và HTML

• Web server

– Nhận yêu cầu từ web client

– Yêu cầu các chương trình dịch chạy các kịch bản/trang động để sinh ra nội dung web (HTML, javascript, css)

– Gửi nội dung web cho web client

Trang 10

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.

Trang 11

– Thêm, cập nhật, xóa sinh viên.

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 14

Kết nối CSDL MySQL

• mysql_connect(address, username, password);

• mysql_select_db(database_name) or die(mysql_error());

• Ví dụ

$ret = mysql_connect("localhost", "root", “rt");

if ($ret) { //Ket noi thanh cong mysql_select_db("thuchanh"); //Chon CSDL } else {

echo "Không kết nối được CSDL"; exit();

}

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 15

Thực thi sql

• $ret = mysql_query($sql);

– Nếu thực thi thành công, hàm trả về true, ngược lại hàm trả về false và nguyên nhân lỗi được MySQL quản

lý Đọc nguyên nhân lỗi bằng hàm mysql_error()

– Với các lệnh update, delete, insert, MySQL quản lý số bản ghi chịu tác động Lấy số bản ghi chịu tác động bằng hàm mysql_affected_rows()

– Với lệnh select, hàm trả về recordset lưu kết quả truy vấn Hàm mysql_num_rows($recordset) trả về số bản ghi nhận được.

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 16

Cập nhật CSDL

• $count = mysql_query($sql);

• $sql: Lệnh insert, update, delete

• $count: Số bản ghi được cập nhật

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 17

Xử lý kết quả truy vấn

$rs = mysql_query("select … from

…");

if (!$rs) { echo mysql_error(); exit();

} while ($row =

Trang 18

S d ng mysqli extension ử ụ

- t PHP 5 tr đi, MySQL 4.1.3 tr đi ừ ở ở

- h ướ ng đ i t ố ượ ng + h ướ ng th t c ủ ụ

- h tr câu l nh đ ỗ ợ ệ ượ c chu n b s n ẩ ị ẵ

- h tr th t c l u tr ỗ ợ ủ ụ ư ữ

- h tr giao tác ỗ ợ

- nên dùng n u vi t mã m i dung MySQL ế ế ớ

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 19

Kết nối CSDL

• $db = new mysqli($host, $user, $pwd, $database, [$port]);

Trang 23

Câu lệnh được chuẩn bị

trước

Prepared Statement được sử dụng khi cần thực hiện câu lệnh lặp

lại nhiều lần để tăng hiệu năng

● Chuẩn bị: Tạo mẫu câu lệnh, sử dụng dấu ? làm tham số.

– $stmt = $db->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");

Trang 24

Thủ tục lưu trữ

Stored Procedures được sử dụng để

tăng hiệu năng

– PROCEDURE p(IN id_val INT) BEGIN INSERT INTO test(id) VALUES(id_val); END;

– if (!$db->query("CALL p(1)"))

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 25

– } while ($db->more_results() && $db->next_result());

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 26

– } while ($stmt->more_results() && $stmt->next_result());

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 29

PHP Data Objects

hóa, nhất quán để thao tác với CSDL

sử dụng PHP

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 30

Nguyên lý hoạt động

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

database

dbms result PDO result

C n cài driver cho h QTCSDL đ ầ ệ ượ c s d ng ử ụ

Trang 31

Kết nối CSDL

• $db = new PDO($dsn, $username, $password, [$options]);

với các hệ QTCSDL

Trang 36

Truy vấn CSDL (tiếp)

• Thực hiện truy vấn với lệnh chuẩn bị trước

– $stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?");

Trang 38

Truy vấn với dữ liệu người

dùng

Phần 3

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 39

Các phương pháp nhập liệu

• Nhập tham số và giá trị ngay sau URL

• Bấm vào liên kết đến URL có các tham số kèm theo

• Đệ trình form theo phương thức GET

– Dữ liệu được đưa vào URL trong chuỗi truy vấn

– Ví dụ http://localhost/example.php?

regionName=Riverland&countryName=Jamaica

• Đệ trình form theo phương thức POST

– Dữ liệu được đưa vào thân của gói HTTP Request

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 40

Nhận dữ liệu được gửi theo phương

thức GET

• PHP

$bien = $_GET[' tenThamso '];

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 41

Nhận dữ liệu được gửi theo phương

thức POST

• PHP

$bien = $_POST[' tenThamso '];

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 42

Xử lý an ninh dữ liệu nhập

• Dữ liệu do người dùng nhập có thể không đúng định dạng và chứa các

ký tự đặc biệt làm cho chương trình không làm việc hoặc làm việc không đúng

– Cần làm sạch dữ liệu trước khi sử dụng

• …

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 43

Xử lý an ninh cho dữ liệu

nhập

• Giới hạn độ dài của giá trị

• Thay các ký tự đặc biệt như ; > < \ “ ‘ … bằng cách thêm \ trước ký tự

• Ví dụ

– Dữ liệu được nhập: 2001;cat /etc/passwd

– Cắt bớt và thay thế dấu đặc biệt: 2001\;cat

• PHP

function clean($input, $maxlength) {

if ($maxlength > 0) $input = substr($input, 0, $maxlength);

Trang 44

Tạo truy vấn theo dữ liệu

nhập

• PHP

$sql = “select … from … where 1=1”;

$sql = “ and thuoctinh=\’” + thamso +

“\’”;

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 45

Xuất HTML theo dữ liệu truy

Trang 46

Ví dụ xuất HTML theo dữ liệu truy

vấn

• PHP

echo "<tr><td>" "<a href=\"example.php?

Trang 47

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 48

Ví dụ Phân trang hiển thị

sau Trang cuối

• Các tham số

– Số dòng trên một trang: rowsPerPage

– Trang hiện tại: currentPage

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 49

Nhận tham số và kiểm tra

Trang 50

Ví dụ Phân trang hiển thị

• Hiển thị các bản ghi ứng với trang hiện tại

Trang 51

Ví dụ Phân trang hiển thị

Trang 52

Ví dụ Phân trang hiển thị

• Thêm liên kết Trang sau

Trang 53

Ví dụ Phân trang hiển thị

• PHP

if ($currentPage == 0) echo “Trang đầu”; else {

echo “<a href = \”?currentPage=0\”>”;

echo “Trang đầu”;

echo “</a>”;

}

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 54

Ví dụ Phân trang hiển thị

• Thêm liên kết Trang cuối

Trang 55

Ví dụ Phân trang hiển thị

• Thêm liên kết số trang

• PHP

$numPage = floor(mysql_num_rows($result)/$rowsPerPage);

if (mysql_num_rows($result) % $rowsPerPage != 0) $numPage+ +;

for ($i = 0; $i < $numPage; $i++)

if ($i == $currentPage) echo ($i+1);

Trang 56

Ghi vào CSDL

Phần 4

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 57

Thêm, xóa, cập nhật bản ghi

Trang 58

… Form method=“POS

T”

hanhdong,

ma, …

Cập nhật CSDL

Thêm Sửa Xóa

… db.inc util.in c

lib.inc

Trang cập nhật

-Đọc dữ liệu đối tượng cần sửa từ

iframe hoặc AJAX

Trang 59

Mẫu trang tạo form cập

nhật //Nếu là cập nhật thì load giá trị bản

ghi từ CSDL để đưa vào form

//Tạo form nhập

//Kiểm tra hợp thức phía client

//Yêu cầu server kiểm tra hợp thức phía server và kiểm tra trùng mã (nếu

cần)

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 60

Mẫu trang cập nhật CSDL

$note = “”;

$input = clean($input);

$insertQuery = “lệnh sql được xây dựng theo $input”;

if ((mysql_query ($insertQuery, $connection)) && (($c

header("Location: list.php? note=“.$note);

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 61

Trang hiển thị danh sách được chỉnh sửa để thông báo kết quả cập nhật

Trang 62

Upload tệp và lưu vào CSDL

• Tạo form upload tệp

<form enctype="multipart/form-data" action=“page.php" method="post">

<input name="userfile" type="file">

<br><input type="submit">

</form>

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 63

Upload tệp và lưu vào CSDL

$fileContents = fread($file, filesize($userfile));

// Xử lý các ký tự đặc biệt bằng cách thêm \ trước

chúng

$fileContents = AddSlashes($fileContents);

} else $fileContents = NULL;

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 64

Upload tệp và lưu vào CSDL

• Lưu nội dung tệp vào CSDL

$insertQuery = "INSERT INTO TableName VALUES ( , \”“.$fileContents "\")";

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 65

Đọc và hiển thị tệp ảnh đã lưu vào

echo “<img src=\”imgdisp.php?p=" $p "\">";

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 66

– Đọc sai : Người dùng A cập nhật giá trị Người dùng B đọc giá trị đã cập nhật Người dùng A undo lại thao tác

=> Giá trị B đọc được không còn đúng

– Tính tổng sai : Người dùng A đang tính tổng thì người dùng B thay đổi giá trị một số mục

– Đọc giá trị không thể lặp : A đọc giá trị, B thay đổi giá trị, A đọc lại thấy giá trị khác

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 68

Ví dụ Xử lý cập nhật đồng

thời

//Khóa các bảng cần thao tác

$query = "LOCK TABLES items READ, orders WRITE, customer READ";

if (!mysql_query($query, $connection)) showerror();

// Thực hiện truy vấn

$query = "SELECT SUM(price*qty) from FROM items, orders, customer

WHERE customer.cust_id = orders.cust_id AND orders.order_id =

items.order_id AND items.cust_id = orders.cust_id AND orders.order_id =

$orderId AND customer.cust_id = $custId";

if (!($result = mysql_query($query, $connection))) showerror( );

$row = mysql_fetch_array($result);

//rồi cập nhật

if ($row["SUM(price*qty)"] > $minimum) {

$query = "UPDATE orders SET discount = $discount WHERE cust_id =

$custId AND order_id = $orderId";

if (!mysql_query($query, $connection)) showerror();

}

// Mở khóa các bảng

$query = "UNLOCK TABLES";

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Trang 69

Lưu ý khi khóa các bảng

• Sau khi khóa xong phải mở khóa các bảng

• Không cần khóa các bảng nếu chỉ

thực hiện một truy vấn.

Lê Đình Thanh, Bài giảng Phát triển ứng dụng web

Ngày đăng: 30/10/2021, 13:50

HÌNH ẢNH LIÊN QUAN

• Mô hình ba tầng - Bài giảng Phát triển ứng dụng web Bài 5  Lê Đình Thanh
h ình ba tầng (Trang 3)
Mô hình ba tầng - Bài giảng Phát triển ứng dụng web Bài 5  Lê Đình Thanh
h ình ba tầng (Trang 5)
Mô hình ba tầng - Bài giảng Phát triển ứng dụng web Bài 5  Lê Đình Thanh
h ình ba tầng (Trang 5)
• Khóa bảng cần thao tác - Bài giảng Phát triển ứng dụng web Bài 5  Lê Đình Thanh
h óa bảng cần thao tác (Trang 67)
Lưu ý khi khóa các bảng - Bài giảng Phát triển ứng dụng web Bài 5  Lê Đình Thanh
u ý khi khóa các bảng (Trang 69)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w