Phần 1 : Ôn tập PHP & MySQL

Preview:

DESCRIPTION

Phần 1 : Ôn tập PHP & MySQL. PHP at Yahoo! http://www.yahoo.com. The Internet’s most trafficked site. Nội dung. Giới thiệu PHP cơ bản Cấu trúc điều khiển Hàm & Mảng Form & Cơ chế truyền dữ liệu Kỹ thuật gửi tập tin Kết nối dữ liệu Cookie & Session. Cơ chế hoạt động của Webserver - PowerPoint PPT Presentation

Citation preview

1

Phần 1 :

Ôn tập PHP & MySQLPhần 1 :

Ôn tập PHP & MySQL

2

PHP at Yahoo!http://www.yahoo.com

The Internet’s most trafficked site

3

Nội dungNội dung

1. Giới thiệu

2. PHP cơ bản

3. Cấu trúc điều khiển

4. Hàm & Mảng

5. Form & Cơ chế truyền dữ liệu

6. Kỹ thuật gửi tập tin

7. Kết nối dữ liệu

8. Cookie & Session

4

GIỚI THIỆUGIỚI THIỆUNội dung 1

- Cơ chế hoạt động của Webserver- Môi trường phát triển PHP

5

CƠ CHẾ HOẠT ĐỘNG CỦA WEBSERVERCƠ CHẾ HOẠT ĐỘNG CỦA WEBSERVER

Nội dung 1.1

Cơ chế hoạt động của WebServerCơ chế hoạt động của WebServer

6

Users (clients) Browse

Internet

(WWW)

WWW Servers

Authors write HTML

Resources

(HTML files)

Cơ chế hoạt động của WebServerCơ chế hoạt động của WebServer

2Internet

or Intranet

www.example.comWebserver Apache

or IIS

ServerSide Script Parser

(PHP, ASP, ..)

DatabaseServer

Diskdriver

3

45

67

7

HTML

8

MÔI TRƯỜNG PHÁT TRIỂN PHPMÔI TRƯỜNG PHÁT TRIỂN PHPNội dung 1.2

9

Môi trường phát triểnMôi trường phát triển

• Webserver• Compiler• IDE• Database Server

10

Netbean for PHP (Jun-2010)Netbean for PHP (Jun-2010)

• Các thành phần cài đặt• Cấu hình Debug• Tạo project• Debug website

11

NetBeans IDE 6.8http://services.netbeans.org/bouncer/index.php?product=netbeans-6.8-ml-php&os=windows Full WebServer XAMP 1.7.3PHP Engine (5.3.1), Apache 2.2.14, MySQL (5.1.41)http://www.apachefriends.org/download.php?xampp-win32-1.7.3.exe

PHP Engine 5.3.2http://windows.php.net/downloads/releases/php-5.3.2-Win32-VC9-x86.msi Web Server Apache 2.2http://apache.multihomed.net/httpd/binaries/win32/httpd-2.2.15-win32-x86-no_ssl.msi Database Server MySQL 5.0http://dev.mysql.com/downloads/mirror.php?id=389367

PHP Debuger Xdebug 5.2http://www.xdebug.org/files/php_xdebug-2.1.0RC1-5.2-vc6-nts.dll

Netbean for PHP (Jun-2010) – Thành phầnNetbean for PHP (Jun-2010) – Thành phần

12

Netbean for PHP – Thành phầnNetbean for PHP – Thành phần• Setup XAMP + Control Panel

13

Netbean for PHP - Cấu hình debugNetbean for PHP - Cấu hình debug

• Enable Xdebug– Download Xdebug– Copy to Xamp/php/ext– Open and Edid Xamp/Apache/bin/php.ini

14

Netbean for PHP - Cấu hình debugNetbean for PHP - Cấu hình debug• Cấu hình XAMP• http://

netbeans.org/kb/docs/php/configure-php-environment-windows.html

• Cấu hình MySQL• http://

netbeans.org/kb/docs/ide/install-and-configure-mysql-server.html

• Cấu hình Xdebug• http://wiki.netbeans.org/HowToConfigureXDebug

15

Netbean for PHP – Tạo projectNetbean for PHP – Tạo project

16

Netbean for PHP – Tạo projectNetbean for PHP – Tạo project

17

Netbean for PHP – Tạo projectNetbean for PHP – Tạo project

18

Netbean for PHP - DebugNetbean for PHP - Debug

• Bắt đầu debug (Ctrl + F5):

• Continue (F5) – Nhảy đến Breakpoint kế tiếp• Step over (F8) – Nhảy từng bước• Step into (F7) – Nhảy vào hàm• Step out (Ctrl + F7) – Nhảy ra khỏi hàm• Run to Cursor (F4) – Nhảy đến con trỏ

• Stop (F5) :

19

