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

Bài giảng Công nghệ Web và Ứng dụng (GV Nguyễn Hoàng Tùng)

99 11 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 99
Dung lượng 5,67 MB

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

Nội dung

Nội dung học phần Phần 01: Các hàm thường dùng trong PHP Ôn lại kiến thức Phần 02: Lập trình hướng đối tượng trong PHP Phần 03: Xây dựng ứng dụng PHP theo mô hình 3-Tiers Phần 04: Một s

Trang 1

CÔNG NGHỆ WEB VÀ ỨNG DỤNG

Giảng viên phụ trách:

Nguyễn Hoàng Tùng

Bộ môn Tin học Email: nhoangtung@agu.edu.vn

Trang 2

Thông tin chung

Tên môn học: Công nghệ Web và Ứng dụng

Trang 3

Điều kiện cần để học môn này

Trang 4

Mô tả vắn tắt nội dung học phần

Học phần cung cấp các kiến thức về lập trình web với PHP từ

cơ bản đến nâng cao Phần cuối cùng hướng dẫn sinh viên xây dựng một ứng dụng web động bằng PHP

Trang 5

Nội dung học phần

Phần 01: Các hàm thường dùng trong PHP (Ôn lại kiến thức)

Phần 02: Lập trình hướng đối tượng trong PHP

Phần 03: Xây dựng ứng dụng PHP theo mô hình 3-Tiers

Phần 04: Một số thành phần bổ trợ trong Web

Phần 05: Giới thiệu ASP.NET MVC 4 (Phần mở rộng)

Trang 6

Tiêu chuẩn đánh giá sinh viên

Dự lớp: Đầy đủ theo quy chế (điểm danh đột xuất)

Đánh giá:

Tiểu luận ASP.NET MVC (30% - Có báo cáo nhóm)

Đồ án môn học theo nhóm (70% - Có báo cáo nhóm)

Đánh giá theo thang điểm 10 sau đó quy về thang 4

Trang 7

Tài liệu học tập

Slide bài giảng,

Phạm Hữu Khang, Hoàng Đức Hải, Xây Dựng Ứng Dụng Web Bằng PHP Và MySQL, NXB Phương Đông,

Steven Holzner, Thiết Kế Web Động Với PHP 5 (Tái Bản Lần 3), Gia Việt biên dịch, NXB Thống Kê,

Trang web: www.w3schools.com/php/default.asp

Trang 8

Thông tin giảng viên

Nguyễn Hoàng Tùng

Bộ môn Tin học – Khoa KTCNMT – ĐH An Giang

DĐ: 0975.058.876

Email: nhoangtung@agu.edu.vn, hoangtung@inbox.com

Trang web: http://hoangtungag.tk

Địa điểm làm việc: Phòng ND210, Khu trung tâm

Trang 9

Giải đáp thắc mắc về môn học

Trang 10

CÁC HÀM PHP THƯỜNG DÙNG

Giảng viên phụ trách:

Nguyễn Hoàng Tùng

Bộ môn Tin học Email: nhoangtung@agu.edu.vn

Trang 11

Nội dung chính của slide này

Trang 12

Chuỗi ký tự

Khai báo biến:

$str = " chuỗi ký tự ";

Các hàm về kiểu chuỗi ký tự: (chỉ nêu tên)

ltrim(), rtrim(), trim(): Xóa khoảng trắng bên trái, phải, cả 2

nl2br(): Định dạng HTML, biến ký tự “ \n ” thành “ <br /> ”

addslashes(): Biến một chuỗi có thể lưu trữ trong CSDL

substr(): Tách một chuỗi con từ một chuỗi

strpos(): Xác định vị trí xuất hiện của chuỗi trong một chuỗi

str_replace(): Thay thế chuỗi

explode(): Tách chuỗi thành các chuỗi con

implode(): Ngược lại với hàm explode(), dùng để ghép chuỗi

Trang 14

Nội dung chính của slide này

Trang 15

Các hàm bảo mật trong chuỗi

string addslashes(string $str)

string stripslashes(string $str)

string htmlspecialchars (string $str [, int $quote_style [, string $charset ]])

string md5(string $str [, bool $raw_output])

string sha1(string $str [, bool $raw_output])

