Bài giảng môn Lập trình Web - Chương 3: Web động PHP với Web động

pdf 78 trang huongle 1670
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Lập trình Web - Chương 3: Web động PHP với Web động", để 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:

  • pdfbai_giang_mon_lap_trinh_web_chuong_3_web_dong_php_voi_web_do.pdf

Nội dung text: Bài giảng môn Lập trình Web - Chương 3: Web động PHP với Web động

  1. CHƢƠNG 3. WEB ĐỘNG PHP VỚI WEB ĐỘNG Người biên soạn: HTHT
  2. 3.1. Định nghĩa và đặc điểm của web động Người biên soạn: HTHT
  3. a)Định nghĩa Website động (Dynamic Web Pages) : Nó có thể là các thành phần sau: + Search Engine: + Member account: + Shopping Cart: + Online Payment: + Forum: Người biên soạn: HTHT
  4. b) Đặc điểm -Thông tin thay đổi -Cho phép tương tác với server - Mã nguồn có thể che dấu đối với người dùng Người biên soạn: HTHT
  5. Kịch bản xử lý tình huống HỎI TRẢ LỜI Người biên soạn: HTHT
  6. 3.2. Tổ chức web động trên webserver Người biên soạn: HTHT
  7. Webserver ? Internet Information Server: IIS có thể làm được gì? - Xuất bản một Home page lên Internet. - Tạo các giao dịch thương mại điện tử trên Internet( Quá trình giao dịch, đặt hàng ) - Cho phép người dùng từ xa có thể truy xuất C sở dữ liệu (Data Base Remote Access) Người biên soạn: HTHT
  8. IIS hoạt động như thế nào? Người biên soạn: HTHT
  9. 3.3. PHP là gì? Môi trường sử dụng, cài đặt và cách thức hoạt động Người biên soạn: HTHT
  10. PHP là gì? PHP (Hypertext Prepropessor) là một môi trường lập trình cung cấp cho việc kết hợp: -HTML, -Ngôn ngữ kịch bản (Scripting) như VBScript, Javacript, - Và các thành phần được viết trong các ngôn ngữ nhằm tạo ra một ứng dụng Internet mạnh mẽ và hoàn chỉnh. Người biên soạn: HTHT
  11. a) Tệp PHP là gì? File được tạo với phần mở rộng .PHP. Trong file này chứa các thẻ HTML, Các kịch bản Scripting như VBSCript, JavaScript hay các lời gọi đến các lệnh php. Các script của PHP được nằm trong các cặp thẻ: 1. 2. 3. 4. // code php Người biên soạn: HTHT
  12. b) Môi trường sử dụng - Công nghệ PHP được xây dưng trong môi trường webserver: IIS(Window), Apache (Unix) Người biên soạn: HTHT
  13. Cài đặt PHP/MySQL • Cài đặt PHP trên IIS - Thực hiện cài từng thành phần vào IIS • Cài đặt PHP trên Apache trong hệ điều hành window - Có thể sử dụng XAMPP: đã tích hợp toàn bộ các chương trình PHP, Apache, MySQL. Người biên soạn: HTHT
  14. 3.4. Một số thao tác cơ bản trên asp Người biên soạn: HTHT
  15. 3.3.1. Câu lệnh PHP và các khai báo Người biên soạn: HTHT
  16. -Các câu lệnh của PHP có phân biệt chữ hoa chữ thường, kết thúc một câu lệnh dùng ; - Các lệnh PHP có thể viết ở bất kỳ đâu trên trang HTML Người biên soạn: HTHT
  17. 3.4.2.Các cấu trúc điểu khiển của PHP + Cấu trúc if: if (biểu thức điều khiển) , khối câu lệnh 1;} else , khối câu lệnh 2;} + Câu lệnh switch switch (n) { case label1: khoi cau lenh 1 neu n=label1; break; case label2: khoi cau lenh 2 neu n=label2; break; . Default: khối câu lệnh N+1 nếu n khác các label trên; } Người biên soạn: HTHT
  18. + Câu lệnh for c1: for (bien_dem_khoitao; điều_kiện_lặp; thay_đổi_biến_đếm) { Khối câu lênh; } C2: VD foreach ($array as $value) { code to be executed; "; } ?> Người biên soạn: HTHT
  19. "; } $i++; } ?> + Câu lệnh do while "; } while ($i Người biên soạn: HTHT
  20. 3.4.3. Hàm của PHP Người biên soạn: HTHT
  21. ”; $t=$a+$b; } Return $t; } echo “My name is ”; writeName(“Kai Jim”); echo “tong cua 3+5=“.tong(3,5); ?> Người biên soạn: HTHT
  22. 3.4.4. Các thao tác trên Form Người biên soạn: HTHT
  23. Nhận dữ liệu từ form HTML Có 2 phương thức trên form để nhận và xử lý dữ liệu từ form HTML của PHP a) Phưng thức GET ( ) Để nhận các dữ liệu từ FORM HTML theo phương thức Get bạn có thể dùng phương thức PHP sau: $_GET[“tên thành phần form”]; để nhận dữ liệu từ form html gửi đến: vd: $_GET[“nguoidung”]; Người biên soạn: HTHT
  24. Vd: Tệp hoi.htm gồm có 2 hộp text box là TEN và TUOI nằm trong một form theo phương thức Get để gửi yêu cầu đến tệp traloi.php Tệp hoi.htm Hä tªn: Tªn: Người biên soạn: HTHT
  25. Tệp traloi.php Xin chao, . Tuoi cua ban: . Xin chao, Tran Van Hung. Tuoi cua ban: 30. Người biên soạn: HTHT
  26. b) Phương thức POST ( ) Để nhận các dữ liệu từ FORM HTML theo phương thức POST bạn có thể dùng phưng thức $_POST[“tên thành phần form”] Người biên soạn: HTHT
  27. Vẫn ví dụ trên ta có: Tệp yeucau.htm Họ tên: Tên: Người biên soạn: HTHT
  28. Tệp traloi.php Xin chao, . Tuoi cua ban: . Xin chào, Tran Van Hung. Tuổi của ban: 30. Người biên soạn: HTHT
  29. 3.5. Kết nối dữ liệu MySQL Người biên soạn: HTHT
  30. Để kết nối cơ sở dữ liệu của MySQL các bạn thực hiện cú pháp sau: $ketnoi= mysql_connect(servername,username,password); Trong đó: -servername: tên máy chủ cài đặt MySQL (có thể là địa chỉ IP của máy) - username: Tên user để vào cơ sở dữ liệu của MySQL VD:-Password : tên mật khẩu vào cơ sở dữ liệu Người biên soạn: HTHT
  31. Để thi hành các truy vấn trong MySQL Sử dụng cú pháp sau: $ketqua= mysql_query(“câu lệnh truy vấn”, $ket_noi_mysql); Trong đó: - $ket_noi_mysql: được thực hiện ở trên -“câu lệnh truy vấn”: là các truy vấn tuân theo chuẩn SQL gồm có: Người biên soạn: HTHT
  32. “câu lệnh truy vấn” • CREATE DATABASE - tạo một cơ sở dữ liệu mới • ALTER DATABASE - chỉnh sửa một cơ sở dữ liệu • CREATE TABLE - tạo một bảng dữ liệu • ALTER TABLE - chỉnh sửa một bảng dữ liệu • DROP TABLE - xóa một bảng dữ liệu • SELECT - chọn lọc dữ liệu • UPDATE - chỉnh sửa dữ liệu • DELETE - xóa dữ liệu trong các bảng • INSERT INTO - bổ sung một bản ghi mới Người biên soạn: HTHT
  33. Nếu câu lệnh truy vấn là một select thì $ketqua trả về một tập các bản ghi tìm được khi đó bạn có thể sử dụng cú pháp sau để di chuyển đến từng bản ghi: $rs=mysql_fetch_array($ketqua); Mỗi lần gọi câu lệnh này $rs sẽ tham chiếu đến một bản ghi của $ketqua Người biên soạn: HTHT
  34. 3.6. Truy vấn dữ liệu Người biên soạn: HTHT
  35. Trong truy vấn CSDL có các truy vấn cơ bản bao gồm: Select, Insert, Delete, Update. a) Phát biểu SELECT Dùng để lọc ra các bản ghi từ các bảng dữ liệu hay từ các view: SELECT *FROM + *WHERE + *GROUP BY + *HAVING + *ORDER BY + Người biên soạn: HTHT
  36. Trong đó: - where : là điều kiện cần thiết để lọc dữ liệu. Các phép toán sử dụng trong biểu thức điều kiện: + Phép toán so sánh: >, =, , !>, !< + Các phép toán logic: and, or, not, between, in, Exists like (sử dụng dấu % để thay thế ký tự đại diện), - Order by tencot dùng để chọn cột sắp xếp tăng dần hay giảm dần Order by tencot DESC Order by cot1+cot2 DESC Order by tencot ASC Order by tencot1, tencot2, tencot3 ASC Order by tencot1+tencot2, tencot3 DESC -Group by : Khi truy vấn mẩu tin của một hay nhiều bảng, thông thường trường nào đó có cùng giá trị được lặp lại nhiều lần khi đó chúng ta muốn nhóm các thành phần này lại chỉ hiển thị một lần và thống kê số thành phần thuộc nhóm tổng giá trị nào đó của nhóm ta có thể sử dụng kết hợp với select và một số hàm thống kê trong SQL để thực hiện theo ví dụ sau: Select manganh, count(manganh), sum(dvht) from Monhoc Group by manganh Order by manganh Người biên soạn: HTHT
  37. b) Nhập dữ liệu INSERT Insert into tenbang*(ds trường)+ values (ds giá trị) vd1: chèn giá trị cụ thể insert into monhoc(mamon, tenmon,manganh, dvht) values(‘002’,’Lt asp’, ‘CT’, 5) vd2: chèn từ một bảng khác, chèn tất cả các bản ghi từ bảng Monhoc vào bảng MonhocTin với các bản ghi thuộc ngành CT insert into monhocTin select * from monhoc where manganh=’CT’ Người biên soạn: HTHT
  38. c) Cập nhật UPDATE Dùng sửa lại dữ liệu đã tồn tại trong bảng Cú pháp: UPDATE SET cot1=value1, [cot2=value2, ] [WHERE + ví dụ1: cập nhật cho bảng monhoc theo giá trị cụ thể update monhoc set dvht=dvht+1 where tenmon=’lập trình ASP’ ví dụ2: cập nhật cho bảng monhoc với giá trị từ một bảng khác update monhoc set manganh=(select manganh from nganhhoc where manganh=monhoc.manganh) where dvht>4 Người biên soạn: HTHT
  39. d) Xoá bản ghi DELETE Dùng để xoá một hay nhiều bảng ghi trong bảng cú pháp DELETE FROM WHERE ví dụ: Xoá các bản ghi thuộc tập dữ liệu của bảng khác Delete from monhoc where mamon in (select mamon from diemthi where diem<5) Người biên soạn: HTHT
  40. Truy vấn đến CSDL bằng PHP Người biên soạn: HTHT
  41. Để truy vấn đến cơ sở dữ liệu của MySQL bằng PHP chúng ta khảo sát ví dụ sau: Ta có CSDL QLDiem trên MySql với quyền truy nhập Username=root password=“” gồm các bảng sau: sinhvien (masv, tensv, ngaysinh, gioitinh,diachi, nganh) monhoc (mamon, tenmon, dvht,nganh) diem(masv, mamon, diem) Hãy đưa ra thông tin lên trang web: Người biên soạn: HTHT
  42. Các bước thực hiện: B1: Kết nối đến cơ sở dữ liệu B2: Phân tích phương pháp truy vấn (Select, Insert, Update, Delete) B3. Thi hành truy vấn B4: Trình bày thông tin trên trang web Người biên soạn: HTHT
  43. Đưa các sinh viên trong bảng sinhvien lên trang web. Ta viết trang web dssv.php sau: "; } mysql_close($con); // dong ket noi ?> Người biên soạn: HTHT
  44. Người biên soạn: HTHT
  45. Trình bày dữ liệu từ truy vấn dƣới dạng bảng của HTML "; { echo " " . $rs['masv'] . " "; die('Khong the ket noi: ' . mysql_error()); echo " " . $rs['hoten'] . " "; } echo " " . $rs['ngaysinh'] . " "; echo " " . $rs['gioitinh'] . " "; mysql_select_db("qldiem", $con); echo " " . $rs['diachi'] . " "; echo " "; $kq = mysql_query("SELECT * FROM sinhvien"); } echo " "; echo " mysql_close($con); Ma sinh vien ?> Ho ten Ngay sinh Gioi tinh Dia chi “; Người biên soạn: HTHT
  46. Người biên soạn: HTHT
  47. Một số truy vấn có điều kiện: Tìm kiếm bản ghi thoả mãn điều kiện nhập vào từ form HTML VD: tìm thông tin sinh viên khi biết mã sinh viên Hoi_masv.htm thongtin_sv.php Hiện ra thông tin bản ghi tìm được Người biên soạn: HTHT
  48. Tệp hoi_masv.htm Tim kiem sinh vien Ma sinh vien: Người biên soạn: HTHT
  49. Tệp thongtin_sv.php "; echo "Ho ten:". $rs['hoten']. " "; echo "Ngay sinh:" . $rs['ngaysinh']." "; echo "Gioi tinh:" . $rs['gioitinh']." "; } mysql_close($con); ?> Người biên soạn: HTHT
  50. Truy vấn trên nhiều bảng Muốn thực hiện tra cứu điểm sinh viên nằm trên 3 bảng: sinhvien, monhoc,diem. Sẽ cần hai trang diem_sv.htm và diem_sv.php Người biên soạn: HTHT
  51. Tệp diem_sv.htm Tim kiem sinh vien Ma sinh vien: Người biên soạn: HTHT
  52. Tệp diem_sv.php Ma sinh vien Ho ten Ngay sinh $con = mysql_connect("localhost","root",""); Ten mon if (!$con) Diem { lan thi die('Could not connect: ' . mysql_error()); "; } $ma=$_POST["ma"]; while($rs = mysql_fetch_array($kq)) $sql="SELECT { sv.masv,hoten,ngaysinh,tenmon,diem,lanthi "; echo " "; $sql=$sql." FROM sinhvien sv, diem,monhoc mh "; echo " ".$rs["masv"]." "; $sql=$sql. "WHERE sv.masv=diem.masv and echo " ". $rs['hoten']. " "; mh.mamon = diem.mamon and "; echo " " . $rs['ngaysinh']." "; $sql=$sql." sv.masv='$ma'"; echo " " . $rs['tenmon']." "; //echo $sql; echo " " . $rs['diem']." "; mysql_select_db("qldiem",$con); echo " " . $rs['lanthi']." "; echo " "; $kq=mysql_query($sql); } if($kq) mysql_close($con); echo " ?> Người biên soạn: HTHT
  53. Xoá bản ghi thoả mãn điều kiện nhận từ form HTML. Hãy xóa một bản ghi trong bảng tbl_sv khi biết mã số Người biên soạn: HTHT
  54. Mã nguồn cho 2 tệp Xoa_sv.htm và Xoa_sv.php Xoa thong tin sinh vien Ma sinh vien: Người biên soạn: HTHT
  55. Xoa_sv.php Người biên soạn: HTHT
  56. Bổ sung một bản ghi vào bảng sinhvien dữ liệu nhận được từ Form HTML Người biên soạn: HTHT
  57. Việc bổ sung trên thực hiện bởi 2 tệp bosung_sv.htm và bosung_sv.php Tệp bosung_sv.htm Bổ sung thông tin sinh viên mới Mã sinh viên: Họ tên: Ngày sinh: Giới tính: Địa chỉ: Mã ngành: Người biên soạn: HTHT
  58. Tệp bosung_sv.php Người biên soạn: HTHT
  59. Sửa chữa nội dung bản ghi của sinh viên khi biết mã số Người biên soạn: HTHT
  60. Công việc trên được thực hiện qua các tệp sau: sua_sv.htm, ktra_tt_sv.php, sua_sv.php Tệp sua_sv.htm Sua sinh vien khi biet ma so: Ma sinh vien: Người biên soạn: HTHT
  61. tệp ktra_tt_sv.php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } $ma=$_POST["ma"]; $sql="select * from sinhvien where masv='$ma'"; mysql_select_db("qldiem",$con); $kq=mysql_query($sql); if($rs = mysql_fetch_array($kq)) { echo " "; echo "Ma sinh vien: "; echo "Ho ten: "; echo "Ngay sinh: "; echo "Gioi tinh: "; echo "Dia chi: "; echo "Ma nganh: "; echo " "; echo " "; } mysql_close($con); ?> Người biên soạn: HTHT
  62. Tệp sua_sv.php Người biên soạn: HTHT
  63. 3.7. Quản lý phiên làm việc Người biên soạn: HTHT
  64. Bạn có thể lưu thông tin trong suốt một phiên làm việc trên website trên Session của PHP. Bạn có thể dùng nó để trang đổi thông tin giữa các trang web. Để có thể lưu trữ trên sessiong bạn phải khởi động bằng cú pháp sau trước thẻ của trang web: Khai báo một biến để lưu bằng cách cú pháp sau: $_SESSION*‘ten_bien'+=giá_trị; Người biên soạn: HTHT
  65. Để hủy phiên: Bạn sẽ hủy toàn bộ các biến lưu trong Session Người biên soạn: HTHT
  66. 3.8. Quản lý người dùng cho website Người biên soạn: HTHT
  67. Cơ chế phân quyền cho các website khi truy vấn đến CSDL: Thường khi thực hiện các truy vấn insert, update, delete sẽ làm thay đổi thông tin của CSDL. Vì vậy chúng ta phải đưa ra cơ chế bảo mật cho dữ liệu. Bằng cách sau: -Phân quyền bằng cách cấp acount cho người sử dụng trang web: Người biên soạn: HTHT
  68. Bước 1: Thêm một bảng quyen sau vào CSDL Qldiem quyen(nguoidung, matkhau, quyen, mota) Bước 2: Xây dựng website thực hiện các trang web giới hạn truy cập đến cơ sở dữ liệu. Người biên soạn: HTHT
  69. Ví dụ: Xây dựng website truy vấn cơ sở dữ liệu bảng sinhvien gồm: - Đưa ra danh sách các sv trong bảng - Bổ sung sinh viên mới - Xóa một sinh viên khi biết mã sv - Chỉnh sửa thông tin sinh viên khi biết mã sv Với điều kiện người thực hiện phải có quyền “admin” mới được phép bổ sung sinh viên và xóa sinh viên. Còn nếu có quyền “user” thì chỉ được phép Xem danh sách sinh viên trong bản sinhvien Người biên soạn: HTHT
  70. Khảo sát công việc quản lý kiểm soát quyền truy nhập của người dùng: Bạn sẽ điều hướng cho người dùng vào trang login.htm. Nếu người sử dụng có quyền admin thì sẽ điều hướng cho phép người dùng Xóa, Sửa, Bổ sung. quyền admin Chọn xóa Login.htm sinh viên Người biên soạn: HTHT
  71. Nếu người dùng có quyền user thì người dùng chỉ có thể tra cứu thông tin trên CSDL Người biên soạn: HTHT
  72. Nếu đăng nhập thông tin không phải người dùng trong hệ thống thì sẽ yêu cầu nhập lại. Người biên soạn: HTHT
  73. Sau đây là mã nguồn một số trang web liên quan đến một quy trình cho phép quyền được xóa thông tin sinh viên Mã nguồn trang login.htm DANG NHAP HE THONG Username: Password: Người biên soạn: HTHT
  74. Tệp quanlyadmin.php $sql="select * from quyen where nguoidung='$nd' and matkhau='$mk'"; $kq=mysql_query($sql); if($rs=mysql_fetch_array($kq)) { $_SESSION["nd"]=$nd; // tao ra 2 bien nd và mk luu trong session $_SESSION["mk"]=$mk; if($rs['quyen']=="user") { echo "ban co quyen user,"; echo "ban chi co quyen tra cuu: "; echo "Kich "; } if($rs['quyen']=="admin") { echo "ban co quyen admin: "; echo " "; echo " "; echo " "; } } // tiếp bên slide sau Người biên soạn: HTHT
  75. else { ?> Ban khong co quyen trong he thong Người biên soạn: HTHT
  76. Tệp xoa_sinhvien.php Trong trang này bạn cũng phải kiểm tra lại đúng là có quyền admin không, vì có thể vô tình người sử dụng biết địa chỉ của trang này mà không qua login.htm vẫn có thể vào được. <?session_start(); $nd=$_SESSION["nd"]; $mk=$_SESSION["mk"]; $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("qldiem",$con); $sql="select * from quyen where nguoidung='$nd' and matkhau='$mk'"; $kq=mysql_query($sql); if($rs=mysql_fetch_array($kq)) , if($rs*‘quyen’+==“admin”), // tiếp slide sau Người biên soạn: HTHT
  77. ?> Xoa thong tin sinh vien Ma sinh vien: Các trang xoa_sv.php cũng thực hiện kiểm tra mật khẩu trước khi thực hiện xóa thông tin. Tương tự các trang khác liên quan đến bổ sung và chỉnh sửa cơ sở dữ liệu cũng phải kiểm tra quyền trước khi cho phép thực hiện. “Đừng xây cổng mà không xây tường bao” trộm sẽ vào ăn cắp tài sản Người biên soạn: HTHT
  78. Tìm hiểu thêm www.w3schools.com Người biên soạn: HTHT