PHP CƠ BẢNPHP CƠ BẢNNội dung 2

- Quy ước- Biến- Xuất dữ liệu- Kiểu dữ liệu

20

QUY ƯỚC TRONG PHPQUY ƯỚC TRONG PHPNội dung 2.1

21

Quy ướcQuy ước• Mã lệnh PHP được đặt trong các cặp thẻ

sau :Thẻ mở Thẻ đóng

<?php ?>

<? ?>

<script language="php"> <script>

<% %>

22

Quy ước – Ví dụ 1Quy ước – Ví dụ 1

http://lvminh.no-ip.org/01BasicPhp/01Quyuoc_VD1.php

23

Quy ước – Ví dụ 2Quy ước – Ví dụ 2

http://localhost/01BasicPhp/01Quyuoc_VD2.php

24

Quy ước – Ví dụ 3Quy ước – Ví dụ 3

Tham số Ý nghĩa

short_open_tag = Off Cho phép sử dụng <? ?>

asp_tags = Off Cho phép sử dụng <% %>

post_max_size = 8M Kích thước tối đa của dữ liệu gửi lên server

file_uploads = On Cho phép upload file

upload_max_filesize = 2M Kích thước tối đa của mỗi file upload

Chỉnh sửa php.ini

Không nên sử dụng cú pháp PHP viết tắt

http://localhost/01BasicPhp/01Quyuoc_VD3.php

25

Quy ước – Ví dụ 4Quy ước – Ví dụ 4

http://localhost/01BasicPhp/01Quyuoc_VD4.php

Cẩn thận với Javascript

Cú pháp ASP không hỗ trợ

PHP6

Quy ướcQuy ước

• Tất cả các câu lệnh php đều cách nhau bởi dấu ";"

• Không phân biệt khoảng trắng, Tab, xuống dòng trong câu lệnh<?php print "Hello"; print " World!"; ?> <?php

Print "Hello" ; print " World!";

?>

• Ghi chú : Theo cú pháp ghi chú của C++ & Perl// Đây là ghi chú

/* Đây là ghi chú nhiều dòng*/

# Đây là ghi chú26

27

Quy ước – Ví dụ ghi chúQuy ước – Ví dụ ghi chú

28

BIẾN TRONG PHPBIẾN TRONG PHPNội dung 2.2

29

Khai báo biến – Đặt tênKhai báo biến – Đặt tên

$tên_biến;

$tên_biến = giá_trị;

• Không cần khai báo kiểu dữ liệu• Biến tự khởi tạo khi được gán giá trị lần đầu

• Tên biến :– Chỉ bao gồm ký tự _ , (A..Z, a..z) và ký số (0..9)– Không bắt đầu tên bằng ký số– Phân biệt chữ hoa – chữ thường

30

Khai báo biến – Ví dụKhai báo biến – Ví dụ• Ví dụ :

STT Tên biến

1 $size

2 $0Zero

3 $my_drink_size

4 $_drinks

5 $Size

6 $drink4you

7 $$2hot4u

8 $drink-Size

9 Size

Biến sai ?

Bao nhiêu Biến?

31

Khai báo biến – Biến tham chiếuKhai báo biến – Biến tham chiếu

Tạo biến tham chiếu một biến khác theo 2 cách:

• Cách 1:$biến_1;$biến_2 =& $biến_1;

• Cách 2:$biến_1;$biến_2 = &$biến_1;

32

Khai báo biến – Phạm viKhai báo biến – Phạm viLoại Vị trí khai báo Phạm vi ảnh hưởng

Biến cục bộ Trong hàm Trong hàm

Tham số của hàm Khai báo hàm Trong hàm

Biến toàn cục Sau từ khóa GLOBAL Webpage

Biến tĩnh Sau từ khóa STATIC Webpage

Biến hệ thống $_SERVER, $_POST, … Website

33

Khai báo biến – Biến hằngKhai báo biến – Biến hằng• Khai báo biến hằng:define(tên_biến_hằng, Giá trị [, HoaThường]);

• Ví dụ:

34

XUẤT DỮ LIỆU RA TRÌNH DUYỆTXUẤT DỮ LIỆU RA TRÌNH DUYỆT

Nội dung 2.3

35

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt

echo()

print()

printf()

sprintf()

Gồm các hàm sau :

36

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:

void echo(tham số chuổi [, tham số chuổi [, tham số chuổi]])

• Ví dụ:

echo()

print()

printf()

sprintf()

37

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:

int print(tham số)

• Ví dụ:

echo()

print()

printf()

sprintf()

38

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:

boolean printf(string format [, mixed args])

• Ví dụ:

echo()

print()

printf()

sprintf()

39

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt

Ký hiệu Kiểu tham số Thể hiện ra

%b Số nguyên Số nhị phân

%c Số nguyên 1 ký tự ACSII