Trang 16

Các hàm bảo mật trong chuỗi

string addslashes(string $str)

Thêm ký tự backslash ( \) phía trước các ký tự ‘ " \ NUL

trong chuỗi $str  Thường dùng trong các câu lệnh SQL để tránh xảy ra lỗi khi lưu và lấy dữ liệu từ CSDL

Các hàm tương tự:

string quotemeta (string $str )

string addcslashes (string $str , string $charlist )

Trang 17

Các hàm bảo mật trong chuỗi

Trang 18

Các hàm bảo mật trong chuỗi

string htmlspecialchars(string $str [, int $quote_style [, string $charset ]])

Chuyển đổi các ký tự đặc biệt & ' " < > trong chuỗi $str

thành các thực thể HTML (Convert special characters to HTML entities)

Khi đó:

&  &amp;

"  &quot; // khi không có ENT_NOQUOTES

'  &#039; // khi có ENT_QUOTES

<  &lt;

>  &gt;

Ngược lại: htmlspecialchars_decode

Trang 19

Các hàm bảo mật trong chuỗi

string md5(string $str [, bool $raw_output])

MD5: Message Digest 5 là một hàm băm mật mã được sử

dụng phổ biến với giá trị băm dài 128 bit

Thường dùng để mã hóa mật khẩu, kiểm tra tính toàn vẹn của tập tin,…

Trang 20

Các hàm bảo mật trong chuỗi

string sha1(string $str [, bool $raw_output])

Thuật toán SHA-1 (Secure Hash Algorithm 1) tạo ra chuỗi

mã băm có chiều dài cố định 160 bit từ chuỗi bit dữ liệu đầu

vào $str có chiều dài tùy ý

Được sử dụng phổ biến và có công dụng như MD5, ngoài ra SHA-1 còn được sử dụng rất nhiều trong thương mại điện

Trang 21

Nội dung chính của slide này

Trang 22

Các hàm về thời gian

string date(string $format [, int $timestamp])

array getdate([int $timestamp])

bool checkdate(int $month, int $day, int $year)

int time(void)

Trang 23

Các hàm về thời gian

string date(string $format [, int $timestamp])

Trả về thời gian hiện tại theo định dạng $format

$today = date("h-i-s, j-m-y"); //01-48-26, 10-01-11

$today = date("D M j G:i:s Y"); //Mon Jan 10 1:48:26 2011

$today = date("H:i:s"); //01:48:26

?>

Trang 24

Các hàm về thời gian

array getdate([int $timestamp])

Trả về một array thông tin về thời gian hiện tại

Array(

[seconds] => 41 [minutes] => 2 [hours] => 2 [mday] => 10 [wday] => 1 [mon] => 1 [year] => 2011 [yday] => 9 [weekday] => Monday [month] => January [0] => 1294599761 )

<? $now = getdate(); echo $now['year'] //Output: 2011 ?>

Trang 25

Các hàm về thời gian

bool checkdate(int $month, int $day, int $year)

Kiểm tra ngày, tháng, năm đưa vào có hợp lệ hay không?

Giới hạn của tham số:

Tháng ( $month ) từ 1 đến 12,

Ngày ( $day ) từ 1 đến 31, phụ thuộc theo tháng,

Năm ( $year ) từ 1 đến 32767

<?php

var_dump(checkdate( 2 , 29 , 2011 )); //False

var_dump(checkdate( 4 , 18 , 1986 )); //True

?>

Trang 27

Nội dung chính của slide này

Trang 29

Mảng

Sử dụng:

Truy xuất 1 phần tử trong mảng: $arr [ $key ]

 $key có ý nghĩa rộng hơn index, dùng tham chiếu đến 1 phần tử của mảng

Ví dụ: Tạo mảng gồm 10 phần tử là các số nguyên lấy ngẫu

nhiên trong [0,100] Khởi tạo $key là 0

Xóa 1 phần tử trong mảng: unset($arr[$key])

Trang 30

Mảng

Các hàm về mảng:

foreach(): truy xuất các phần tử của mảng

foreach($arr as $key => $value)

Trang 31

Mảng

Các hàm về mảng:

each(): truy xuất các phần tử của mảng

while($item = each($arr))

