190 likes | 372 Views
(phần tiếp theo) 6- Cookie 7- Session 8- Xử lý … Form 9- Gởi mail trong PHP 10- OOP trong PHP. Chương 2: Ngôn ngữ kịch bản PHP. Trainer: Ngô Đình Thưởng Faculty of Information Technology Danang College of Education. 6- Cookie
E N D
(phần tiếp theo) 6- Cookie 7- Session 8- Xử lý … Form 9- Gởi mail trong PHP 10- OOP trong PHP Chương 2:Ngôn ngữ kịch bản PHP Trainer: Ngô Đình Thưởng Faculty of Information Technology Danang College of Education
6- Cookie • a- Cookie là mẫu tin nhỏ, có cấu trúc, dạng text lưu ở máy client khi truy cập một website (nếu kịch bản trong trang đó có chức năng thiết lập cookie).Cookie được lưu ở thư mục : • C:\Documents and Settings\Administrator\Cookies • Ví dụ đây là một mẫu cookie khi viếng trang www.ibm.com • UnicaNIODID • 4yZ3oOSlqrO-WrSL3kV • ibm.com/ • 1600 • 1465922944 • 30475811 • 543399952 • 30113713 • * • (tên tệp ndt@ibm[1]) • ndt là PC name của client
b- Thiết lập cookie • Cú pháp: setcookie(name, value, expire[, path, domain]); • Trong PHP, câu lệnh setcookie phải đặt trước thẻ <html> • Ví dụ : • Trang CreateCookie.php • <?php • $expire=time()+60*60*24*30; // hết hạn sau 30 ngày • setcookie(“vhh", “Vu Huy Hung", $expire); • echo "Cookie has been created!"; • ?> • Hàm time() trả về số giây đã trôi qua bắt đầu từ 01-Jan-1970 • Một dạng thời gian dùng trong hệ điều hành Unix
d- Đọc cookie • Tệp ReadCookie.php • <html> • <body> • <?php • if (isset($_COOKIE[“vhh"])) • echo "Welcome " . $_COOKIE[“vhh"] . "!<br />"; • else • echo "Welcome guest!<br />"; • ?> • </body> • </html> • $_COOKIE[] là một biến mảng toàn cục • Hàm isset() kiểm tra một biến đã được khai báo, khởi gán chưa
7- Session • a- Session là một phiên làm việc kể từ khi client truy cập vào website cho đến khi đóng trình duyệt hay abandon(kết thúc) phiên. • PHP đưa ra biến toàn cục $_SESSION[] để lưu trữ thông tin, và biến này có thể truy cập từ mọi trang PHP trong phiên. • b- Khai báo và thiết lập Session • session_start(); • // hàm session_start() phải đặt trước thẻ <html> • $_SESSION['user']="Vo Huy Hung"; • Ví dụ : Trang Save_Session.php • <?php • session_start(); • $_SESSION['user']="Vo Huy Hung"; • header("Location:Read_Session.php"); • ?> • Hàm header() chuyển hướng trình duyệt đến URL sau Location
c- Truy cập biến Session • Trang : Read_Session.php • <?php session_start(); ?> • <html><body> • <? • if(isset($_SESSION['user'])) • $mess=$_SESSION['user']." đã đăng nhập"; • else ì • $mess=“Bạn chưa đăng nhập hệ thống!"; • echo $mess; • ?> • </body></html> • d- Xóa bỏ biến Session • unset($_SESSION[‘tên']); • session_destroy(); • Đây là các câu lệnh dùng khi Logout, tuy nhiên khi session_destroy() phải lưu ý, vì có xóa những biến Session của hệ thống không?
Tóm tắt: Thiết lập session_start(); $_SESSION[‘tên’]=giá_trị; Truy cập: session_start(); $biến = $_SESSION[‘tên’]; Xóa giá trị đã thiết lập : unset($_SESSION[‘tên’]); Hủy bỏ toàn bộ biến $_SESSION[]: session_destroy(); Session có rất nhiều ứng dụng, ví dụ như lưu trữ thông tin về giỏ hàng trong E-commerce
8- Nhận thông tin gởi từ Form • Giả sử method của Form là POST => server sẽ nhận được thông qua biến toàn cục $_POST[‘tên’], với ‘tên’ là giá trị của thuộc tính name của phần tử trong form. • Cú pháp Form • <form action=tệp_PHP method=post> • <!- - các phần tử của form - -> • </form> • Biệt lệ : Các checkbox cùng tên • Phải đặt cùng tên như là một phần tử của mảng động, ví dụ box[] • Khi truy cập ở server chỉ lấy phần tên, ví dụ $_POST[‘box’], và trả về là một mảng gồm các value được chọn. • Các trường hợp khác $_POST là một chuổi. • Có thể dùng $_REQUEST thay cho $_POST và $_GET. • Lưu ý: w3schools.com gọi chúng là Function, có lẽ không đúng!
Ví dụ: Tệp DangKy.htm <form action=XuLy.php action=post> Họ tên: <input type=text name=ht> Đăng ký:<input type=checkbox name=hp[]>Java<br> <input type=checkbox name=hp[]>C Pattern<br> <input type=checkbox name=hp[]>Trí tuệ nhân tạo<br> <input type=submit value=“Đăng ký”> </form> Tệp XuLy.php <?php $hoten=$_POST[‘ht’]; $hocphan=$_POST[‘hp’]; // trả về một mảng $str=“Sinh viên :”.$hoten.” đã đăng ký:<br>”; while(list($k,$v)=each($hocphan) $str+=$k.”-”$v.”<br>”; echo $str; ?> DEMO
9- Gởi mail trong PHP Cú pháp: mail(to,subject,message,headers,parameters) Ý nghĩa các tham số: - to, subject, message : như ý nghĩa các text box khi soạn mail - headers :tùy chọn, có thể sử dụng Bcc, Cc - parameter: tùy chọn, các thông số về trình soạn, gởi mail Trong phần message: sử dụng ký hiệu \n để xuống dòng.
Ví dụ : • Tệp Send_mail.php • <?php// mình viết thư gởi cho mình • $to = “ndthuong@dce.udn.vn";$subject = "Test mail";$message = "Hello! This is a simple email message.";$from = “ndt473@yahoo.com";$headers = "From: $from";@mail($to,$subject,$message,$headers); // không cho warning!echo "Mail Sent.";?> • Lưu ý: • người gởi phải có một đia chỉ mail. Theo dõi các kỹ thuật chống spam của mỗi trình gởi, nhận mail của người nhận! • Phối hợp với form để soạn thảo một trình gởi mail • Có thể lập trình để gởi mail đến danh sách các địa chỉ đã lưu trong CSDL
10- OOP trong PHP • a- Đặc điểm OOP trong PHP 5.0 : không cho phép đa kế thừa • b- Khai báo class • Class tên_class{ • // khai báo thuộc tính, bản chất là biến dùng trong class • // khai báo các phương thức, bản chất là các hàm. Riêng hàm dựng • // phải cùng tên với tên của class • // sử dụng từ khóa private hay public và protected để xác định chế • // độ truy xuất • } • c- Sử dụng • - Tạo biến đối tượng: $tên_object = new tên_class([giá trị khởi tạo]); • Sử dụng thuộc tính, phương thức: • + $tên_object->tên_thuộc tính; • + $tên_object->tên_phương thức([tham số]);
OOP tập trung vào việc “đóng gói” các phương thức và thuộc tính của một đối tượng nào đó. Trong OOP, các thành viên trong một lớp cần phải được xác định xem chúng có thể được truy xuất từ đâu (tính rõ ràng). Có ba khả năng xảy ra: - Chế độ public: Các thành viên nếu được thiết lập ở chế độ này sẽ được nhìn thấy và truy xuất ở mọi nơi trong chương trình. - Chế độ private: Các thành viên nếu được thiết lập ở chế độ này sẽ chỉ được nhìn thấy và truy xuất được ở bản thân lớp định nghĩa thành viên đó. - Chế độ protected: Chế độ này sẽ được dùng để giới hạn truy cập tới các lớp được thừa kế và bản thân lớp định nghĩa thành viên đó. Với PHP5, tất cả các thành viên của một lớp đều phải được khai báo tính rõ ràng với các từ khoá tương ứng là public, protected và private.
Ví dụ đơn giản Tệp Class1.php <?php class hoso{ public $ho_ten; public $ngay_sinh; function hoso($hten,$ngsinh){ $this->ho_ten = $hten; $this->ngay_sinh=$ngsinh; } } echo "Su dung ham constractor<br>"; $hung=new hoso(“Vũ Huy Hùng","25/7/1993"); echo "Họ tên: " . $hung->ho_ten . “, Ngày sinh: " . $hung->ngay_sinh; ?>
Ví dụ minh họa các từ khóa private, protected và public <?php class MyClass{ public $public = 'Public 1'; // truy xuất mọi nơi trang private $private = 'Private 1'; // chỉ t.x được bên trong lớp protected $protected = 'Protected 1'; // không cho kế thừa,private public function printHello(){ // được truy xuất mọi thuộc echo $this->public."<br>"; // bên trong lớp echo $this->protected."<br>"; echo $this->private."<br>"; } } class MyClass2extends MyClass{ // thừa kế từ lớp MyClass protected $protected = 'Protected2'; function printHello(){ // chồng hàm echo $this->public."<br>"; // thừa kế từ MyClass echo $this->protected."<br>"; // lấy thuộc tính riêng echo $this->private."<br>"; // không thừa kế từ MyClass } } Xem tiếp trang sau về sử dụng các lớp MyClass và MyClass2
$obj = new MyClass(); echo $obj->public; / echo $obj->protected; // lỗi: $protected đã bị đặt ở chế độ bảo vệ echo $obj->private; // lỗi: $private đã bị đặt ở chế độ riêng tư $obj->printHello(); // Hoạt động bình thường, do các thuộc tính được triệu gọi bên trong một phương thức nằm trong lớp. $obj2 = new MyClass2(); echo $obj->public; // Chạy tốt echo $obj2->private; // Chưa được định nghĩa echo $obj2->protected; // Gây lỗi $obj2->printHello(); // Hiển thị Public, Protected2, not Private ?>
Mở rộng một lớp <?phpclass hoso{ public $ho_ten = “Vũ Huy Hùng"; public $ngay_sinh = "25/7/1993"; public function setAtt($hoten,$ngaysinh){ $this->ho_ten = $hoten; $this->ngay_sinh=$ngaysinh; }} class hoso2 extends hoso{ public $noi_sinh=“Phước Sơn"; // bổ sung thuộc tính và hàm public function in_hoso() { echo "Họ tên: ". $this->ho_ten.".Ngày sinh: ". $this->ngay_sinh; echo "Nơi sinh: " . $this->noi_sinh; }} $tuyen=new hoso2; // thừa kế mọi t.tính,p.thức của cha $tuyen->in_hoso(); // vì lớp cha có mọi tt,pt cà public?> Trên internet, ta có thể tìm nhiều ví dụ về OOP trong PHP, nhất là các lớp truy cập CSDL.
Bài thực hành 1- Thử nghiệm và vận dụng các ví dụ 2- Làm lại các ví dụ về Class, nhưng để các lớp ở tệp tin bên ngoài rồi include vào trang cần thiết. 3- Sinh viên xây dựng một form với đầy đủ các phần tử của form để gởi dữ liệu cho server, xây dựng trang nhận và in ra các dữ liệu đã nhận. Dùng Innova Text Editor để định dạng cho văn bản trong Text Area, từ server hãy “echo” lại cho client. Có thể sử dụng các phần mềm tương tự Xem hướng dẫn sử dụng Innova Text Editor trên trang web của giảng viên: http://ndtfit.brinkster.net Lưu ý: khi copy và paste nhớ kiểm tra lại dấu nháy kép (không phù hợp với IDE của PHP). Các bài giảng chỉ trình bày những vấn đề cơ bản. Các vấn đề chuyên sâu sẽ được giải quyết trong các bài tập lớn
Thank you! http://ndtfit.brinkster.net