%d Số nguyên Số nguyên

%f Số thực Số thực

%o Số nguyên Số bát phân

%s Chuỗi Chuỗi

%u Số nguyên Số nguyên không dấu

%x Số nguyên Số thập lục phân thường

%X Số nguyên Số thập lục phân hoa

echo()

print()

printf()

sprintf() printf("$%.2f", 43.2); // $43.20

40

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:

string sprint(string format [, mixed args])

• Ví dụ:

echo()

print()

printf()

sprintf()

$cost = sprintf("$%.2f", 43.2);

// $cost = $43.20

41

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt

echo()

print()

printf()

sprintf()

Xuất chuỗi “tĩnh”

Xuất chuỗi “động”

42

KIỂU DỮ LIỆU & TOÁN TỬKIỂU DỮ LIỆU & TOÁN TỬNội dung 2.4

43

Kiểu dữ liệuKiểu dữ liệu• boolean (bool)• integer (int)• double (float, real)• string

• array• object

1 Biến trong PHP có thể lưu bất kỳ kiểu dữ liệu nào

44

Kiểu dữ liệu – Kiểm tra kiểuKiểu dữ liệu – Kiểm tra kiểu

gettype is_string isset

is_integer is_array unset

is_double is_object empty

45

Kiểm dữ liệu – số nguyên, số thựcKiểm dữ liệu – số nguyên, số thực• Một số hàm xử lý số

– abs(…) pow(…,…) decbin(…) srand(seed)– ceil(…) sqrt(…) bindec(…) rand()– floor(…) log(…) dechex(…) rand(min,

max)– round(…) log10(…) hexdec(…) …

• Ví dụ// Phát sinh một "mầm" ngẫu nhiên$seed = (float) microtime( ) * 100000000;

// Khởi tạo bộ phát sinh số ngẫu nhiênsrand($seed);

// In con số ngẫu nhiênecho rand(); // Giá trị ngẫu nhiên từ 0 đến getmaxrand( )echo rand(1, 6); // Giá trị ngẫu nhiên từ 1 đến 6

46

Kiểu dữ liệu – ChuỗiKiểu dữ liệu – Chuỗi

• Chuỗi được chứa trong nháy đơn ‘ ’ hoặc nháy kép “ ”

• Một số hàm xử lý chuỗi– printf(…) trim(…) strtolower(…) – str_pad(…) str_replace(…) strtoupper(…) – Strlen(…) substr(…) strcasecmp(…)

• Toán tử nối chuỗi: dấu chấm .

$s = "Hello"." World"; // $s = "Hello World"

47

Kiểu dữ liệu – ChuỗiKiểu dữ liệu – Chuỗi

• Phân biệt dấu nháy đơn và nháy kép (print/printf/echo)

$user = "Bill";print 'Hi $user';print "Hi $user";print 'Hi'.$user;print 'Hi'.'$user';

Hi $user

Hi Bill

Hi $user

Hi Bill

Chuyển kiểu dữ liệuChuyển kiểu dữ liệu– Cách 1: (automatic)

– Cách 2: (datatype) $var– Cách 3: settype($var, "datatype")

$var (int)$var (bool)$var (string)$var

null 0 false ""

true 1 "1"

false 0 ""

"6 feet" 6 true

"foo" 0 true 48

$var = "100" + 15;

$var = "100" + 15.0;

$var = 100 + 15.0;

$var = 39 + " Steps";

$var = "Hello" + " World";

115 integer

115 double

115 double

39 integer

0 integer

49

Toán tửToán tửLoại Toán tử Ghi chú

new

. [ ] ( )

Toán học + - * / % ++ --

So sánh < > <= >= != == === !==

Luận lý && || ?: , !

Xử lý bit ~ << >> >>> AND OR XOR

Gán = += -= *= /= %= >>= <<= &= |= ^= .=

Ép kiểu (kiểu dữ liệu) (int) (double) (string)…

50

CẤU TRÚC ĐIỀU KHIỂNCẤU TRÚC ĐIỀU KHIỂNNội dung 3

- Từ khóa- Điều kiện chọn- Điều kiện lặp- Lệnh nhúng mã nguồn

51

Từ khóa break, continue, gotoTừ khóa break, continue, goto• break : Ngắt xử lý của khối lệnh / vòng lặp• continue : Tiếp tục bước kế tiếp của vòng lặp

• goto : Nhảy đến nhãn chỉ định PHP 5.3 trở lên

return;

52

Cấu trúc if elseCấu trúc if elseif (condition) { statement[s] if true} else{ statement[s] if false}

if (condition) { statement[s]} elseif (condition) { statement[s]}

$x isn’t less than 4

53

Cấu trúc switchCấu trúc switchswitch (expression)

{

case label :

      statementlist

break;

case label :

statementlist

break;

    ...

 default :

      statementlist

} You picked menu three You picked menu four