{

echo $item['key'].", ";

echo $item['value']."<br />";

}

 Hàm each() trả về phần tử kế tiếp của mảng Từ khóa key

và value trong trường hợp này phải giữ nguyên.

Trang 32

Mảng

Các hàm về mảng:

list(): truy xuất các phần tử của mảng

while( list($k,$v) = each($arr))

{

echo $k.", ";

echo $v."<br />";

}

 Hàm list($k,$v) tách cặp giá trị (key,value) của phần tử

có “chỉ số” là $key ra hai biến $k$v tương ứng

Trang 33

Mảng

Các hàm về mảng:

count(), sizeof(): Trả về kích thước của mảng

current(), end(): Trả về phần tử hiện tại, cuối cùng của mảng

prev(), next(): Trả về phần tử liền trước, kế kiếp

sort(): Sắp xếp mảng theo value của phần tử

ksort(): Sắp xếp mảng theo key của phần tử

is_array(): Kiểm tra 1 biến có phải là mảng (trả về 1và 0)

Trang 34

Mảng

Mảng động:

Ví dụ: Cho mảng gồm 10 số tự nhiên, tạo một mảng con chứa

những số lẻ của mảng này, in ra mảng con này

Trang 35

Nội dung chính của slide này

Trang 36

Upload file lên server

Form upload:

Lưu ý:

Luôn sử dụng phương thức POST

Luôn sử dụng enctype="multipart/form-data" trong thẻ FORM

<form action="upload.php" method="post"

enctype="multipart/form-data">

File upload:

<input type=" file " name=" myfile " />

<input type=" submit " value=" Upload " />

</form>

Trang 37

Upload file lên server

Trang 38

Upload file lên server

Xử lý:

<?php

$dir = "data/"; //Upload vào thư mục data

if($_FILES['myfile']['name'] != "") {

$fileupload = $dir $_FILES['myfile']['name'];

if(move_uploaded_file($_FILES['myfile']['tmp_name'],

$fileupload )) {

echo "Upload file thành công!";

} else{

echo "Upload file không thành công!";

} }

else{

echo "Vui lòng chọn file để upload!";

}

?>

Trang 39

Upload file lên server

Upload nhiều file:

<form action="upload.php" method="post"

enctype="multipart/form-data">

Files upload: <br />

File 1: <input type=" file " name=" myfile[] " /><br />

File 2: <input type=" file " name=" myfile[] " /><br />

File 3: <input type=" file " name=" myfile[] " /><br />

<input type=" submit " value=" Upload " />

</form>

Trang 40

Upload file lên server

Xử lý upload nhiều file:

<?php

foreach($_FILES['myfile']['error'] as $key => $error) {

if($error == 0) {

$tmp_name = $_FILES['myfile']['tmp_name'][$key];

$name = $_FILES['myfile']['name'][$key];

move_uploaded_file($tmp_name, "data/$name");

} }

?>

Trang 41

Giải đáp thắc mắc

Trang 42

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

TRONG PHP

Giảng viên phụ trách:

Nguyễn Hoàng Tùng

Bộ môn Tin học Email: nhoangtung@agu.edu.vn

Trang 43

Nội dung chính của phần này

Giới thiệu

Khai báo một lớp

Thuộc tính, phương thức

Truy cập các thành phần của lớp bằng $this

Giải quyết vấn đề không cho phép overloading trong PHP

Trang 44

Giới thiệu

OOP chỉ có trong phiên bản từ PHP 5.x về sau

Đặc điểm OOP trong PHP 5.x: Không cho phép đa kế thừa!

Trang 45

Khai báo một lớp

Khai báo lớp:

class tên_lớp

{

//khai báo thuộc tính

//khai báo phương thức

//sử dụng private hay public và protected để xác định phạm vi

}

 Với PHP5.x, tất cả các thành viên của một lớp đều phải được khai báo tính rõ ràng với các từ khoá tương ứng là public,

protected và private

Trang 46

Khai báo một lớp

Không khai báo lớp:

Trong nhiều file,

Trong nhiều khối lệnh,

Bắt đầu bằng (đối với tên lớp và tên phương thức)

Sử dụng:

Tạo biến đối tượng:

• $tên_object = new tên_class([giá trị khởi tạo]);

