Upload
tehya
View
90
Download
3
Embed Size (px)
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, ¶meters){ 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