54

Cấu trúc whileCấu trúc whilewhile (expression) {

statements}

do

{

statements

}while (expression);

55

Cấu trúc forCấu trúc forfor ([initial expr]; [condition]; [update expr]) {

statement[s] inside loop}

56

Cấu trúc foreachCấu trúc foreachforeach (array as variable) {

    statements }

57

LỆNH NHÚNG DỮ LIỆULỆNH NHÚNG DỮ LIỆU

58

Lệnh nhúng dữ liệuLệnh nhúng dữ liệu

• include, include_once, require, require_once

• Cú pháp:

lệnh_nhúng(File_Web_path);

• Được sử dụng để nhúng trực tiếp một đoạn mã lệnh PHP/HTML từ một file PHP/HTML khác vào vị trí chèn lệnh nhúng này

• Ứng dụng:– Tái sử dụng code– Làm template cho Web

59

03_IncReq_MainTestInc.php

03_IncReq_MainTest.php

60

03_IncReq_MainTestInc.php

03_IncReq_MainTest.php

Bỏ được không?

Không

Chèn HTML ? Được

61

03_IncReq_MainTest.php

Sai đường dẫn ?

62

Thông báo lỗi tìm file

Vẫn tiếp tục nạp phần còn lại

Chặn lỗi ?

63

03_IncReq_MainTest.php

@

64

Ngăn chặn lỗi trong PHPNgăn chặn lỗi trong PHP

• Sử dụng hàm kiểm tra file– bool file_exists(string FilePath)

• Sử dụng từ khóa @ trước hàm gây lỗi.

• Sử dụng bổ sung– int mysql_errno(): Lấy mã lỗi– string mysql_error(): Lấy thông báo lỗi php

• Gặp các trường hợp lỗi nghiêm trọng– int die(string msg): ngừng biên dịch PHP

65

Phân biệt các lệnh nhúng dữ liệuPhân biệt các lệnh nhúng dữ liệuinclude include_once require require_once

Bắt buộc file phải có x x

Chèn nhiều lần x x

Chèn 1 lần x x

include / include_once require / require_once

Ứng dụng – Template layout 1Ứng dụng – Template layout 1

66

leftmenu.php

topmenu.php

footer.php

index.php search.php pays.php

67

Ứng dụng – Template layout 2Ứng dụng – Template layout 2

echo $Banner;

echo $Footer;

echo $Menu; echo $Content;

template.php

68

echo $Banner;

echo $Footer;

echo $Menu;

echo $Content;

template.phpleftmenu.php

$Temp = “…”;

footer.php

$Temp = “…”;

topmenu.php

$Temp = “…”;

69

topmenu.php

topmenu.php

70

echo $Banner;

echo $Footer;

echo $Menu;

echo $Content;

template.php

index.php?action=Timkiem

71

HÀM & MẢNGHÀM & MẢNGNội dung 4

HàmGọi hàmKhai báo hàmThư viện hàm cho PHPMảngKhai báo mảngThêm / xóa phần tửCác thao tác khác trên mảng

72

HÀM TRONG PHPHÀM TRONG PHPNội dung 4.1

73

Gọi hàmGọi hàm

• VD: Hàm tính lũy thừa

• Danh sách hơn 150 hàm của PHP– Offline: http://www.php.net/download-docs.php

– Online: http://www.php.net/manual/en/extensions.alphabetical.php

74

Khai báo hàmKhai báo hàmfunction functionName(){ function-body}

functionName Tên hàm : tuân theo quy tắc đặt tên biến

xuatDanhSachSV()

xuat_Danh_Sach_SV()XuatDanhSachSV()

xuatdanhsachsv() xuat_DanhSachSV()

75

Khai báo hàm có tham sốKhai báo hàm có tham sốfunction functionName(parameters){ function-body}

parameters Danh sách tham số Cách nhau bằng dấu phẩy Khai báo tên tham số theo quy tắc khai báo tên biến

76

Khai báo hàm có tham số kiểu tham chiếuKhai báo hàm có tham số kiểu tham chiếu

function functionName(parameters, &parameters){ function-body}

?

77

Khai báo hàm có tham số mặc địnhKhai báo hàm có tham số mặc địnhfunction functionName(parameters, paremeter=value){ function-body}

78

Khai báo hàm có giá trị trả vềKhai báo hàm có giá trị trả vềfunction functionName(parameters, paremeter=value){ function-body return value;}

value

Giá trị trả về của hàm có thể là Giá trị đơn Giá trị phức

79

Thư viện hàm cho PHPThư viện hàm cho PHP

• Lưu tất cả hàm trong một/nhiều file php thuần

• Lưu và Đặt tên file theo chủ đề• Sử dụng kết hợp với include_once (..)

80