• $sv = new SinhVien("Nguyen Hoang Tung");

Sử dụng thuộc tính, phương thức:

• $tên_object->tên_thuộc_tính;

• $tên_object->tên_phương_thức([tham số]);

Trang 47

$sv = new SinhVien("DTH051187", "Hoang Tung");

echo "Mã số SV: ".$sv->mSSV.", Họ tên: ".$sv->hoTen;

?>

Nên khởi gán giá trị ban đầu

Trang 48

Sai!

Đúng!

Trang 49

?>

Trang 50

Hàm tạo (Contructor)

Có 2 loại hàm tạo:

Hàm tạo thông thường: Tên hàm giống tên lớp

Hàm tạo tự động thực thi: construct()

Khi cài đặt, chỉ sử dụng một trong 2 loại hàm tạo trên

Trang 51

Hàm hủy (Destructor)

destruct()

Thường được dùng để dọn dẹp, đóng kết nối tới CSDL

Trang 52

Đối tượng static

Lưu ý, không áp dụng static đối với hàm tạo

?>

Trang 53

Đối tượng static

Lưu ý, không cần sử dụng new để khai báo đối tượng

<?php

{

{

echo "MSSV: " self::$mSSV;

echo "Họ tên: " self::$hoTen;

} }

SinhVien::HienThi();

?>

Trang 54

Kế thừa

Dùng từ khóa extends để thể hiện kế thừa:

class SinhVienTH extends SinhVien {}

<?php

parent::SinhVien($mS, $hTen);

$this->soTinChi = $sTC;

}

parent::HienThi($mS, $hTen);

echo "Số tín chỉ: " $this->soTinChi;

} }

?>

Trang 55

Hàm autoload

Hàm autoload() không phải là thành phần của lớp

Khi thực thi nó sẽ trả về tên lớp được khai báo ngay sau nó

Sử dụng rất tốt trong việc tối ưu hóa dòng lệnh

Trang 56

Giải đáp thắc mắc

Trang 58

Nội dung chính của slide này

Mô hình 3-Tiers

Xây dựng ứng dụng mẫu theo 3-Tiers

Trang 59

Mô hình 3-Tiers

Tại sao lại sử dụng 3-Tiers?

Mô hình 3-Tiers là gì?

Trang 60

Tại sao lại sử dụng 3-Tiers?

Muốn hiểu tại sao người ta chia một phần mềm có lưu trữ

dữ liệu thành 3 lớp (3-Tiers), thì phải nhìn từ lịch sử lập

trình, nghĩa là tại sao người ta cần chia một phần mềm ra thành nhiều phần khác nhau? Rồi những phần đó tại sao lại

được xếp nhóm vào 3 lớp chính là Presentation, Business

Logics và Data?

 Từ đây trở đi, thuật ngữ phần mềm có nghĩa là phần mềm có lưu trữ dữ liệu

Trang 61

Tại sao lại sử dụng 3-Tiers?

Sau nhiều năm phát triển, kinh nghiệm cho người ta thấy chia phần mềm thành 3-Tiers sẽ có tác dụng tốt nhất cho:

Phát triển phần mềm: Có tính chuyên nghiệp hóa, có thể chia

cho nhiều nhóm được đào tạo nhiều kỹ năng khác nhau, từ thiết kế mỹ thuật cho đến lập trình đến tổ chức Database

Bảo trì: Với các lớp được phân chia theo như đã nói, thì các

thành phần của một hệ thống dễ được thay đổi, nhưng sự thay đổi có thể được cô lập trong từng lớp, hoặc chỉ ảnh hưởng đến lớp ngay gần kề của nó, chứ không phát tán náo loạn trong cả chương trình

Mở rộng: Việc thêm chức năng vào cho từng lớp sẽ dễ dàng

hơn là phân chia theo cách khác

Trang 62

Mô hình 3-Tiers là gì?

“3-Tiers là một kiến trúc kiểu client/server mà trong đó giao

diện người dùng (UserInterface), các quy tắc xử lý nghiệp vụ

kế.” (dịch từ Wikipedia)

Trang 63

Mô hình 3-Tiers là gì?

Như vậy, mô hình này phân tách ứng dụng ra làm 3 module riêng biệt, bao gồm:

Lớp Presentation: Để giao tiếp với người dùng, nhiệm vụ

chính là hiển thị dữ liệu và nhận dữ liệu từ người dùng

Lớp Business Logic: Xử lý dữ liệu, cung cấp các chức năng

của phần mềm

Lớp Data: Lưu trữ dữ liệu, cho phép lớp Business Logic có thể

tìm kiếm, trích xuất, cập nhật,… dữ liệu

Trang 64

Mô hình 3-Tiers là gì?

Trang 65

Xây dựng ứng dụng mẫu theo 3-Tiers

Các trang khác ngoài index.php

Code mẫu theo mô hình 3-Tiers

Trang 66

Lớp DataService

Chứa thông tin kết nối đến CSDL:

server : Sever chứa CSDL muốn kết nối đến

username : Tên đăng nhập CSDL

password : Mật khẩu đăng nhập

database : Tên cơ sở dữ liệu cần kết nối

Chứa các hàm xử lý trực tiếp với CSDL:

Hàm kết nối

Hàm thực thi truy vấn

Hàm xử lý dữ liệu trước khi thực thi truy vấn

Lớp này được thực thi trên Server

Trang 67

Lớp DataService

Trang 68

Lớp Data

Chứa các hàm truy vấn đến CSDL

Lấy dữ liệu (SELECT)  Dùng ExecuteQuery()

Thêm mới, Cập nhật, Xóa  Dùng ExecuteNonQuery()

Các hàm trong lớp này gọi hàm trực tiếp từ lớp DataService

để thực thi truy vấn

Lớp này được thực thi trên Server

Trang 69

Lớp Data

Tên lớp

Một số hàm thực thi

truy vấn

Trang 71

Lớp Business

Danh sách các thuộc tính (Properties)

Trang 72

Lớp Presentation

Trong thiết kế web, lớp này còn được gọi là Front-end (theo cách hiểu đơn giản), tức là phần giao diện mà người dùng nhìn thấy, thao tác được

Phần này chứa các giao diện hiển thị nội dung, các form nhập liệu, hộp thoại giao tiếp với người dùng

Lớp này được thực thi phía Client

Trang 73

Lớp Presentation

Trang 74

Trang index.php

Hàm autoload($class_name) dùng để lấy

tên lớp đang thực thi thông qua toán tử new

Kỹ thuật dùng include thông qua file do.php

Trang 75

Trang index.php

Kỹ thuật dùng include thông qua file do.php

Trang 76

Các trang khác ngoài index.php

Hàm autoload() bên

trang index.php sẽ “bắt”

được tên lớp là sachbs

Đảm bảo rằng mọi trang khác phải được

truy xuất thông qua trang index.php

Trang 77

Code mẫu theo mô hình 3-Tiers

Demo bài tập quản lý sách trực tuyến

Source code mẫu tham khảo tại trang web:

http://www.mediafire.com/?uddl71c31o889

Tài liệu môn học:

http://www.mediafire.com/?0cfkrezobdzu6

Trang 78

Giải đáp thắc mắc

Trang 79

MỘT SỐ CHỨC NĂNG BỔ TRỢ

Giảng viên phụ trách:

Nguyễn Hoàng Tùng

Bộ môn Tin học Email: nhoangtung@agu.edu.vn

Trang 80

Nội dung chính của slide này

Tạo mã xác nhận (Captcha)

Bình chọn (Vote)

Kỹ thuật phân trang (Paging)

Giỏ hàng (Shopping cart)

Trang 81

Tạo mã xác nhận (Captcha)

CAPTCHA: Completely Automated Public Turing test to tell

Computers and Humans Apart (Phép thử Turing để phân biệt giữa người và máy)

Như cái tên CAPTCHA đã cho ta biết, nó là một phép thử để xác định xác suất đối tượng được thử là con người, cho phép quản trị viên các trang web phân biệt đâu là người đâu

là máy

Trang 82

• Hầu hết mọi người có thể vượt qua

• Các chương trình máy tính hiện tại không thể vượt qua

Demo

Trang 83

Bình chọn (Vote)

Giới thiệu

Demo

Ngày đăng: 30/10/2021, 14:26

TỪ KHÓA LIÊN QUAN

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