Bài giảng môn Lập trình Web - Chương 3: Web động PHP với Web động
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:
- bai_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
- CHƢƠNG 3. WEB ĐỘNG PHP VỚI WEB ĐỘNG Người biên soạn: HTHT
- 3.1. Định nghĩa và đặc điểm của web động Người biên soạn: HTHT
- 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
- 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
- Kịch bản xử lý tình huống HỎI TRẢ LỜI Người biên soạn: HTHT
- 3.2. Tổ chức web động trên webserver Người biên soạn: HTHT
- 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
- IIS hoạt động như thế nào? Người biên soạn: HTHT
- 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
- 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
- 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
- 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
- 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
- 3.4. Một số thao tác cơ bản trên asp Người biên soạn: HTHT
- 3.3.1. Câu lệnh PHP và các khai báo Người biên soạn: HTHT
- -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
- 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
- + 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
- "; } $i++; } ?> + Câu lệnh do while "; } while ($i Người biên soạn: HTHT
- 3.4.3. Hàm của PHP Người biên soạn: HTHT
- ”; $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
- 3.4.4. Các thao tác trên Form Người biên soạn: HTHT
- 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
- 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
- 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
- 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
- Vẫn ví dụ trên ta có: Tệp yeucau.htm Họ tên: Tên: Người biên soạn: HTHT
- 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
- 3.5. Kết nối dữ liệu MySQL Người biên soạn: HTHT
- Để 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
- Để 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
- “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
- 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
- 3.6. Truy vấn dữ liệu Người biên soạn: HTHT
- 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
- 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
- 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
- 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
- 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
- Truy vấn đến CSDL bằng PHP Người biên soạn: HTHT
- Để 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
- 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
- Đư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
- Người biên soạn: HTHT
- 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
- Người biên soạn: HTHT
- 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
- Tệp hoi_masv.htm Tim kiem sinh vien Ma sinh vien: Người biên soạn: HTHT
- 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
- 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
- Tệp diem_sv.htm Tim kiem sinh vien Ma sinh vien: Người biên soạn: HTHT
- 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
- 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
- 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
- Xoa_sv.php Người biên soạn: HTHT
- 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
- 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
- Tệp bosung_sv.php Người biên soạn: HTHT
- 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
- 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
- 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
- Tệp sua_sv.php Người biên soạn: HTHT
- 3.7. Quản lý phiên làm việc Người biên soạn: HTHT
- 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
- Để 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
- 3.8. Quản lý người dùng cho website Người biên soạn: HTHT
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- else { ?> Ban khong co quyen trong he thong Người biên soạn: HTHT
- 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
- ?> 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
- Tìm hiểu thêm www.w3schools.com Người biên soạn: HTHT