MẢNGMẢNGNội dung 4.2

81

MảngMảng

• Là một tập các phần tử có cùng tính chất

• Mỗi phần tử có thể có – Cùng kiểu dữ liệu– Khác kiểu dữ liệu

• Một mảng gồm 2 phần thông tin– Thông tin chỉ mục– Thông tin giá trị tương ứng với chỉ mục

• Mảng đánh chỉ mục từ 0

82

Phân loại mảngPhân loại mảng

Gồm 2 loại• Mảng có chỉ mục là kiểu số (Numberd Array)• Ví dụ :

– Colors = {“Red”, “Green”, “Blue”, “Yellow”}– SoLuong = {12, 33, 3, 16}

• Mảng có chỉ mục là kiểu tên (Associated Array)

• Ví dụ :– GioHang = {“Red”=>12, “Green”=>33, “Blue”=>3, “Yellow=>16}

83

Khai báo mảngKhai báo mảng

• Không cần khai báo số lượng phần tử• Không cần phải khai báo mảng trước khi sử dụng

• Khai báo tường minh thông qua array()• Ví dụ:

– $colors = array(“red”, “green”, “blue”, “yellow”);– echo $colors[2];

• Khai báo không tường minh• Ví dụ:

– $colors[] = “red”;– $colors[] = “green”;– $colors[] = “blue”;

84

Khai báo mảngKhai báo mảng

• Khai báo mảng với mảng chỉ mục số có giá trị trong 1 khoảng cho trước

• array range(start, end, step)

• Ví dụ:– $number = range(0, 10);// $number = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);– $oddnumber = range(1, 10, 2);// $oddnumber = array(1, 3, 5, 7, 9);– $alph = range(“A”, “D”);// $oddnumber = array(“A”, “B”, “C”, “D”);

85

Rút trích nội dung mảngRút trích nội dung mảng

• Sử dụng toán tử []

• Sử dụng hàm void list(items)• Ví dụ:

– $prod = array(“redz”, “1”, 77, “blue”);– list($name, $id, $quantity, $color) = $prod;

86

FORM & CƠ CHẾ TRUỀN DỮ LIỆUFORM & CƠ CHẾ TRUỀN DỮ LIỆU

Nội dung 5

Form và Form Field

Cơ chế Truyền và Nhận dữ liệu giữa các trang webTruyền/Nhận qua Phương thức GETTruyền/Nhận qua Phương thức POST

Một số ví dụ

87

FORM & FORM FIELDFORM & FORM FIELDNội dung 5.1

88

Form và Form FieldForm và Form Field• Là container chứa các thành phần nhập liệu khác.

Các thuộc tính của <FORM>

NAME : tên FORM

ACTION : chỉ định trang web nhận xử lý dữ liệu từ FORM này khi có sự kiện click của button SUBMIT.

METHOD : Xác định phương thức chuyển dữ liệu (POST, GET)

<FORM NAME=“…” ACTION=“…” METHOD=“…”>

<!-- các thành phần của Form -->

</FORM>

Các thành phần của FormCác thành phần của Form

• Gồm các loại Form Field sau:

– Text field – Password field– Hidden Text field– Check box– Radio button– File Form Control– Submit Button, Reset Button, Generalized Button– Multiple-line text field– Label– Pull-down menu– Scrolled list– Field Set

89

90

Thẻ <input>Thẻ <input>

• Type: – text / password/ radio/ checkbox– hidden– submit / button

<INPUT

TYPE = “KiểuLoại”

NAME = string

VALUE = string

…………

>

91

Thẻ <select>Thẻ <select>

• Type: – Combobox– Listbox

<SELECT name=“??” multiple>

<optgroup label=“string”>

<option value=“”> XYZ </option>

<option value=“” selected> 123 </option>

</optgroup>

……

</SELECT>

92

CƠ CHẾ TRUYỀN NHẬN DỮ LIỆUCƠ CHẾ TRUYỀN NHẬN DỮ LIỆU

Nội dung 5.2

Cơ chế truyền nhận dữ liệuCơ chế truyền nhận dữ liệu

?

Cơ chế truyền nhận dữ liệuCơ chế truyền nhận dữ liệu• Trang web nhập dữ liệu :

– Sử dụng đối tượng <form>– Nhập liệu thông qua các formfield – Thực hiện việc truyền dữ liệu thông qua Submit

Trang web nhận dữ liệu (URL): Sử dụng các biến toàn cục của PHP

– $_POST[“FieldName”]

– $_GET[“FieldName”]

– $_REQUEST[“FieldName”]

<FORM ACTION=“URL” METHOD=“GET/POST”>…

<input type=“submit” value=“Xử lý”></FORM>

Cơ chế truyền nhận dữ liệu – Trang web nhập liệuCơ chế truyền nhận dữ liệu – Trang web nhập liệu

