Giáo trình Phát triển ứng dụng Web bằng PHP - Phần 3: Các đối tượng trong PHP - Dương Khai Phong

pdf 50 trang huongle 3240
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Phát triển ứng dụng Web bằng PHP - Phần 3: Các đối tượng trong PHP - Dương Khai Phong", để 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:

  • pdfgiao_trinh_phat_trien_ung_dung_web_bang_php_phan_3_cac_doi_t.pdf

Nội dung text: Giáo trình Phát triển ứng dụng Web bằng PHP - Phần 3: Các đối tượng trong PHP - Dương Khai Phong

  1. • GVHD: Dương Khai Phong • Email: khaiphong@gmail.com • Website:
  2. 1/ Giới thiệu tổng quan Web 2/ Ngôn ngữ HTML và JavaScript 3/ Ngôn ngữ PHP căn bản 4/ Các đối tượng trong PHP 5/ PHP và hướng đối tượng 6/ PHP và cơ sở dữ liệu MySQL 7/ PHP và AJAX 8/ PHP và các hệ thống mã nguồn mở 9/ Triển khai ứng dụng PHP
  3. PHẦN 3:
  4. 1. Giới thiệu 2. Đối tượng $_GET, $_POST và $_REQUEST 3. Đối tượng $_COOKIE và $_SESSION 4. Đối tượng $_SERVER 5. Đối tượng $_FILES 6. Các đối tượng khác trong Web Programming
  5. a. Web Programming? Most people think of a Web page as nothing more than a collection of HTML code. This is fine if you happen to be a Web designer - but, as a PHP developer, your knowledge must run much deeper if you want to take full advantage of what the Web has to offer. (ref: page 97 of ebook “phparchitects Zend PHP 5 Certification Study Guide”) Tên tài khoản Mật khẩu
  6. a. Web Programming? Files Form data  Báo cáo phản hồi từ Server  Chuyển sang một trang web chứa đựng thông tin nào đó   Phân tích dữ liệu do client gửi lên. Thông tin trình duyệt (client) đã được gửi đến máy chủ (server) như thế nào?
  7. b. Giao thức HTTP - Request . Một HTTP Request được gửi tới server có định dạng như sau [ ] . Ví dụ: trang web www.uit.edu.vn được gửi từ trình duyệt Firefox có HTTP Request:
  8. b. Giao thức HTTP - Request  Ý nghĩa các giá trị của Request Header (GET): (Request-Line) GET /php_th_objects/phpchecklogin_get.php?txtUser=admin&txtPassword=123&bSub mit=%C4%90%C4%83ng+nh%E1%BA%ADp HTTP/1.1 Host localhost:8080 User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language en-us,en;q=0.5 Accept-Encoding gzip, deflate Connection keep-alive Referer (none) (This request contained no POST data)
  9. b. Giao thức HTTP - Request  Ý nghĩa các giá trị của Request Header (POST): (Request-Line) POST /php_th_objects/phpchecklogin_post.php HTTP/1.1 Host localhost:8080 User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language en-us,en;q=0.5 Accept-Encoding gzip, deflate Connection keep-alive Referer Content-Type application/x-www-form-urlencoded Content-Length 65 txtUser admin txtPassword 123 bSubmit ĕăng nháºp
  10. b. Giao thức HTTP - Response . Một HTTP Response được phía Server trả về có các thông tin sau: (Status-Line) HTTP/1.1 200 OK Date Sun, 14 Oct 2012 10:29:46 GMT Server Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4 X-Powered-By PHP/5.4.4 Content-Length 392 Keep-Alive timeout=5, max=100 Connection Keep-Alive Content-Type text/html
  11. b. Ví dụ $_GET, $_POST và $_REQUEST Đối tượng $_GET phplogin_get.php &txtPassword=123&bSubmit=%C4%90%C4%83ng+nh%E1%BA%ADp phpchecklogin_get.php '; echo "User: $user "; echo "Password: $password "; ?>
  12. b. Ví dụ $_GET, $_POST và $_REQUEST Đối tượng $_POST phplogin_post.php phpchecklogin_post.php '; echo "User: $user "; echo "Password: $password "; ?>
  13. b. Ví dụ $_GET, $_POST và $_REQUEST Đối tượng $_REQUEST phplogin_post.php '; echo "User: $user "; echo "Password: $password "; ?> phplogin_get.php txtPassword=123&bSubmit=%C4%90%C4%83ng+nh%E1%BA%ADp phpchecklogin_request.php
  14. a. Đối tượng $_GET . Dữ liệu gửi từ trình duyệt lên server qua phương thức GET là phần dữ liệu được nhập trực tiếp theo sau địa chỉ URL, được phân biệt với tên file script bằng dấu hỏi chấm (?) . Ví dụ: khi ta gõ vào trình duyệt địa chỉ URL sau: Khi đó, trình duyệt sẽ gửi theo địa chỉ trên một cặp: biến = giá trị, trong đó biến có tên là TOPIC_ID và giá trị là 161 (TOPIC_ID=161).
  15. a. Đối tượng $_GET . Dữ liệu gửi từ trình duyệt lên server có thể đưa lên nhiều cặp biết=giá_trị bằng cách phân cách chúng bởi dấu &: . Ví dụ: C_ID=161&FORUM_ID=20 Với địa chỉ URL trên, trình duyệt gửi lên 3 cặp biến=giá_trị theo phương thức GET: method=Reply, TOPIC_ID=161 và FORUM_ID=20.
  16. a. Đối tượng $_GET . Khi trình duyệt gửi các thông tin này lên máy chủ, PHP sẽ tự động sinh ra một mảng có tên là $_GET[] để chứa tất cả các cặp biến và giá trị đó. . Trong đó, chỉ số của mảng chính là một chuỗi mang tên của tên biến và giá trị của chỉ số đó chính là giá trị của biến do trình duyệt gửi lên. . Ví dụ: 61&FORUM_ID=20 PHP sẽ tự động sinh ra một mảng $_GET có nội dung sau: $_GET["method"] = "Reply" // ứng với cặp method=Reply $_GET["TOPIC_ID"] = 161 // ứng với cặp TOPIC_ID=161 $_GET["FORUM_ID"] = 20 // ứng với cặp FORUM_ID=20
  17. a. Đối tượng $_GET . Ví dụ: sử dụng đối tượng $_GET • Trang giao diện: giaodien.php Example GET
  18. a. Đối tượng $_GET . Ví dụ: sử dụng đối tượng $_GET • Trang xử lý PHP: chitietsach.php Example GET
  19. a. Đối tượng $_GET . Ví dụ: sử dụng đối tượng $_GET • Trang xử lý PHP: chitietsach.php (dùng hàm isset để kiểm tra xem một biến đã được thiết lập hay chưa) Example GET
  20. b. Đối tượng $_POST . Dữ liệu gửi từ trình duyệt lên server qua phương thức POST là phần dữ liệu được lưu trữ trong phần thân Request. Việc truy xuất các phần tử dữ liệu trên server được thực hiện tương tự như đối tượng $_GET. . Ví dụ: khi ta gõ vào trình duyệt địa chỉ URL sau: Truyền theo phương thức GET Truyền theo phương thức POST Khi đó, trình duyệt cũng sẽ gửi lên server một cặp: biến = giá trị (lưu trong phần thân Request), trong đó biến có tên là TOPIC_ID và giá trị là 161 (TOPIC_ID=161).
  21. b. Đối tượng $_POST . Ví dụ: sử dụng đối tượng $_POST Sample POST User Name: Password: Sex: Male Female window.open(' "; //hoặc dùng hàm: header('Location: ; }else echo "không"; ?> s
  22. b. Đối tượng $_POST . Ví dụ: sử dụng đối tượng $_POST Sample POST User Name: Khi người dùng nhập User Name là: admin, Password là: 123 và Password: chọn Sex là Male, khi đó, mảng Sex: $_POST sẽ có các phần tử sau: Male Female $_POST["txtUser"] = admin $_POST["txtPass"] = 123 ["selSex"] = 1 window.open(' "; //hoặc dùng hàm: header('Location: ; }else echo "không"; ?> s Dùng hàm header(URL) để thực hiện chuyển trang
  23. c. Bài tập $_GET và $_POST Bài 1: viết chương trình giải phương trình bậc I: ax + b = 0 Bài 2: viết chương trình giải phương trình bậc II: ax2 + bx + c = 0 Bài 3: viết chương trình kiểm tra tính hợp lệ của tam giác. Nếu hợp lệ cho biết loại tam giác: đều, cân, vuông, vuông cân, thường. Bài 4: viết chương trình nhập n. Xuất bảng cửu chương thứ n. Bài 5: viết chương trình nhập 2 số a và b. Tìm USCLN, USCNN, BSCNN của 2 số a và b. Bài 6: viết chương trình nhập 2 số a và b. Tìm USCLN và BSCNN của 2 số a, b.
  24. c. Bài tập $_GET và $_POST Bài 3: viết chương trình kiểm tra tính hợp lệ của tam giác. Nếu hợp lệ cho biết loại tam giác: đều, cân, vuông, vuông cân, thường. Check triangle Cạnh A: Cạnh B: Cạnh C:
  25. c. Bài tập $_GET và $_POST Bài 3: viết chương trình kiểm tra tính hợp lệ của tam giác. Nếu hợp lệ cho biết loại tam giác: đều, cân, vuông, vuông cân, thường. document.frmTriangle.txtEdgeA.value=$a "; Gán giá trị 3đ echo " document.frmTriangle.txtEdgeB.value=$b "; echo " document.frmTriangle.txtEdgeC.value=$c "; cho control echo "Giá trị 3 cạnh tam giác: a = ".$a.", b = ".$b.", c = ".$c; if ($a>0 && $b>0 && $c>0) // Algorithm if ($a+$b>$c && $a+$c>$b && $b+$c>$a){ echo " Đây là một tam giác hợp lệ Đây là một TAM GIÁC "; if ($a==$b && $a==$c) echo " ĐỀU"; else{ if ($a*$a == $b*$b+$c*$c || $b*$b == $a*$a+$c*$c || $c*$c == $a*$a+$b*$b){ echo " VUÔNG"; 4đ if ($a==$b || $a==$c || $b==$c) echo " CÂN"; }else{ if ($a==$b || $a==$c || $b==$c) echo " CÂN"; else echo " THƯỜNG";} } } else echo " Đây là một tam giác không hợp lệ"; else echo " Đây là một tam giác không hợp lệ"; } } ?>
  26. d. Đánh giá $_GET, $_POST và $_REQUEST Đánh giá $_GET $_POST $_REQUEST  Combine values of  Security controls and URL ƯU ĐIỂM  No limit data length Data length depends Depends on controls of on Browsers form KHUYẾT ĐIỂM Not security Depends on security of Browsers, Server
  27. a. Giới thiệu Session cookie Peter (Peter) COOKIE dùng để làm gì? cookie Mary Session (Mary) Bestbuy.com cookie Peter Bestbuy.com . Login . Product . News Peter Bestbuy.com cookie Mary SESSION dùng để làm gì? Mary
  28. b. Cookie . Là 1 đoạn dữ liệu được truyền đến browser từ server, đoạn dữ liệu này sẽ được browser lưu trữ (trong memory hoặc trên đĩa) và sẽ gởi ngược lên lại server mỗi khi browser tải 1 trang web từ server. . Những thông tin được lưu trữ trong cookie phụ thuộc vào website trên server. . Cookie được tạo ra bởi website và gởi tới browser, do vậy 2 website khác nhau (cho dù cùng host trên 1 server) sẽ có 2 cookie khác nhau gởi tới browser. . Mỗi browser quản lý và lưu trữ cookie theo cách riêng của mình, cho nên 2 browser cùng truy cập vào 1 website sẽ nhận được 2 cookie khác nhau.
  29. b. Cookie . Sử dụng Cookie trong PHP:  Để đặt (set) cookie: $_COOKIE[tên_cookie] = giá_trị;  Đọc (get) lại giá trị của cookie: $_COOKIE[tên_cookie] . Ví dụ: $t="1111"; Trang b setcookie("a",$t); ?> Trang a if (isset($_COOKIE['a'])) { echo "gia tri lay duoc ".$_COOKIE['a']; Giá trị gởi lên cookies: } ?>
  30. b. Session . Là đoạn dữ liệu được lưu trên server, khi browser có yêu cầu lấy dữ liệu từ session thì server cung cấp. . Website sẽ quyết định khi nào session bắt đầu và kết thúc. . Mỗi session sẽ có một định danh (ID). . Các hàm liên quan đến Session:  session_start(): khởi tạo session.  session_register(tên biến): đăng ký biến session  $_SESSION[tên_session] = giá_trị; đặt giá trị cho session  $_SESSION[tên_session] đọc giá trị từ session  session_destroy(); hủy tất cả các dữ liệu trong session  session_unset(); hủy tất các biến trong session  session_unregister(tên biến) hủy 1 biến trong session
  31. b. Session . Ví dụ: $_SESSION['username'] = 'guest'; $_SESSION['password''] = $t; Trang s_b.php ?> Giá trị session lấy được : username = ?> username = guest time = time = Click de kiem tra.
  32. c. Đánh giá Cookie và Session Đánh giá COOKIE SESSION . Lưu trữ dữ liệu dùng để trao đổi thông tin giữa các trang SỬ DỤNG  Store: client  Store: server  Speed: accept  Not depends on security of Browsers ƯU ĐIỂM  Bandwidth  Security Security of Browsers KHUYẾT Bandwidth ĐIỂM
  33. . Đối tượng $_SERVER một mảng chứa các phần tử thông tin hữu ích có liên quan đến server. PHẦN TỬ CHỨC NĂNG A string that identifies the server (e.g., "Apache/1.3.33 (Unix) SERVER_SOFTWARE mod_perl/1.26 PHP/5.0.4"). The hostname, DNS alias, or IP address for self-referencing URLs (e.g., SERVER_NAME "www.example.com"). GATEWAY_INTERFACE The version of the CGI standard being followed (e.g., "CGI/1.1"). SERVER_PROTOCOL The name and revision of the request protocol (e.g., "HTTP/1.1"). SERVER_PORT The server port number to which the request was sent (e.g., "80"). REQUEST_METHOD The method the client used to fetch the document (e.g., "GET"). PATH_INFO Extra path elements given by the client (e.g., "/list/users"). The URL path to the current page, which is useful for self-referencing SCRIPT_NAME scripts (e.g., "/~me/menu.php"). QUERY_STRING Everything after the ? in the URL (e.g., "name=Fred+age=35"). The length of the information attached to queries such as PUT and POST CONTENT_LENGTH (e.g., 3952).
  34. . Đối tượng $_FILES chứa các thông tin liên quan đến việc upload tập tin lên server. PHẦN TỬ CHỨC NĂNG $_FILES['file_upload']['name'] Lấy tên file Kiểu của file được lưu ở dạng MINE (Ví dụ: image/gif, $_FILES['file_upload']['type'] audio/wav) $_FILES[‘file_upload’][‘size’] Dung lượng của file tính theo byte lấy tên file tạm (Sau khi upload, server sẽ lưu file vào một file $_FILES['file_upload']['tmp_name’] tạm trên server) move_uploaded_file ( string $filename , Ghi file lên server string $destination) $_FILES['file_upload'][‘error’] . UPLOAD_ERR_OK ( = 0 ) . không có lỗi, quá trình upload thành công . UPLOAD_ERR_INI_SIZE ( = 1 ) . dung lượng file upload quá giới hạn mặc định trong php.ini . UPLOAD_ERR_FORM_SIZE ( = 2 ) . dung lượng file upload quá giới hạn bởi MAX_FILE_SIZE . UPLOAD_ERR_PARTIAL ( = 3 ) . file chỉ được upload 1 phần (lỗi đường truyền khi upload) . UPLOAD_ERR_NO_FILE ( = 4 ) . không có file nào được upload (file ở client không tồn tại)
  35. . Ví dụ: upload tập tin lên server.  Xây dựng trang upload file (frmupload.php) Sample Upload File
  36. . Ví dụ: upload tập tin lên server.  Xây dựng trang xử lý file upload (upload.php) Step 1 Step 2 Process uploading Process uploading <?php <?php define ("MAX_FILE_SIZE",1000000); // Step 2: Checking upload processing. // Step 1: Checking is method POST? if ( !isset($_FILES["file_upload"]["error"]) || if ( $_SERVER["REQUEST_METHOD"] != $_FILES["file_upload"]["error"] != 0 ) { "POST" ) { echo 'Upload không thành công (error upload echo 'Upload không thành công (not POST)'; processing)'; exit(-1); exit(-1); } //end if } //end if // Step 2: Checking upload processing. // Step 3: Checking is upload file size.
  37. . Ví dụ: upload tập tin lên server.  Xây dựng trang xử lý file upload (upload.php) Step 3 Step 4 Process uploading Process uploading file. $MAX_FILE_SIZE) { $temp = preg_split('/[\/\\\\]+/', echo 'Upload không thành công (file size too $_FILES["file_upload"]["name"]); large ‘. $_FILES["file_upload"]["size"].")"; $filename = $temp[count($temp)-1]; exit(-1); if ( !preg_match('/\.(jpg|bmp|gif)$/i', $filename } )){ // Step 4: splite file name and check extension of echo 'Upload không thành công '; file. echo 'Vui lòng upload file hình ảnh '; exit(-1); } //end if // Step 5: move upload file to folder of server.
  38. . Ví dụ: upload tập tin lên server.  Xây dựng trang xử lý file upload (upload.php) Step 5 Process uploading "; echo "Type: ".$_FILES["file_upload"]["type"] . " "; echo "Size: ".($_FILES["file_upload"]["size"] / 1024) . " Kb "; //echo "Temp. Stored in: ".$_FILES["myfile"]["tmp_name"]; } else { echo 'Upload không thành công (error on server)'; } //end if ?>
  39. ĐH CÔNG NGHỆ THÔNG TIN 39
  40. . Họ tên: . Mã SV: . Lớp: . Khoá: . Email: 01 02 19 20 A B C D
  41. Câu 1: Chọn phát biểu đúng để lấy giá trị của phần tử có tên “email” trong biểu mẫu HTML sau: A. $_GET['email'], $_POST['email'] B. $_GET['email'], $_REQUEST['email'] C. $_POST['email'], $_REQUEST['email'] D. $_POST['email']
  42. Câu 2: Cho biết kết quả hiển thị ở trang index.php nếu người dùng submit form từ trang sau (người dùng nhập vào hello và world lần lượt cho 2 textbox):  Trang index.php A. Không in gì hết B. In thông báo notice C. In mảng array D. helloworld
  43. Câu 3: Câu lệnh nào đúng để xuất từ “user” của địa chỉ URL sau: A. echo $_REQUEST["user"]; B. echo $_REQUEST[0]; C. echo $_GET["user"]; D. Tất cả đều sai
  44. Câu 4: Trong PHP, nếu 2 phần tử cùng tên thì: A. PHP xuất thông báo lỗi B. PHP kết hợp 2 phần tử thành một mảng C. Phần tử thứ hai tự động được đổi thành tên mới D. Giá trị của phần tử thứ hai chồng lên phần tử thứ nhất
  45. Câu 5: Dữ liệu session được lưu trữ mặc định trong: A. Tập tin hệ thống PHP B. Cơ sở dữ liệu C. Bộ nhớ ảo D. Tất cả đều sai
  46. Câu 6: Hàm isset($_GET["user"]) sẽ trả về giá trị “TRUE” nếu: A. Biến $_GET[“user”] là rỗng “ ” B. Biến $_GET[“user”] được nạp một giá trị nào đó C. Biến $_GET[“user”] được khởi tạo D. Tất cả đều sai
  47. Câu 7: Giả sử tại client browser đang lưu trữ cookie có tên ngaytruycap và lưu giá trị = “30042012”, chọn câu lệnh cần thay thế cho từ key sao cho đoạn mã sau xuất ra: 2012 A. echo $_COOKIE(['ngaytruycap'],4); B. echo substr($_COOKIE['ngaytruycap'],4,4); C. echo substr($_COOKIE['ngaytruycap'],4); D. echo substr($_COOKIE['ngaytruycap'],3,4);
  48. Câu 8: Câu lệnh nào đúng để xuất từ “admin” của địa chỉ URL sau: A. echo $_REQUEST["user"]; B. echo $_GET["user"]; C. echo $_REQUEST[0]; D. Cả a và b đều đúng
  49. Câu 9: Cho biết kết quả của trang index.php sau khi submit form sau (textbox user không nhập dữ liệu):  Trang index.php 1. A. FalseFalse B. FalseTrue; C. TrueFalse D. Đoạn lệnh sai ở dòng 6
  50. Câu 10: Sử dụng phương pháp nào để trao đổi dữ liệu giữa các trang (webpage) trong một website: A. $_GET, $_POST và $_REQUEST B. $_SESSION và $_COOKIE C. Cơ sở dữ liệu D. Tất cả đều sai