Bài giảng Các hệ thống mã nguồn mở - Chương 4: Ngôn ngữ kịch bản PHP cơ bản

pptx 39 trang phuongnguyen 2320
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Các hệ thống mã nguồn mở - Chương 4: Ngôn ngữ kịch bản PHP cơ bản", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptxbai_giang_cac_he_thong_ma_nguon_mo_chuong_4_ngon_ngu_kich_ba.pptx

Nội dung text: Bài giảng Các hệ thống mã nguồn mở - Chương 4: Ngôn ngữ kịch bản PHP cơ bản

  1. Môn Các Hệ Thống Mã Nguồn Mở 1 Chương 4 : NGÔN NGỮ KỊCH BẢN PHP CƠ BẢN Giảng viên : ThS. Nguyễn Minh Thành Email : thanhnm@itc.edu.vn
  2. Môn Các Hệ Thống Mã Nguồn Mở 2 Nội Dung 1. Giới thiệu về PHP 2. Chuỗi kí tự 3. Dữ liệu Ngày 4. Mảng 5. Phương thức nhận dữ liệu POST & GET 6. Hàm
  3. Môn Các Hệ Thống Mã Nguồn Mở 3 Giới Thiệu về PHP I.1 Lịch sử : PHP (Hypertext Preprocessor) là ngôn ngữ script trên server được thiết kế để dễ dàng xây dựng các trang Web động. Ngôn ngữ PHP ra đời năm 1994 Rasmus Lerdorf (1968, GreenLand) sau đó được phát triển bởi nhiều người trải qua nhiều phiên bản. Phiên bản đang phổ biến là PHP 5.0 đã được công bố 7/2004.Phiên bản mới nhất là 5.4.3 Ưu điểm :Mã nguồn mở (open source code) - Miễn phí, download dễ dàng từ Internet. - Ngôn ngữ rất dễ học, dễ viết. - Mã nguồn không phải sửa lại nhiều khi viết chạy cho các hệ điều hành từ Windows, Linux, Unix Tên gọi ban đầu :'Personal Home Page Tools’ Xem :
  4. Môn Các Hệ Thống Mã Nguồn Mở 4 Viết Script PHP • Script PHP có thể nhúng trược tiếp trong các thẻ HTML. • Được đặt trong cặp thẻ
  5. Môn Các Hệ Thống Mã Nguồn Mở 5 Quá Trình Thông Dịch file PHP
  6. Môn Các Hệ Thống Mã Nguồn Mở 6 Kiểu dữ liệu – Hằng – Biến a- Kiểu dữ liệu: Integer, Double, Boolean, String, Array và Object b. Khai báo biến: $tên_biến = giá_trị; $tên_mảng = array(); $tên_object= new tên_lớp(); c. Khai báo hằng : define(“tên_hằng”, giá_trị); Ví dụ :
  7. Môn Các Hệ Thống Mã Nguồn Mở 7 Kiểu dữ liệu – Hằng – Biến Các hằng được xây dựng sẵn Kiểm tra nội dung biến • __LINE__ isset($varname) • __FILE__ empty($varname) • E_ALL is_int ($varname) • E_NOTICE is_array ($varname) • is_float ($varname) Chuyển kiểu dữ liệu is_null ($varname) $newint = (int) $var1; is_numeric ($varname) $newfloat = (float) $var1; is_string ($varname) $newstring = (string) $var1; Xuất dữ liệu Xuất thông tin biến echo $myvariable; var_dump($myvariable); printf $myvariable;
  8. Môn Các Hệ Thống Mã Nguồn Mở 8 Các phép toán a. Phép gán : $biến = biểu_thức; b. Các phép toán số học : +,-,*,/,% c. Các phép toán so sánh : ==, !=, >=, ,< d. Các phép toán kết hợp : ++, ,+=,-=,*=,/= e. Các phép toán logic : !, &&, || f. Toán tử tam phân : (điều_kiện ? giá_trị_1 : giá_trị_2) g. Phép ghép chuỗi : . (dấu chấm) h. Toán tử error : @, ngăn không cho thông báo lỗi. Ví dụ : $a=10; $b=0; $c=@$a/$b
  9. Môn Các Hệ Thống Mã Nguồn Mở 9 Một số ví dụ dữ liệu kiểu số • Ví dụ 1 : $var1 = “1”; $var2 = 2; $total = $var1 + $var2; • Ví dụ 2 : $var1 = “x”; $var2 = 2; $total = $var1 + $var2; • Ví dụ 3 $var1 = “2,000”; $var2 = 2; $total = $var1 + $var2;
  10. Môn Các Hệ Thống Mã Nguồn Mở 10 Các hàm trên dữ liệu số • Sqrt : căn bậc 2 • pow : lũy thừa • Ceil : làm tròn lên • rand : tạo số ngẫu nhiên • Floor : làm tròn xuống • round : làm tròn • Number_format : định dạng số • Max, min : lấy giá trị lớn, nhỏ "; echo number_format($x)." "; echo number_format($x,2)." "; echo number_format($x,2,",",".")." "; ?> kết quả: 12345678.4568 12,345,678 12,345,678.46 12.345.678,46
  11. Môn Các Hệ Thống Mã Nguồn Mở 11 Các câu lệnh điều khiển a- Câu lệnh if. Các cú pháp thông dụng: - if(điều_kiện) { /* nhóm lệnh */} - if(điều_kiện) { /* nhóm lệnh1 */} else { /* nhóm lệnh2 */} - if(điều_kiện) { } elseif(điều_kiện_1) { .} elseif(điều_kiện_2) { .} . elseif(điều_kiện_n) { .} else {/* nhóm lệnh cuối cùng */}
  12. Môn Các Hệ Thống Mã Nguồn Mở 12 Các câu lệnh điều khiển (tt) b. Câu lệnh switch Cú pháp : switch($biến){ case giá_trị_1: nhóm lệnh 1 ; break; case giá_trị_2: nhóm lệnh 2 ; break; case giá_trị_n: nhóm lệnh n ; break; default : nhóm_lệnh_n+1; } Lưu ý : giá trị của $biến phải là đếm được, rời rạc
  13. Môn Các Hệ Thống Mã Nguồn Mở 13 Các câu lệnh điều khiển (tt) Trong PHP có 4 câu lệnh lặp, trong đó foreach có cách sử dụng đặc sắc so với các NNLT khác. Muốn thoát khỏi vòng lặp : sử dụng lệnh exit c- Câu lệnh while : Cú pháp : while(điều_kiện_lặp) { /* nhóm lệnh */} d- Câu lệnh do while : Cú pháp : do { /* nhóm lệnh */} while(điều_kiện_lặp) e- Câu lệnh for(;;) : Cú pháp : for(khởi_tạo; điều_kiện_lặp; tăng_giảm) { /* nhóm lệnh */} f- Câu lệnh foreach : duyệt qua tất các các phần tử của một mảng, nhất là mảng kết hợp.
  14. Môn Các Hệ Thống Mã Nguồn Mở 14 Chuỗi Kí Tự 1- Khai báo biến $str =“Trường cao đẳng CNTT TpHCM”; $str=<<<ENDSTRING $str=<<<ENDOFTEXT . . ENDSTRING; . ENDOFTEXT; Phân biệt ngoặc đơn và kép : - Chuỗi sử dụng ngoặc đơn được lưu trữ như một chuỗi bình thường. - Chuỗi sử dụng ngoặc kép được lượng giá các biến và kí tự đặc biệt trong chuỗi trước khi lưu trữ. $number = 10; $string1 = “There are ‘$number’ people in line.”; $string2 = ‘There are “$number” people waiting.’; echo $string1,”\n”; echo $string2;
  15. Môn Các Hệ Thống Mã Nguồn Mở 15 Chuỗi Kí Tự 2- Các hàm về kiểu chuổi ký tự: - chop(), trim(), ltrim() - nl2br(): định dạng HTML, biến ký tự \n thành “ ” - addslashes() : để biến một chuổi có thể lưu trữ trong CSDL, ví dụ: dấu “ -> \” - substr($str,$pos,$len) : tách một chuổi con từ một chuổi - strpos($str,$sub) : vị trí chuổi $sub trong chuổi $str - str_replace($rep,$with,$str) : thay $rep bằng $with trong $str - explode($separator,$str) : tách chuổi $str thành các chuổi con dựa trên dấu phân cách $separator và lưu kết quả vào mảng, ~ phương thức split của JavaScript. Ngược lại là hàm implode hay join. - str_repeat(“str”,n) : lặp lại str n lần - str_chr(“str”,”chr”) : trả về 1 chuỗi bắt đầu từ kí tự chr trong str. - stristr(“str”,”chr”) : giống str_chr nhưng không phân biệt hoa thường - strlen(“str”) : chiều dài chuỗi str - strrev(“str”) : đảo ngược chuỗi str
  16. Môn Các Hệ Thống Mã Nguồn Mở 16 Chuỗi Kí Tự (tt) Ví dụ: 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. Độ dài chuổi ban đầu “.strlen($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 ““Độ dài sau khi chuẩn hóa “.strlen(normalize($str)); ?>
  17. Môn Các Hệ Thống Mã Nguồn Mở 17 Chuỗi Kí Tự (tt) Danh sách giáo viên: "; foreach($arr as $key=>$value) echo ($key+1)."-".$value." "; ?>
  18. Môn Các Hệ Thống Mã Nguồn Mở 18 Dữ Liệu Ngày – Giờ • ĐỊnh dạng ngày $mydate = date(“format”,$timestamp); • Lấy ngày hệ thống $today = date(“Y/m/d”); • Lấy giờ hệ thống $today = time(); hoặc $today = strtotime(“today”); • Tạo một ngày chỉ định $importantDate = mktime(h,m,s,mo,d,y); • Ví dụ : $importantDate = mktime(0,0,0,1,15,2003); Hoặc $importantDate = strtotime(“January 15 2003”);
  19. Môn Các Hệ Thống Mã Nguồn Mở 19 Dữ Liệu Ngày – Giờ
  20. Môn Các Hệ Thống Mã Nguồn Mở 20 Mảng Một Chiều 1. Khai báo : $n=100; $arr1 = array($n); $arr2 = array(giá_trị_1, giá_trị_2, , giá_trị_n); $arr3 = range(100,900);// range(“z”, “a”); $arr4 = arrr(hoten=>“Minh Thành”, quequan=>“HCM”, tuoi=>27;IQ=“Rất cao”); // mảng kết hợp Câu lệnh lặp foreach rất hiệu quả khi duyệt mảng kết hợp
  21. Môn Các Hệ Thống Mã Nguồn Mở 21 Mảng Một Chiều (tt) 2- Sử dụng -Truy cập một phần tử mảng : $arr[$key] $key có ý nghĩa rộng hơn Index, dùng tham chiếu đến một phần tử của mảng. Ví dụ 1: 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. ”; ?>
  22. Môn Các Hệ Thống Mã Nguồn Mở 22 Mảng Một Chiều (tt) -Sử dụng foreach foreach($arr as $key=>$value){ echo $key .“,”; echo $value.” ”; } Có thể thay thế key và value bằng tên khác, chẳng hạn $k=>$v, miễn rẳng đảm bảo khai báo : $chỉ_số=>$giá_trị (của phần tử mảng)
  23. Môn Các Hệ Thống Mã Nguồn Mở 23 Mảng Một Chiều (tt) -Truy cập một phần tử mảng : sử dụng hàm each() while($item=each($arr)){ echo $item[“key”] .”,”; echo $item[“value”]. “ ”; } Hàm each() trả về phần tử kế tiếp của mảng. ~ hàm next() - Truy cập một phần tử mảng : sử dụng hàm list() while(list($k,$v)=each($arr)){ echo $k .”,”; echo $v. “ ”; } 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à $v
  24. Môn Các Hệ Thống Mã Nguồn Mở 24 Các Hàm Về Mảng -Hàm count(), sizeof() : trả về kích thước của mảng + current()/end() : trả về phần tử đầu tiên/ cuối cùng của mảng + prev() / next() : trả về phần tử liền trước / kế kiếp + sort() , asort(), rsort(), arsort(): sắp xếp mảng theo value của phần tử + ksort(), krsort() :sắp xếp mảng theo key của phần tử - is_array() kiểm tra mảng - Print_r() hoặc var_dump(): xem nội dung mảng - Unset($arr[$key]) : xóa phần tử $key khỏi mảng - array_slice($arrayname,n1,n2) : ngắt mảng - array_merge($array1,$array2, ); : trộn mảng - array_sum($array) : tính tổng - array_unique($names) : loại trùng - array_flip($testarray) : hoán đổi key và value
  25. Môn Các Hệ Thống Mã Nguồn Mở 25 4- Mảng động : 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. "; // In ra mảng con gồm các số lẻ từ mảng $arr for($i=0;$i " ?>
  26. Môn Các Hệ Thống Mã Nguồn Mở 26 Các Mảng Xây Dựng Sẵn
  27. Môn Các Hệ Thống Mã Nguồn Mở 27 Các Mảng Xây Dựng Sẵn Ví dụ : xuất các thành phần trong mảng $_SERVER foreach($_SERVER as $key =>$value) { echo “Key=$key, Value=$value\n”; }
  28. Môn Các Hệ Thống Mã Nguồn Mở 28 Hàm 1- Cú pháp: function tên_hàm([các_tham_số]) { // Khai báo biến riêng // Câu lệnh PHP [ return giá_trị; ] } [các_tham_số] : các tham số là tùy chọn 2- Sử dụng hàm -Hàm không có giá trị trả về : tên_hàm([các_tham_số]); -Hàm có giá trị trả về : tham gia vào các biểu thức, gán giá trị cho biến.
  29. Môn Các Hệ Thống Mã Nguồn Mở 29 Hàm (tt) A- Hàm không có giá trị trả về: ”Minh Thành”,diachi=>”HCM”,tuoi=>27,phai=>“Nam”); function display($a){ echo “ ”; reset($a); // trỏ về phần tử đầu tiên của mảng $a; $value=current($a); // phần tử hiện thời của mảng $a while($value){ echo “ ”.$value.” ”; $value=next($a); // phần tử kế tiếp của mảng a } echo “ ” } display($arr); ?> Đây là một hàm không trả về giá trị. Hàm display in ra các giá trị của mảng
  30. Môn Các Hệ Thống Mã Nguồn Mở 30 Hàm (tt) B- Hàm có giá trị trả về “Minh Thành",diachi=>“HCM"); function is_hoten($mang){ // trả về value của phần tử có key là hoten while(list($k,$v)=each($mang)){ if($k=="hoten") {return $v;exit;} } } echo is_hoten($arr); ?> Lưu ý : có cần exit khỏi vòng lặp không?
  31. Môn Các Hệ Thống Mã Nguồn Mở 31 3- Tầm vực của biến trong trang PHP - Biến chung : được khai báo ngoài phạm vi các hàm, hoặc global - Biến riêng: khai báo bên trong hàm (nếu không có global) - Biến $_SESSION : có giá trị toàn cục, cho mọi trang trong phiên. PHP xây dựng sẵn một số biến toàn cục với tên quy ước $_TÊN (in hoa) function tên_hàm($x){ global $total; $total=giá_trị; static $index; $index=giá_trị; // các lệnh PHP } 4- Tham trị và tham biến -Hàm trên được gọi với tham trị -Hàm sau đây sẽ được gọi với tham biến : function tên_hàm(&$y){ // các lệnh PHP }
  32. Môn Các Hệ Thống Mã Nguồn Mở 32 Phương Thức Truyền Dữ Liệu Đây là những biến toàn cục nhận các giá trị gởi từ client đến server bằng phương thứ Post hay Get. 1- Phương thức POST Receive.php
  33. Môn Các Hệ Thống Mã Nguồn Mở 33 Phương Thức Truyền Dữ Liệu (tt) Trường hợp đặc biệt: nhận dữ liệu gởi từ các checkbox cùng tên: Goi.html Một Hai Ba Nhan.php $v) echo $v.” ”; ?>
  34. Môn Các Hệ Thống Mã Nguồn Mở 34 Phương Thức Truyền Dữ Liệu (tt) 2- Phương thức GET Giả sử trang goi.html chứa đoạn mã: Ta gọi: gởi dữ liệu đến trang nhan.php theo phương thức GET, các biến khác được ghép bởi ký hiệu & Nhan.php Chú ý: hoten=Hà Giang, không đóng dấu nháy kép! $_REQUEST : là biến toàn cục thay thế cho $_POST và $_GET
  35. Môn Các Hệ Thống Mã Nguồn Mở 35 V- Sử dụng lại mã PHP -Sử dụng hàm include(), require() để chèn tệp tin PHP, HTML vào một trang PHP khác. Ngoài ra còn có: include_once(), require_once(), - Phân biệt include() và require() include(“tên_tệp”) : nếu tên_tệp không tồn tại thì PHP thông báo lỗi và vẫn tiếp tục thực thi script còn lại. require(“tên_tệp”) : nếu tên_tệp không tồn tại thì PHP dừng thực thi script. -Sử dụng include(), require() là một cách tái sử dụng đoạn mã đã viết. Ví dụ :Trang Index.php bao gồm 3 khối: -header.inc : gồm các khai báo -menu.php : gồm các liên kết -footer.php: gồm các thông tin về website và
  36. Môn Các Hệ Thống Mã Nguồn Mở 36 V- Sử dụng lại mã PHP Trang Index.php
  37. Môn Các Hệ Thống Mã Nguồn Mở 37 V- Sử dụng lại mã PHP Header.inc body{margin:10 10 10 60; font: normal 18pt Arial; color:navy} // khai báo để DEMO hiển thị rõ ràng khi trình bày trên LCD Projector! My Page Ví dụ về include() Hôm nay:" . date("d-m-Y")." ";?> Footer.php Copyright by NDTFIT,1995-".date("Y"); $copyright.=" Khoa Tin học, Trường Đại học Sư phạm "; // năm hiện thời tự động cập nhật echo $copyright; ?>
  38. Môn Các Hệ Thống Mã Nguồn Mở 38 V- Sử dụng lại mã PHP Menu.php "; $strMenu.=" "; $strMenu.=" "; $strMenu.=" "; $strMenu.=" "; echo $strMenu; ?>
  39. Môn Các Hệ Thống Mã Nguồn Mở 39 Hỏi Đáp ?