timSach.php<html>

<body><h1>Tìm sách</h1>

<form action="xlTimSach.php" Method="GET" >Từ khóa : <input type="text"

name="txtTukhoa"/> <input type="submit" value="Tìm"/>

</form></body>

</html>

Cơ chế truyền nhận dữ liệu – Trang web nhập liệuCơ chế truyền nhận dữ liệu – Trang web nhập liệu

xltimSach.php<html>

<body> <?php $sTukhoa = $_REQUEST["txtTukhoa"]; ?>

<h1>Tìm sách</h1> Từ khóa tìm sách là : <?php echo $sTukhoa; ?

> <br /> Kết quả tìm là :

</body></html>

Cơ chế truyền nhận dữ liệu – Trang web nhập liệuCơ chế truyền nhận dữ liệu – Trang web nhập liệu

xuly.php<html>

<body> <form action="xuly.php" Method="GET" > Từ khóa : <input type="text"

name="txtTukhoa"/> <input type="submit" value="Tìm"/> </form> <?php $sTukhoa = $_REQUEST["txtTukhoa"]; if (isset($sTukhoa)) { print "Từ khóa tìm sách là : $sTukhoa"; echo "<br>Kết quả tìm là : "; } ?>

</body></html>

Truyền/Nhận qua Phương thức GETTruyền/Nhận qua Phương thức GET

• Tham số truyền đi qua địa chỉ URL– http://domain/pathfile?fieldname1=value1&fieldname2=value2

– Ví dụ: • http://localhost/xuly.php?txtTukhoa=PHPHost

• Nhận dữ liệu thông qua biến toàn cục của PHP– $_GET[“FieldName”]– $_REQUEST[“FieldName”]

Phương thức GET – Ưu khuyết điểmPhương thức GET – Ưu khuyết điểm

• Khuyết điểm– Không thích hợp để truyền dữ liệu có tính bảo mật (password)– Dung lượng Dữ liệu truyền đi có giới hạn– URL submit bằng phương thức GET được lưu lại trên server

• Ưu điểm– Người dùng có thể bookmark địa chỉ URL– Người dùng có thể Giả lập phương thức GET để truyền dữ liệu

mà không cần thông qua FORM

Ví dụVí dụ

File: GET.HTM

<HTML>

<HEAD>

<TITLE>Input data</TITLE>

</HEAD>

<BODY>

<IMG SRC=“images/N72.jpg”><br>

<A HREF=‘chitiet.php?Ma=N72’>Xem chi tiết</A>

</BODY>

</HTML>

Ví dụ (tt)Ví dụ (tt)File: CHITIET.PHP

<HTML>

<HEAD>

<TITLE>Input data</TITLE>

</HEAD>

<BODY>

<?php

echo "Ma dien thoai la " . $_GET["Ma"];

?>

</BODY>

</HTML>

Truyền/Nhận qua Phương thức POSTTruyền/Nhận qua Phương thức POST

• Tham số truyền đi được ẩn bên trong FORM

• Nhận dữ liệu thông qua biến toàn cục của PHP– $_POST[“FieldName”]– $_REQUEST[“FieldName”]

Phương thức POST – Ưu khuyết điểmPhương thức POST – Ưu khuyết điểm

• Ưu điểm– Bảo mật hơn phương thức GET– Không giới hạn dung lượng dữ liệu truyền đi

• Khuyết điểm– Kết quả trang web trả về không thể bookmark– Có thể gây ra lỗi nếu người dùng muốn quay lại trang kết quả

(nhấn nút Back hoặc Refresh) do bị expired– Dữ liệu có thể không truyền đi được do vấn đề về security

104

KỸ THUẬT GỬI TẬP TINKỸ THUẬT GỬI TẬP TINNội dung 6

Cơ chế Upload File

Thiết kế Form để Upload tập tin

Mảng $_FILES và xử lý tập tin upload trên server

Vấn đề quyền truy cập tập tin trên server

PHP Temp

WebsiteABC

Cơ chế Upload FileCơ chế Upload File

105

Webserver

Internet or Intranet

Yêu cầu gọi trang xlupload.php

Diskdriver

file

Di chuyển / Sao chép

Thiết kế Form để Upload FileThiết kế Form để Upload File• Thiết lập thuộc tính Form

– Method = POST– Enctype = multipart/form-data

106

uploadForm.php

107

Mảng $_FILESMảng $_FILES

• Là một mảng 2 chiều, chứa tập hợp các thông tin liên quan đến các tập tin được upload lên web-server trong một lần gọi dịch vụ web.

fileAssigment1

fileAssigment2

fileAssigment3

fileAssigment4

fileAssigment5

$_FILES[……]

fileAssigment1 fileAssigment2 fileAssigment3 fileAssigment4 fileAssigment5

