Bài giảng Thiết kế và lập trình Web - Bài 5: PHP cơ bản
PHP là gì?
– PHP = PHP Hypertext Preprocessor, tên gốc là Personal
Home Pages.
– PHP là ngôn ngữ viết web động.
– Bộ biên dịch PHP là phần mềm mã nguồn mở.
– Là ngôn ngữ server-side script, tương tự như ASP, JSP,
thực thi ở phía WebServer
– Thường kết nối với hệ quản trị CSDL MySQL
PHP : Rasmus Lerdorf in 1994 (được phát triển để phát sinh các form đăng
nhập sử dụng giao thức HTTP của Unix)
PHP 2 (1995) : Chuyển sang ngôn ngữ script xử lý trên server. Hỗ trợ
CSDL, Upload File, khai báo biến, mảng, hàm đệ quy, câu điều kiện, biểu
thức,
PHP 3 (1998) : Hỗ trợ ODBC, đa hệ điều hành, giao thức email (SNMP,
IMAP), bộ phân tích mã PHP (parser) của Zeev Suraski và Andi Gutmans
PHP 4 (2000) : Trợ thành một thành phần độc lập cho các webserver. Parse
đổi tên thành Zend Engine. Bổ sung các tính năng bảo mật cho PHP
PHP 5 (2005) : Bổ sung Zend Engine II hỗ trợ lập trình HĐT, XML, SOAP
Tóm tắt nội dung tài liệu: Bài giảng Thiết kế và lập trình Web - Bài 5: PHP cơ bản
Thiết kế và lập trình Web Viện CNTT & TT Bài 5 PHP cơ bản Thiết kế và lập trình Web 1. Giới thiệu về PHP PHP là gì? – PHP = PHP Hypertext Preprocessor, tên gốc là Personal Home Pages. – PHP là ngôn ngữ viết web động. – Bộ biên dịch PHP là phần mềm mã nguồn mở. – Là ngôn ngữ server-side script, tương tự như ASP, JSP, thực thi ở phía WebServer – Thường kết nối với hệ quản trị CSDL MySQL Thiết kế và lập trình Web Giới thiệu về PHP – Lịch sử phát triển PHP : Rasmus Lerdorf in 1994 (được phát triển để phát sinh các form đăng nhập sử dụng giao thức HTTP của Unix) PHP 2 (1995) : Chuyển sang ngôn ngữ script xử lý trên server. Hỗ trợ CSDL, Upload File, khai báo biến, mảng, hàm đệ quy, câu điều kiện, biểu thức, PHP 3 (1998) : Hỗ trợ ODBC, đa hệ điều hành, giao thức email (SNMP, IMAP), bộ phân tích mã PHP (parser) của Zeev Suraski và Andi Gutmans PHP 4 (2000) : Trợ thành một thành phần độc lập cho các webserver. Parse đổi tên thành Zend Engine. Bổ sung các tính năng bảo mật cho PHP PHP 5 (2005) : Bổ sung Zend Engine II hỗ trợ lập trình HĐT, XML, SOAP cho Web Services, SQLite Thiết kế và lập trình Web Cơ chế hoạt động của WebServer 2 Internet or Intranet www.example.com Webserver Apache or IIS ServerSide Script Parser (PHP, ASP, ..) Database Server Disk driver 3 4 5 6 7 4 HTML Thiết kế và lập trình Web 5 Cài đặt Để thiết kế trang web sử dụng PHP & MySQL, cần cài đặt: – Máy chủ web Apache – PHP – Hệ quản trị cơ sở dữ liệu MySQL XAMPP Thiết kế và lập trình Web Một số khái niệm PHP nhúng vào HTML – Có thể nhúng mã PHP vào mọi vị trí trong tài liệu HTML. – Chèn mã PHP vào file HTML: Có 3 dạng chính echo("Hello World!"); – Phần mở rộng của tập tin chứa mã PHP thường là .php: index.php, giohang.php, ... Thiết kế và lập trình Web Ví dụ 1 7 Thiết kế và lập trình Web Ví dụ 2 8 Thiết kế và lập trình Web Ví dụ 3 9 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 Thiết kế và lập trình Web Một số khái niệm Đặc điểm của PHP – Có khả năng đối tượng – Thông dịch – Phân biệt chữ hoa và chữ thường – Lệnh kết thúc bằng dấu chấm phẩy “ ; ” – PHP là một ngôn ngữ kịch bản ràng buộc lỏng: – Không cần khai báo trước, việc khai báo sẽ được tự động thực hiện khi sử dụng. – Không cần định kiểu. Kiểu giá trị sẽ được xác định phù hợp với dữ liệu đầu vào Thiết kế và lập trình Web Một số khái niệm Tại sao sử dụng PHP? – PHP dễ học, dễ viết. – Có khả năng truy xuất hầu hết CSDL có sẵn. – Thể hiện được tính bền vững, chặn chẽ, phát triển không giới hạn. – PHP miễn phí, mã nguồn mở. Thiết kế và lập trình Web Viết ghi chú trong PHP Để ghi chú trong PHP có 3 dạng sau: Dạng 1: # đây là ghi chú. Dạng này chỉ áp dụng ghi đó chỉ nằm trên một dòng văn bản Dạng 2: // đây là ghi chú. Dạng này cũng chỉ áp dụng ghi đó chỉ nằm trên một dòng văn bản Dạng 3: /* đây là một ghi chú dài Áp dụng cho nhiều hàng */ Thiết kế và lập trình Web 13 Khai báo và gán giá trị cho biến Khai báo biến – Cú pháp: $tên_biến – Ví dụ: $tong Quy tắc đặt tên cho biến – Tên biến phải bắt đầu bằng ký tự $, theo sau là 1 ký tự hoặc dấu _, tiếp đó là ký tự, ký số hoặc dấu _ – Nên khởi tạo giá trị ban đầu cho biến – Tên biến không trùng với tên hàm – Biến không nên bắt đầu bằng ký số – Tên biến có phân biệt chữ HOA – chữ thường Thiết kế và lập trình Web Khai báo biến – Ví dụ Ví dụ : 14 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? Thiết kế và lập trình Web 15 Khai báo và gán giá trị cho biến Gán giá trị cho biến – Gán giá trị trực tiếp • Cú pháp: $tên_biến = ; • Ví dụ: <?php $so_luong = 100; ?> Thiết kế và lập trình Web 16 Phạm vi hoạt động của biến Biến cục bộ – Biến được khai báo trong hàm => biến cục bộ – Khi ra khỏi hàm => biến cục bộ và giá trị của nó sẽ bị hủy bỏ – Lưu ý: khi có cùng tên thì biến bên trong hàm và biến bên ngoài hàm là hai biến hoàn toàn khác nhau Thiết kế và lập trình Web 17 Phạm vi hoạt động của biến Biến cục bộ – Ví dụ: <?php function Test() { $a=5; echo $a; // phạm vi cục bộ } Test(); → 5 echo $a; → khong co ?> Thiết kế và lập trình Web 18 Phạm vi hoạt động của biến Biến toàn cục – Có thể truy xuất bất cứ nơi nào trong trang – Khi muốn sử dụng và cập nhật biến toàn cục trong hàm thì phải dùng từ khóa global phía trước biến hoặc dùng $_GLOBALS[“tên_biến”] Thiết kế và lập trình Web 19 Phạm vi hoạt động của biến Biến toàn cục – Ví dụ: dùng từ khóa global <?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; → 3 ?> Thiết kế và lập trình Web 20 Phạm vi hoạt động của biến Biến toàn cục – Ví dụ: dùng biến $_GLOBALS <?php $a = 1; $b = 2; function Sum() { $_GLOBALS['b'] = $_GLOBALS['a'] + $_GLOBALS['b']; } Sum(); echo $b; → 3 ?> Thiết kế và lập trình Web 21 Phạm vi hoạt động của biến Biến static – Không mất đi giá trị khi ra khỏi hàm – Sẽ giữ nguyên giá trị trước đó khi hàm được gọi một lần nữa – Phía trước tên biến static phải có từ khóa static Thiết kế và lập trình Web 22 Phạm vi hoạt động của biến Biến static – Ví dụ: <?php function Test() { static $a = 0; echo $a; $a++; } Test(); → 0 Test(); → 1 Test(); → 2 ?> Thiết kế và lập trình Web Xuất dữ liệu ra trình duyệt 23 Cú pháp: void echo(tham số chuổi [, tham số chuổi [, tham số chuổi]]) Ví dụ: echo() print() printf() sprintf() Thiết kế và lập trình Web Xuất dữ liệu ra trình duyệt 24 Cú pháp: int print(tham số) Ví dụ: echo() print() printf() sprintf() Thiết kế và lập trình Web Xuất dữ liệu ra trình duyệt 25 Cú pháp: boolean printf(string format [, mixed args]) Ví dụ: echo() print() printf() sprintf() Thiết kế và lập trình Web Xuất dữ liệu ra trình duyệt 26 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 Thiết kế và lập trình Web Xuất dữ liệu ra trình duyệt 27 Cú pháp: string sprint(string format [, mixed args]) Ví dụ: echo() print() printf() sprintf() $cost = sprintf("$%.2f", 43.2); // $cost = $43.20 Thiết kế và lập trình Web Xuất dữ liệu ra trình duyệt echo() print() printf() sprintf() 28 Xuất chuỗi “tĩnh” Xuất chuỗi “động” Thiết kế và lập trình Web 29 Khai báo hằng Dùng hàm define() để định nghĩa. Một khi hằng được định nghĩa, nó không bị thay đổi. – Đặt tên hằng cũng giống như quy tắc đặt tên biến. – Chỉ có các kiểu dữ liệu boolean, integer, float, string mới có thể chứa các hằng. Cú pháp: define(“TÊN_HẰNG”, giá_trị); – Ví dụ: khai báo hằng số PI có giá trị là 3.14 <?php define(“PI”, 3.14); $r=10; $s= PI * pow($r ,2); → $s = 314 $p = 2 * PI * $r; → $p = 62.8 ?> Thiết kế và lập trình Web Kiểu dữ liêu trong PHP PHP hỗ trợ 4 kiểu dữ liệu –Kiểu số. –Kiểu chuỗi –Kiểu lôgic –Kiểu mảng và kiểu đối tượng Thiết kế và lập trình Web 31 Kiểu dữ liệu – mô tả Boolean: chỉ có một trong hai giá trị là TRUE và FALSE – Ví dụ: <?php $ket_qua = True; ?> Thiết kế và lập trình Web 32 Kiểu dữ liệu – mô tả Integer: Kiểu số nguyên. Giá trị có thể là số trong hệ thập phân, thập lục phân và bát phân. – Ví dụ: <?php $a = 1234; // hệ thập phân $b = -123; // số âm hệ thập phân $c = 0123; // hệ bát phân (bắt đầu bằng 0 theo sau là các ký số) $d = 0x1A; // hệ thập lục phân (bắt đầu bằng 0x theo sau là các ký số) ?> Thiết kế và lập trình Web 33 Kiểu dữ liệu – mô tả Float / double: Kiểu dữ liệu số thực. – Ví dụ: <?php $a = 1.234; $b = 1.2e3; → 1.2 * 1000 = 1200 ?> Thiết kế và lập trình Web 34 Kiểu dữ liệu – mô tả String: Kiểu dữ liệu chuỗi, ký tự. Trong đó, mỗi ký tự chiếm 1 byte. Mỗi chuỗi có thể chứa một hay nhiều ký tự thuộc 256 ký tự khác nhau. Chuỗi không có giới hạn về kích thước. – Ví dụ: <?php $chuoi = ‘Chúc mừng năm mới’; echo “$chuoi 2008”; → “Chúc mừng năm mới 2008” ?> Thiết kế và lập trình Web Kiểu chuỗi Giới hạn bởi nháy đơn (‘) hoặc kép (“) Chuỗi đặt trong nháy kép bị thay thế và xử lý ký tự thoát. Trong nháy đơn thì không. PHP không hỗ trợ Unicode, để làm việc với Unicode bạn phải sử dụng UTF8 với các hàm utf8_encode() – utf8_decode(). Ví dụ: $a = “Hello”; $b = “$a world”; //tương đương $b=“Hello world” $c = ‘$a world’; //$c=‘$a world’ (không thay đổi) Thiết kế và lập trình Web 36 Kiểu dữ liệu – mô tả <?php // tạo và in một mảng $array = array(1, 2, 3, 4, 5); print_r($array); ?> Array: Kiểu dữ liệu mảng các phần tử – Ví dụ: Thiết kế và lập trình Web 37 Kiểu dữ liệu – mô tả Array: – $n = 100; $arr1 = array($n); – $arr2 = array(giá trị 1, giá trị 2,..., giá trị n); – $arr3 = array(); //Mảng động – $arr4 = array(hoten => “HTùng”, //Mảng kết hợp quequan => “LX”, tuoi => 24, IQ => “Rất cao”); Thiết kế và lập trình Web 38 Kiểu dữ liệu – mô tả <?php class a { function chao_a() { echo "Xin chào a"; } } $b = new a(); $b->chao_a(); // Kết quả: “Xin chào a” ?> Object: Kiểu dữ liệu là đối tượng của một lớp – Ví dụ: Thiết kế và lập trình Web 39 Chuyển đổi kiểu dữ liệu Trong quá trình tính toán, kiểu dữ liệu cũ của biến có thể không còn phù hợp nữa (kết quả tính toán vượt khỏi phạm vi của kiểu dữ liệu cũ) => chuyển đổi kiểu dữ liệu Cách thực hiện: ghi tên kiểu dữ liệu mà biến muốn chuyển đổi vào phía trước biến – Ví dụ: <?php $don_gia = 5000; $so_luong = 100; $thanh_tien = (double)($so_luong*$don_gia); ?> Thiết kế và lập trình Web Chuyển kiểu dữ liệu Cú pháp – Cách 1 (automatic) $var = "100" + 15; $var = "100" + 15.0; $var = 39 . " Steps"; – 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 Thiết kế và lập trình Web Các toán tử Các phép toán cơ bản: Phép gán: $biến = biểu_thức; Các phép toán số học: +, -, *, /, % Các phép toán so sánh: ==, ===, !=, >=, , < Các phép toán kết hợp: ++, --, +=, -=, *=, /= Các phép toán logic: !, &&, || Toán tử tam phân: (điều_kiện ? giá_trị_1 : giá_trị_2) Phép ghép chuỗi: . (dấu chấm) Toán tử error: @, ngăn không cho thông báo lỗi – Ví dụ: $a = 10; $b = 0; $c = @$a / $b; 41 Thiết kế và lập trình Web Giáo viên: Hồ Diên Lợi Slides 42 of 180 Các phép toán trong PHP Phép toán toán học Phép toán Ví dụ Kết quả + $y =2; $x=$y+2; 4 - $y =2; $x=5-$y; 3 * $y =2; $x=$y*5; 10 / $y =5; $x=$y/2; 2.5 % $y =5%3; $x =16%8; 2 0 ++ $y =5; $x++; x=6 -- $y =5; $x--; x=4 Thiết kế và lập trình Web Giáo viên: Hồ Diên Lợi Slides 43 of 180 Các phép toán trong PHP Phép gán Phép toán Ví dụ Tương đương = $x=$y; $x=$y; += $x+=$y; $x=$x+$y; -= $x-=$y; $x=$x-$y; *= $x*=$y; $x=$x*$y; /= $x/=$y; $x=$x/$y; .= $x.=$y; $x=$x.$y; %= $x%=$y; $x=$x%$y; Thiết kế và lập trình Web Giáo viên: Hồ Diên Lợi Slides 44 of 180 Các phép toán trong PHP Phép so sánh Phép toán Ví dụ == 5==8 kết quả false != 5!=8 kết quả true 58 kết quả true > 5>8 kết quả false < 5<8 kết quả true >= 5>=8 kết quả false <= 5<=8 kết quả true === Bằng cả về giá trị và kiểu Thiết kế và lập trình Web 45 Toán tử so sánh Toán tử == – Thực hiện phép so sánh bằng – Ví dụ: <?php $a = “123”; $b = 123; $kq = “”; if ($a==$b) $kq = “a bằng b”; ?> Thiết kế và lập trình Web 46 Toán tử so sánh Toán tử === – Thực hiện phép so sánh bằng với các đối tượng có cùng kiểu dữ liệu – Ví dụ: <?php $a = “6”; $b = “6”; $kq = “”; if ($a===$b) $kq = “ a bằng b và có cùng kiểu dữ liệu”; ?> Thiết kế và lập trình Web Giáo viên: Hồ Diên Lợi Slides 47 of 180 Các phép toán trong PHP Phép toán logic Phép toán Ví dụ && $x=6; $y=3; ($x 1) kết quả true || $x=6; $y=3; ($x==5 || $y==5) kết quả false ! $x=6; $y=3; !($x==$y) kết quả true Thiết kế và lập trình Web 48 Toán tử nối chuỗi Sử dụng toán tử “.” để nối các chuỗi lại với nhau Ví dụ: <?php $chuoi_1 = “vietnam”; $chuoi_2 = “airline.com.vn”; $chuoi = $chuoi_1 . $chuoi_2; → “vietnamairline.com.vn” ?> Kết quả khi sử dụng toán tử nối chuỗi có kiểu là kiểu chuỗi Thiết kế và lập trình Web 49 Tham chiếu trong PHP Trong PHP tham chiếu có nghĩa là lấy cùng một giá trị bằng nhiều tên biến khác nhau. Ký hiệu tham chiếu: & <?php $a = 10; $b = &$a; echo $a; → 10 echo $b; → 10 ?> 10 $a $b Thiết kế và lập trình Web 50 Cấu trúc điều khiển trong PHP Cấu trúc rẽ nhánh Cấu trúc chọn lựa Cấu trúc lặp Sử dụng break và continue trong cấu trúc lặp Thiết kế và lập trình Web 51 Cấu trúc rẽ nhánh if if (điều kiện) { khối lệnh } – Điều kiện là một biểu thức logic trả về đúng (TRUE) hoặc sai (FALSE) if(điều kiện) { khối lệnh 1 } else { khối lệnh 2 } Thiết kế và lập trình Web 52 Toán tử ?: Cú pháp: (điều kiện)?:<kết quả khi điều kiện sai> – Ý nghĩa: dùng để thay thế cho cấu trúc điều khiển ifelse với một câu lệnh bên trong – Có thể lồng nhiều toán tử ?: với nhau Thiết kế và lập trình Web 53 Cấu trúc rẽ nhánh if Dạng: if elseif else – Cú pháp: if(điều kiện 1) { khối lệnh 1 } elseif(điều kiện 2) { khối lệnh 2 } else { khối lệnh khi không thỏa các điều kiện trên } Thiết kế và lập trình Web 54 Cấu trúc rẽ nhánh if Dạng: if elseif else – Ví dụ: Tính thành tiền cho một hàng hóa: khi số lượng nhỏ hơn 10 đơn vị thì không giảm giá, từ 10->20 đơn vị thì giảm 5%, trên 20 đơn vị thì giảm 10% <?php $so_luong = $_POST[“so_luong”]; $don_gia = $_POST[“don_gia”]; if ($so_luong <10) $thanh_tien = $so_luong * $don_gia; elseif ($so_luong >= 10 and $so_luong <=20) $thanh_tien = ($so_luong * $don_gia) * 0.95; else $thanh_tien = ($so_luong * $don_gia) * 0.9; ?> Thiết kế và lập trình Web 55 Cấu trúc chọn lựa switch – Cú pháp switch(biến điều kiện) { case giá trị 1: khố ... một số theo một số mũ chỉ định – Cú pháp: pow(số, lũy_thừa) rand(): kết quả trả về là một giá trị số nguyên ngẫu nhiên bất kỳ (nằm trong khoảng từ 0 đến 32768) – Khi hàm rand() có hai tham số là giá trị nhỏ nhất (min) và giá trị lớn nhất (max) thì giá trị trả về sẽ là một giá trị số nằm trong khoảng từ giá trị nhỏ nhất đến giá trị lớn nhất. – Cú pháp: rand ([min, max]) <?php echo pow(2,5); → 32 ?> <?php echo rand(); → 10325 echo rand(); → 7774 echo rand(10, 100); → 57 ?> Thiết kế và lập trình Web 93 Các hàm toán học round(): kết quả trả về là một số đã được làm tròn. – Nếu chỉ có một tham số là số được truyền vào thì kết quả trả về là một số nguyên. – Nếu có cả hai tham số là số và vị trí làm tròn thì kết quả trả về là một số được làm tròn dựa trên vị trí làm tròn. Cú pháp: round (số [, vị trí làm tròn]) – Vị trí làm tròn là một số nguyên âm hoặc nguyên dương dùng để chỉ định vị trí muốn làm tròn, được tính từ vị trí dấu chấm thập phân <?php echo round(3.4); → 3 echo round(3.5); → 4 echo round(577.545, 2); → 577.55 echo round(577.545,-1); → 580 ?> Thiết kế và lập trình Web 94 Các hàm toán học sqrt(): tính căn bậc hai của một số dương bất kỳ – Kết quả trả về là căn bậc hai của số – Cú pháp: sqrt(số) <?php echo sqrt(9); → 3 ?> Thiết kế và lập trình Web 95 Các hàm chuỗi Định dạng chuỗi So sánh chuỗi Tìm kiếm và thay thế Kết hợp và tách chuỗi Thiết kế và lập trình Web 96 Định dạng chuỗi - Bỏ ký tự thừa ltrim() – Loại bỏ các ký tự thừa bên trái chuỗi. – Kết quả trả về là một chuỗi không có ký tự thừa bên trái chuỗi. – Cú pháp: ltrim(str [, charlist]) • Tham số bắt buộc là chuỗi str • Tham số tùy chọn là danh sách các ký tự muốn loại bỏ bên trái chuỗi. <?php $text = “\t\tXin chào các bạn :) ...”; echo ltrim($text); → “Xin chào các bạn :) ...” ?> Thiết kế và lập trình Web 97 Định dạng chuỗi - Bỏ ký tự thừa rtrim(), chop() – Loại bỏ các ký tự thừa bên phải chuỗi. – Kết quả trả về là một chuỗi không có ký tự thừa bên phải chuỗi. – Cú pháp: rtrim(str [, charlist]) chop(str [, charlist]) <?php $text = “\t\tXin chào các bạn :) ... ”; echo rtrim($text); → “\t\tXin chào các bạn :) ...” echo chop($text, “\t.”); → “Xin chào các bạn :)” ?> Thiết kế và lập trình Web 98 Định dạng chuỗi - Bỏ ký tự thừa trim() – Loại bỏ các ký tự thừa bên phải và bên trái chuỗi. – Kết quả trả về là một chuỗi không có ký tự thừa bên phải và bên trái chuỗi. – Cú pháp: trim(str [, charlist]) <?php $text = “\t\tXin chào các bạn :) ... ”; echo trim($text); → “Xin chào các bạn :) ...” echo trim($text, “\t.”); → “Xin chào các bạn :)” ?> Thiết kế và lập trình Web 99 Định dạng chuỗi - Bỏ ký tự thừa Lưu ý: nếu không có tham số thứ hai thì hàm ltrim(), rtrim(), chop() sẽ tự động loại bỏ các ký tự sau: – " " (ASCII 32 (0x20)), ký tự khoảng trắng. – "\t" (ASCII 9 (0x09)), ký tự tab. – "\n" (ASCII 10 (0x0A)), ký tự về đầu dòng mới. – "\r" (ASCII 13 (0x0D)), ký tự xuống dòng. – "\0" (ASCII 0 (0x00)), byte NULL. – "\x0B" (ASCII 11 (0x0B)), tab dọc. Ngoài ra, có thể liệt kê các ký tự muốn loại bỏ ở charlist Thiết kế và lập trình Web 100 Định dạng chuỗi – Chuyển đổi kiểu chữ strtoupper(): chuyển đổi chữ thành chữ HOA strtolower(): chuyển đổi chữ thành chữ thường ucfirst(): viết hoa ký tự đầu tiên của chuỗi ucwords(): viết hoa ký tự đầu tiên của mỗi từ Cú pháp strtoupper(str) strtolower(str) ucfirst(str) ucwords(str) <?php echo strtoupper(“happy new year”); → “HAPPY NEW YEAR” echo strtolower(“HAPPY NEW YEAR”); → “happy new year” echo ucfirst(“happy new year”); → “Happy new year” echo ucwords(“happy new year”); → “Happy New Year” ?> Thiết kế và lập trình Web 101 Định dạng chuỗi – Chiều dài chuỗi strlen() – Kết quả trả về là chiều dài của một chuỗi – Cú pháp strlen(str) – Ví dụ: <?php echo strlen(“abcdef”); → 6 ?> Thiết kế và lập trình Web 102 Định dạng chuỗi – Đếm ký tự count_chars() – Kết quả trả về là một mảng với các phần tử có khóa là mã ASCII và giá trị là số lần xuất hiện của các ký tự trong chuỗi. – Thứ tự của các khóa được sắp tăng dần theo bảng mã ASCII – Cú pháp count_chars(str [, mode]) Thiết kế và lập trình Web 103 Định dạng chuỗi – Đếm ký tự Mode: là kiểu đếm (tham số tùy chọn) Mode = 0 (hoặc không sử dụng mode): liệt kê tất cả các ký tự ASCII từ 0 đến 255 và số lần xuất hiện. Mode = 1 : chỉ liệt kê danh sách có số lần xuất hiện lớn hơn 0 Mode = 2: chỉ liệt kê danh sách có số lần xuất hiện bằng 0 Mode = 3: chuỗi mới mà mỗi ký tự trong chuỗi gốc chỉ xuất hiện ở chuỗi mới 1 lần theo thứ tự tăng dần của bảng mã ASCII. Mode = 4: trả về một chuỗi mới với các ký tự theo thứ tự tăng dần theo bảng mã ASCII, mà các ký tự này không xuất hiện ở chuỗi gốc. Thiết kế và lập trình Web 104 Định dạng chuỗi – Đếm ký tự Ví dụ: mode = 1 <?php $str = "Hello World!"; print_r(count_chars($str,1)); → Array ( [32] => 1 [33] => 1 [72] => 1 [87] => 1 [100] => 1 [101] => 1 [108] => 3 [111] => 2 [114] => 1 ) ?> Thiết kế và lập trình Web 105 So sánh chuỗi – Có phân biệt HOA - thường strcmp() – So sánh hai chuỗi có phân biệt chữ HOA, chữ thường. – Kết quả trả về: • =0: nếu hai chuỗi bằng nhau • <0: nếu chuỗi str1 nhỏ hơn chuỗi str2 • >0: nếu chuỗi str1 lớn hơn chuỗi str2 Cú pháp strcmp(str1, str2 ) Lưu ý: Việc so sánh chuỗi dựa trên bảng mã ASCII của các ký tự Thiết kế và lập trình Web 106 So sánh chuỗi – Có phân biệt HOA - thường Ví dụ: <?php echo strcmp(“hello”, “Hello”); → 1 (chuỗi thứ nhất lớn hơn chuỗi thứ hai) vì trong bảng mã ASCII ký tự ’h’ có giá trị là 101 lớn hơn ký tự ’H’ có giá trị là 72, các ký tự còn lại trong chuỗi đều giống nhau echo strcmp(“Hôm nay”, “Thứ tư”); → -1 ?> Thiết kế và lập trình Web 107 So sánh chuỗi – Không phân biệt HOA - thường strcasecmp(), strnatcmp() – So sánh hai chuỗi không phân biệt chữ HOA, chữ thường. – Kết quả trả về: • =0: nếu hai chuỗi bằng nhau • <0: nếu chuỗi str1 nhỏ hơn chuỗi str2 • >0: nếu chuỗi str1 lớn hơn chuỗi str2 Cú pháp strcasecmp(str1, str2) strnatcmp(str1, str2) <?php echo strnatcmp(“hello”, “Hello”); → 0 ?> Thiết kế và lập trình Web 108 Tìm kiếm và thay thế - Tìm một chuỗi trong chuỗi strstr(), strchr() – Tìm một chuỗi trong chuỗi. – Kết quả trả về là một chuỗi con của chuỗi str1 được lấy từ vị trí xuất hiện đầu tiên của chuỗi str2 đến hết chuỗi str1 nếu tìm thấy chuỗi str2 trong chuỗi str1, nếu không tìm thấy chuỗi str2 trong chuỗi str1 thì trả về FALSE. Cú pháp strstr(str1, str2) strchr(str1, str2) <?php $email = “phuong@yahoo.com”; $domain = strstr($email, “@”); echo $domain; →“@yahoo.com” ?> Thiết kế và lập trình Web 109 Tìm kiếm và thay thế - Tìm vị trí của chuỗi con strpos() – Kết quả trả về là vị trí tìm thấy của chuỗi str2 trong chuỗi str1, nếu trong chuỗi str1 có nhiều chuỗi str2 thì kết quả trả về sẽ là vị trí đầu tiên mà chuỗi str2 xuất hiện trong chuỗi str1. Nếu không tìm thấy chuỗi str2 trong chuỗi str1 thì kết quả trả về là FALSE Cú pháp strpos(str1, str2) Lưu ý: Để kiểm tra kết quả thì phải dùng toán tử === thay cho toán tử == Thiết kế và lập trình Web 110 Tìm kiếm và thay thế - Tìm vị trí của chuỗi con Ví dụ: <?php $str1 = “abc def a”; $str2 = “g”; $vi_tri = strpos($str1, $str2); if($vi_tri === FALSE) echo “Không tìm thấy”; else echo “Vị trí tìm thấy : “. $vi_tri; ?> Thiết kế và lập trình Web 111 Tìm kiếm và thay thế str_replace() – Tìm kiếm chuỗi str1 trong chuỗi str, nếu tìm thấy thì thay thế chuỗi str1 bằng chuỗi str2 trong chuỗi str. Cú pháp str_replace(str1, str2, str) <?php echo str_replace(“em”, “bé”, “Hôm qua em đến trường”); → “Hôm qua bé đến trường” ?> Thiết kế và lập trình Web 112 Kết hợp và tách chuỗi – Tách chuỗi explode() – Tách chuỗi str thành nhiều chuỗi con bằng cách chỉ định chuỗi tách separator và gán từng chuỗi con này vào các phần tử của mảng Cú pháp explode(separator, str) <?php $chuoi = “happy new year”; $mang_chuoi = explode(“ ”, $chuoi); echo $mang_chuoi[0]; → “happy” echo $mang_chuoi[1]; → “new” echo $mang_chuoi[2]; → “year” ?> Thiết kế và lập trình Web 113 Kết hợp và tách chuỗi – Kết hợp chuỗi implode() – Kết hợp các phần tử của mảng thành một chuỗi và các phần tử khi ráp thành chuỗi sẽ cách nhau bằng chỉ định cách separator Cú pháp implode(separator, array) <?php $mang_chuoi = array(“happy”, “new”, “year”); $chuoi = implode(“ ”, $mang_chuoi); echo $chuoi; → “happy new year” ?> Thiết kế và lập trình Web 114 Bài tập Xây dựng hàm normalize($st) chuẩn hóa một chuổi văn bản(dạng đơn giản): không có ký tự trống ở hai đầu, giữa 2 từ chỉ có duy nhất một ký tự trống. Thiết kế và lập trình Web 115 Bài tập <?php $str=" Happy New Year 2014 "; echo "Chuỗi ban đầu ". $str; function normalize($st){ $str=trim($str); // cắt các ký tự trống ở hai đầu $twoSpace=" "; $oneSpace=" "; while(strpos($st,$twoSpace)>0){ $st=str_replace($twoSpace,$oneSpace,$st); } return $st; } echo "Sau khi chuẩn hóa ". normalize($str); ?> Thiết kế và lập trình Web 116 Các hàm thời gian Kiểm tra ngày hợp lệ Định dạng ngày Lấy các giá trị của ngày hiện tại Lấy thời gian hiện tại Chuyển đổi ngày Chuyển chuỗi thời gian thành giá trị thời gian Đổi thời gian sang đơn vị giây Định dạng thời gian thành số nguyên Thiết kế và lập trình Web 117 Kiểm tra ngày hợp lệ checkdate() – Kiểm tra ngày với tháng, ngày, năm được truyền vào, nếu ngày hợp lệ thì kết quả trả về là TRUE, ngược lại trả về FALSE Cú pháp: checkdate(tháng, ngày, năm) <?php echo checkdate(11,30,2007); → TRUE ?> Thiết kế và lập trình Web 118 Định dạng ngày date() – Kết quả trả về là ngày hiện tại sau khi đã được định dạng Cú pháp: date(chuỗi định dạng) <?php echo date(“d/m/Y h:m:s”); → 28-11-2007 11:11:07 echo date(“D-M-Y”); → Thu–Dec-2007 ?> Thiết kế và lập trình Web 119 Lấy các giá trị của ngày hiện tại getdate() – Kết quả trả về là một mảng gồm 10 phần tử (có khóa dạng chuỗi) chứa các thông tin cần thiết của ngày hiện tại. [seconds] – giây, [minutes] - phút, [hours] – giờ [mday] – ngày trong tháng, [wday] – ngày trong tuần [mon] – tháng (dạng số), [year] – năm, [yday] – ngày trong năm [weekday] – thứ trong tuần, [month] – tháng (dạng chữ) Thiết kế và lập trình Web 120 Lấy các giá trị của ngày hiện tại Cú pháp: getdate() Ví dụ: <?php $today = getdate(); print_r($today); ?> → Array ( [seconds] => 18 [minutes] => 18 [hours] => 13 [mday] => 28 [wday] => 3 [mon] => 11 [year] => 2007 [yday] => 331 [weekday] => Wednesday [month] => November ) Thiết kế và lập trình Web 121 Lấy thời gian hiện tại time() – Kết quả trả về là thời gian hiện tại được đo lường theo giá trị giây (tính từ 1/1/1970 00:00:00 GMT) Cú pháp: time() <?php $tuan_sau = time() + (7 * 24 * 60 * 60); // 7 days; 24 hours; 60 mins; 60secs echo ”Hiện tại:”. date(”Y-m-d”) .""; → Hiện tại: 2007-11-28 echo ”Tuần sau: ”. date(”Y-m-d”, $tuan_sau) .""; → Tuần sau: 2007-12-05 ?> Thiết kế và lập trình Web 122 Chuyển chuỗi thời gian thành giá trị thời gian strtotime() – Kết quả trả về là tổng số giây của thời gian nếu chuỗi thời gian đúng, ngược lại sẽ trả về FALSE – Tổng số giây = thời gian được truyền vào trong hàm strtotime() - January 1 1970 00:00:00 (vì thời gian bắt đầu được tính từ: January 1 1970 00:00:00) Cú pháp: strtotime(chuỗi thời gian) <?php echo strtotime("now"); → 1.204.795.981 // Với now = 06-03-2008 16:33:01 ?> Thiết kế và lập trình Web CƠ CHẾ TRUYỀN NHẬN DỮ LIỆU Thiết kế và lập trình Web Cơ chế truyền nhận dữ liệu ? Thiết kế và lập trình Web Cơ chế truyền nhận dữ liệu Trang web nhập dữ liệu : – Sử dụng đối tượng – 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”] Thiết kế và lập trình Web Cơ chế truyền nhận dữ liệu – Trang web nhập liệu timSach.php Tìm sách Từ khóa : Thiết kế và lập trình Web Cơ chế truyền nhận dữ liệu – Trang web nhập liệu xltimSach.php <?php $sTukhoa = $_REQUEST["txtTukhoa"]; ?> Tìm sách Từ khóa tìm sách là : Kết quả tìm là : Thiết kế và lập trình Web Cơ chế truyền nhận dữ liệu – Trang web nhập liệu xuly.php Từ khóa : <?php $sTukhoa = $_REQUEST["txtTukhoa"]; if (isset($sTukhoa)) { print "Từ khóa tìm sách là : $sTukhoa"; echo "Kết quả tìm là : "; } ?> Thiết kế và lập trình Web Truyền/Nhận qua Phương thức GET Tham số truyền đi qua địa chỉ URL – – Ví dụ: • Nhận dữ liệu thông qua biến toàn cục của PHP – $_GET[“FieldName”] – $_REQUEST[“FieldName”] Thiết kế và lập trình Web Phươ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 Thiết kế và lập trình Web Ví dụ File: GET.HTM Input data Xem chi tiết Thiết kế và lập trình Web Ví dụ (tt) File: CHITIET.PHP Input data <?php echo "Ma dien thoai la " . $_GET["Ma"]; ?> Thiết kế và lập trình Web Truyề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”] Thiết kế và lập trình Web Phươ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 Thiết kế và lập trình Web Bài tập áp dụng Tạo 1 trang web với hộp thoại nhập liệu username và password. – Nếu người sử dụng nhập thông tin username/password là admin/12345 thì xuất ra thông báo "welcome, admin" với kiểu chữ Tahoma, màu đỏ. – Ngược lại nếu nhập sai thì xuất thông báo "Username hoặc password sai. Vui lòng nhập lại. 135 Thiết kế và lập trình Web Bài tập áp dụng Trang login.html 136 Thiết kế và lập trình Web Bài tập áp dụng Trang checklogin.php 137
File đính kèm:
- bai_giang_thiet_ke_va_lap_trinh_web_bai_5_php_co_ban.pdf