…… …… …… …… ……

…… …… …… …… ……

…… …… …… …… ……

…… …… …… …… ……

…… …… …… …… ……

108

Mảng $_FILESMảng $_FILES$_FILES[……]

fileAssigment1 …..

error ……

name ……

size ……

tmp_name ……

type ……

Lỗi phát sinh khi truyền tập tin lên serverVD: 0, 1, 2

Tên file và phần mở rộng của fileVD: 9912001.png

Đường dẫn lưu tạm tập tin upload trên serverVD: c:\xamp\tmp\phpA897x0.tmp

Kích thước của file (tính theo Byte)VD: 4500

Kiểu của file theo chuẩn MINEVD: image/png

109

Xử lý tập tin upload trên serverXử lý tập tin upload trên server• Sau khi tập tin đã được truyền xong cho server :

– Kiểm tra lỗi– Kiểm tra ràng buộc (kích thước, kiểu tập tin)– Đặt tên mới cho tập tin (nếu cần)– Sao chép / di chuyển tập tin về thư mục Website

• Một số hàmboolean is_uploaded_file(string filePathname)boolean copy(string filePathname, string dest)

boolean move_uploaded_file(string filePathname, string dest)

110

uploadForm.php

uploadManager.php

111

Vấn đề về quyền truy cập FileVấn đề về quyền truy cập File

PHP Warning: move_uploaded_file(upload/14.jpg) [function.move-uploaded-file]:

failed to open stream: Permission denied in.

Cấp quyền cho thư mục /upload

AccountIUSR_XXX

Lưu ý :• Chỉ cấp quyền ghi cho thư mục cần thiết

• Không cấp quyền ghi cho thư mục WebRoot

112

113

114

KẾT NỐI DỮ LIỆU MYSQLKẾT NỐI DỮ LIỆU MYSQLNội dung 7

Các bước thao tác CSDL trong PHPCác bước thao tác CSDL trong PHP

1. Kết nối với CSDL

2. Xây dựng câu truy vấn dữ liệu

3. Thực thi câu truy vấn

4. Xử lí kết quả trả về từ câu truy vấn SELECT

5. Ngắt kết nối với CSDL

115

1. Tạo Kết nối CSDL1. Tạo Kết nối CSDL

• Kết nối MySQL và Chọn CSDLresource mysql_connect(string host, string LoginName, string password)int mysql_select_db(string dbName, resource connection)

<?php

$connection = mysql_connect(“localhost",“root”,“root");

mysql_select_db(“TestDB", $connection);

?>

DatabaseApplication

Connection

116

2. Xây dựng câu truy vấn (tt)2. Xây dựng câu truy vấn (tt)

SQL Ví dụ

INSERT strSQL = “ INSERT INTO Users (UserName, Password) VALUES (‘admin',‘123')“

DELETE strSQL = “ DELETE FROM Users WHERE UserName = ‘lvminh’ “

UPDATE strSQL = “ UPDATE Users SET Password = ‘abc' WHERE UserName = ‘admin’ ”

SELECT strSQL = “ SELECT * FROM Users WHERE UserName = ‘admin’ ”

$sUserName = “admin”;$sPassword = “123”;

$strSQL ?117

SELECT [Liệt kê thuộc tính] FROM [Danh sách các bảng]WHERE [ĐK Kết+lọc] Group by [Thuộc tính Gom nhóm]Order by [Thuộc tính sắp thứ tự]HAVING [ĐK trên nhóm]

118

3. Thực thi câu truy vấn3. Thực thi câu truy vấn

<?php$strSQL = “INSERT INTO Users (UserName, Password) VALUES (‘admin',‘123‘)”;mysql_query($strSQL);?>

Application

Connection 011010011011010011

Query

Database

resource mysql_query(string SQL_cmd, resource connection)

Insert Delete Update

<?php$strSQL = “SELECT * FROM Users”;$result = mysql_query($strSQL);?>

Select

119

4. Xử lý kết quả trả về4. Xử lý kết quả trả về

UserName Password

A AA

B BB

C CC

D DD

… …

X XX

Y YY

Z ZZ

• Hiển thị dữ liệu trả về

– Sử dụng hàm $row = mysql_fetch_array($result)

– Số lượng FIELD$num = mysql_num_fields($result);

– Truy cập đến từng FIELDecho $row[“UserName”];Hoặc echo $row[0];

cursor

Ví dụ:CSDL BookstoreDB – Bảng T_UsersXuất records từ CSDL ra trang HTML

120

5. Ngắt kết nối dữ liệu5. Ngắt kết nối dữ liệu

bool mysql_close(resource connection) ;

Tự động thực thi khi kết thúc mã lệnh nhờ cơ chế tự động thu rác (garbage collector) – PHP4,5

121

122

Một số vấn đề - MySQL & Font UnicodeMột số vấn đề - MySQL & Font Unicode• Font UNICODE

<?php

mysql_query(“set names ‘utf-8’”);?>

Encode

Decode

123

Phân trang dữ liệuPhân trang dữ liệunumRows

rowsPerPage

maxPagepageNum

offset

124

Phân trang dữ liệuPhân trang dữ liệu

• Trường hợp dữ liệu lấy về có quá nhiều mẫu tin (hiển thị bảng quá dài)

• Chia dữ liệu hiển thị trên nhiều trang

– Tổng số kết quả trả về: $numRows

– Số kết quả hiển thị trên 1 trang: $rowsPerPage– Tổng số trang hiển thị: $maxPage

$maxPage = ceil($numRows / $rowsPerPage);

– Số thứ tự trang hiển thị: $pageNum = 1,2,…– Chỉ số kết quả bắt đầu trong trang thứ $pageNum:

$offset = ($pageNum - 1) * $rowsPerPage;

125

Phân trang dữ liệu (tt)Phân trang dữ liệu (tt)• Các bước thực hiện phân trang

– Tính các thông số phân trang ($rowsPerPage, $pageNum, $offset)

– Lấy thông tin cần hiển thị ($numRows)

– Hiển thị thông tin của trang hiện tại ($offset, $rowsPerPage)

– Tạo liên kết chỉ đến các trang ($maxPage $pageNum)

– Xem Ví dụ

126

(1) Select * From T_Book(2) Select * From T_Book LIMIT $offset, $rowsPerPage

127

COOKIE & SESSIONCOOKIE & SESSIONNội dung 8

128

COOKIECOOKIENội dung 8.1

Cookie – Giới thiệuCookie – Giới thiệu

Là 1 tập tin được server lưu xuống máy của client

Mỗi lần client gửi request 1 trang web, đồng thời sẽ gửi kèm file cookie đã lưu lần trước lên server

Các điều khiển xử lý thông tin (lưu, lấy) do server thực hiện

Thường được sử dụng để lưu thông tin cá nhân của client

Webserver

cookie

setcookie

$_COOKIE

Client

129

Cookie – Cú pháp sử dụngCookie – Cú pháp sử dụng• Lệnh ghi cookie

setcookie(name, value, expire, path, domain);setrawcookie(name, value, expire, path, domain);

• name : Tên cookie• value : Giá trị cookie• expire : Ngày/khoảng thời gian hết hạn hết hạn• path : Đường dẫn mà cookie được gởi đi• domain : Xác định tên miền mà cookie được gởi đi• Bắt buộc phải xuất hiện trước thẻ <html>

• Lấy giá trị cookieecho $_COOKIE[“cookieName"];

• Xóa cookiesetcookie(“cookieName", "", time() -3600);

130

Cookie – Ví dụCookie – Ví dụ

cookie

setcookie

$_COOKIE[fieldName]

Client

Lưu username & password

Webserver

131

132

SESSIONSESSIONNội dung 8.2

SessionSession

Là thông tin về client được server lưu trên máy của server

Sử dụng session lưu định danh duy nhất cho từng client

Mục đích lưu biến dữ liệu dùng chung cho nhiều trang trong 1 phiên làm việc của client

Webserver

Cookie: PHPSESSID

session_start

$_SESSION[sessionVar]

Client

133

Session – Cú pháp sử dụngSession – Cú pháp sử dụng• Khởi động Session

session_start();

– Bắt buộc phải xuất hiện trước thẻ <html>

• Ghi & Đọc giá trị Session$_SESSION[“sessionVar”] = value ;

$_SESSION[“sessionVar”] = array();$_SESSION[“sessionVar”][] = value;

if (isset($_SESSION[“sessionVar"])echo $_SESSION[“sessionVar"];

• Hủy Biến trong Sessionunset($_SESSION[“sessionVar”]);

• Hủy cả Sessionsession_destroy(); 134

Session - Ứng dụng cho Giỏ hàng (shopping cart)Session - Ứng dụng cho Giỏ hàng (shopping cart)

Session : Array : Mathang [ ]

Session : Array : Soluong[ ]

{‘Book1’, ‘Book2’, ‘Book3’}

{13, 2, 7}

Xóa biến trong Session

Ghi xuống CSDL

Ví dụ135

So sánh : Session – Cookie – Database So sánh : Session – Cookie – Database

Internet or Intranet

Web Server

Database Server

Client 3

Client 2

Client 1

Cookie3

Cookie2

Cookie1

Session 2 Session 3

Session 1

Thông tin chia sẽ Vị trí lưu trữ

Thời gian tồn tại

Số client Số trang web sử dụng

Database/File Server Dài Nhiều Nhiều

Session Server Ngắn 1 Nhiều

Cookies Client Dài 1 Nhiều136

137