1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình PHP nâng cao

69 174 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 69
Dung lượng 15,21 MB

Nội dung

Hướng đối tượng tt• Khai báo • Hàm tạo 4... Hướng đối tượng tt– Method phải được khai báo ngay bên trong khai báo lớp – Dùng biến giả $this để truy xuất các member và method trong lớp

Trang 1

PHP Advances

Luong Tran Hy Hien, FIT of HCMUP

Trang 2

Nội dung

1 Hướng đối tượng

2 Truyền nhận dữ liệu (POST/GET)

3 Cookies, Sessions

4 Xử lý ngày tháng

5 Xử lý tập tin & thư mục

6 Upload tập tin lên Server

7 Hình ảnh

8 E-mail, Secure E-mail

Trang 3

1 Hướng đối tượng

Trang 4

1 Hướng đối tượng (tt)

• Khai báo

• Hàm tạo

4

Trang 5

1 Hướng đối tượng (tt)

class tên_lớp

{

các thuộc tính và phương thức }

$tên_biến = new tên_lớp();

Đối tượng sẽ tự động bị hủy khi không còn tham chiếu nào đến nó

$tên_biến = NULL ;

Trang 6

1 Hướng đối tượng (tt)

– Method phải được khai báo ngay bên trong khai

báo lớp – Dùng biến giả $this để truy xuất các member và

method trong lớp – Dùng toán tử -> để truy xuất đến member và

Trang 7

1 Hướng đối tượng (tt)

public function construct (danh sách tham số)

{

khởi tạo giá trị các member }

constructor được tự động thực hiện khi đối tượng được tạo

public function destruct ()

{

dọn dẹp }

destructor được tự động thực hiện khi đối tượng bị hủy

7

7

Trang 8

1 Hướng đối tượng (tt)

Trang 9

• Khai báo

const TÊN_HẰNG = giá trị;

• Truy xuất

9

Trang 10

1 Hướng đối tượng (tt)

Trang 11

1 Hướng đối tượng (tt)

Trang 12

1 Hướng đối tượng (tt)

• Khai báo lớp con

class lớp_con extends lớp_cha

{

các thuộc tính và phương thức}

Tất cả các member và method được khai báo

public hay protected trong lớp cha được thừa kế

và có thể sử dụng trong lớp con

12

Trang 13

13

Trang 14

Sự đa hình

• Khai báo lớp trừu tượng

{

// các thuộc tính abstract public function phương_thức_trừu_tượng(…);

… // các phương thức khác }

Không thể tạo đối tượng trực tiếp từ lớp trừu tượng

Lớp con bắt buộc phải định nghĩa các phương thức trừu tượng của lớp cha

14

Trang 16

abstract class tên_lớp implements giao_diện

{

… }

Các lớp sử dụng Interface hay kế thừa từ một lớp sử dụng Interface bắt buộc phải định nghĩa tất cả các phương thức trong Interface đó

16

Trang 17

1 Hướng đối tượng (tt)

Trang 18

1 Hướng đối tượng (tt)

1 Hàm serialize() dùng để lưu trữ đối tượng, hàm trả về một chuỗi các byte để lưu thông tin của đối tượng

2 Hàm unserialize() dùng để khôi phục đối tượng được lưu giữ bởi hàm serialize()

<?php

class AClass { var $a ;

function AClass() { }

};

$ob1 = new AClass();

$ob1 ->a = 10 ;

$ob1 ->b = 100 ;

$ob1 ->c = “Nguyen Ngoc Thuy Hang" ;

$luu = serialize ( $ob1 );

echo " $luu <br>" ;

$ob2 = unserialize ( $luu );

var_dump ( $ob2 );

?>

Trang 19

2 Truyền nhận dữ liệu (POST/GET)

2.1 Cơ chế truyền nhận dữ liệu

2.2 Các cách truyền nhận dữ liệu

19

Trang 20

Cơ chế truyền nhận dữ liệu

Trang 21

Cơ chế truyền nhận dữ liệu

?

Trang 23

2 Truyền nhận dữ liệu (POST/GET)

• Trang web nhập dữ liệu

– Cách 1 : truyền dữ liệu trực tiếp qua url

• Sử dụng liên kết để sửa lại url

• Thông qua đối tượng location – Cách 2 : truyền dữ liệu thông qua form

• Sử dụng đối tượng < form >

• Nhập liệu thông qua các formfield

• Thực hiện việc truyền dữ liệu thông qua submit

• Hai phương thức gởi dữ liệu GET / POST

• Trang web nhận dữ liệu (dùng các biến toàn cục)

– Cách 1 : $_GET [“ biến ”]

– Cách 2 : $_POST [“ biến ”]

Trang 25

3.1 Cookies là gì?

của client

sẽ gửi kèm file cookie đã lưu lần trước lên server

Trang 26

3.2 Sử dụng cookies

• Lệnh ghi cookie

setcookie(name, value, expire, path, domain);

• name : Tên cookie

• value : Giá trị cookie

• expire : Thời điểm mà cookie hết hiệu lực

• path : Đường dẫn trên server mà cookie có hiệu lực

• domain : Xác định tên miền mà cookie được gởi đi

• Bắt buộc phải xuất hiện trước thẻ <html>

• Lấy giá trị cookie

echo $_COOKIE[“cookieName"];

• Xóa cookie

setcookie(“cookieName", "", time() -3600);

Trang 29

3.4 Session là gì?

 Là thông tin về client được server lưu trên máy của server

 Sử dụng session lưu định danh duy nhất cho từng client

 Mục đích lưu biến dữ liệu dùng chung cho nhiều trang

trong 1 phiên làm việc của client

Trang 30

3.5 Sử dụng session

• Khởi động Session

session_start();

• Ghi & Đọc giá trị Session

$_SESSION[“sessionVar”] = $value ;

$_SESSION[“sessionVar”] = array();

$_SESSION[“sessionVar”] [] = $value;

if (isset($_SESSION[“sessionVar"] )

echo $_SESSION [“sessionVar"];

• Hủy Biến trong Session

unset( $_SESSION[“sessionVar”] );

• Hủy cả Session

Trang 31

3.6 Ví dụ : Đếm số lần duyệt trang web

<?php

session_start( );

if (isset($_SESSION ["count"]))

$_SESSION ["count"] = $_SESSION ["count"] + 1;

else

$_SESSION ["count"] = 1;

print “ You've looked at this page ”

$_SESSION ['count'] “ times ”;

?>

Trang 32

3.6 VD2: Ứng dụng cho Login

• Làm thế nào để ngăn không cho người dùng truy cập vào các trang web nếu chưa đăng nhập?

$_SESSION[“Username”] : Lưu Tên đăng nhập

$_SESSION[“Authentication”] : Lưu Loại

quyền đăng nhập

Trang 33

Ứng dụng cho Login – Gồm 4 bước

1 Tạo trang login.html yêu cầu người dùng đăng nhập.

2 Tạo trang validateuser.php xử lí thông tin đăng nhập

từ trang login.htm

– Kết nối với CSDL, kiểm tra thông tin đăng nhập có hợp lệ hay không ?

• Nếu không hợp lệ thì cho redirect về trang login.html

• Nếu hợp lệ thì dùng một biến trong Session để lưu trạng thái login thành công

– Ví dụ: $_SESSION[“IsLogin”] = true

– Lưu ý : Phải đặt giá trị mặc định cho biến Session này là

false khi khởi tạo một Session.

3 Tạo trang logout.php là trang xử lý khi người dùng logout

 Reset trạng thái login là chưa đăng nhập

($_SESSION[“IsLogin”] = false).

Trang 34

Session - Ứng dụng cho Login

đoạn mã sau để kiểm tra người dùng đã

đăng nhập hay chưa, nếu chưa thì redirect lại

<?php

session_start();

if ( !isset( $_SESSION [“IsLogin”] ) ||

header(“Location: login.htm ”);

?>

Trang 35

Giỏ hàng (shopping cart)

Session : Array : Mathang [ ]

Session : Array : Soluong[ ]

{‘Book1’, ‘Book2’, ‘Book3’}

{13, 2, 7}

Xóa biến trong Session

Ghi xuống CSDL

Trang 36

Session – Cookie – Database

Số client Số trang web

sử dụng

Trang 37

Break

Trang 38

4 Xử lý ngày tháng

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

Trang 39

4 Xử lý ngày tháng

<?php

// Assuming today is: March 10th, 2001, 5:16:18 pm

$today = date ( "F j, Y, g:i a" ); // March 10, 2001, 5:16 pm

$today = date ( "m.d.y" ); // 03.10.01

$today = date ( "j, n, Y" ); // 10, 3, 2001

$today = date ( "Ymd" ); // 20010310

$today = date ( 'h-i-s, j-m-y, it is w Day z ' );

// 05-16-17, 10-03-01, 1631 1618 6 Fripm01

$today = date ( '\i\t \i\s \t\h\e jS \d\a\y.' ); // It is the 10th day.

$today = date ( "D M j G:i:s T Y" ); // Sat Mar 10 15:16:08 MST 2001

$today = date ( 'H:m:s \m \i\s\ \m\o\n\t\h' ); // 17:03:17 m is month

$today = date ( "H:i:s" ); // 17:16:17

?>

Trang 40

DAYS

d - day of the month 2 digits (01-31)

j - day of the month (1-31)

D - 3 letter day (Mon - Sun)

l - full name of day (Monday - Sunday)

N - 1=Monday, 2=Tuesday, etc (1-7)

S - suffix for date (st, nd, rd)

F - Full name of month (January - December)

m - 2 digit month number (01-12)

n - month number (1-12)

M - 3 letter month (Jan - Dec)

t - Days in the month (28-31)

YEAR

L - leap year (0 no, 1 yes)

o - ISO-8601 year number (Ex 1979, 2006)

Date and time formats

40

Trang 42

5 Xử lý tập tin & thư mục

Trang 43

5 Xử lý tập tin & thư mục (tt)

– sử dụng để chia sẻ các hàm dùng chung, các đoạn

mã chung trong một project có nhiều file.

– khác cú pháp #include của ngôn ngữ C, lệnh này không chèn mã lệnh vào file mà thực thi file php giống như cú pháp gọi hàm.

– thông báo warning nếu không tìm thấy file nhưng không dừng chương trình.

43

Trang 44

5 Xử lý tập tin & thư mục (tt)

Trang 45

5 Xử lý tập tin & thư mục (tt)

• Có thể đặt lệnh include bên trong 1 cấu trúc điềukiện hoặc cấu trúc lặp,

• Tùy theo điều kiện của cấu trúc mà include() cóđược thực hiện hay không, 1 hay nhiều lần,

• Việc này giúp hỗ trợ cho việc thiết kế kiến trúc

45

Trang 46

5 Xử lý tập tin & thư mục (tt)

điểm khác biệt là chỉ include 1 lần, lần sau nếu gặplại file này thì ko include nữa

Vì phân biệt chữ hoa/thường nên

include_one chèn thêm lần thứ hai

Trang 47

5 Xử lý tập tin & thư mục (tt)

Cách này dở vì khi cài đặt trên máy khác sẽ không tìm thấy file được include

Cách này tốt hơn, nhưng mỗi khi đổi vị trí của file được include thì phải sửa lại tại tất

cả các file thực hiện lời gọi include

• Cách tốt nhất là sử dụng include_path

(thiết lập trong file PHP.INI) đối với những file thư viện dùng chung được sử dụng nhiều (giống như đối với ngôn ngữ C)

Trang 48

5 Xử lý tập tin & thư mục (tt)

var_dump ( ini_get ("include_path"));

ini_set ("include_path", "/inc"); // Works in all PHP versions

var_dump ( ini_get ("include_path"));

ini_restore ("include_path");

var_dump ( ini_get ("include_path"));

?>

Trang 49

5 Xử lý tập tin & thư mục (tt)

file_exist(), is_file(), is_dir(), is_readable(),

is_writeable(), is_executable(), filesize(), fileatime()

print " $file is " ( is_file ( $file )? "" : "not " ) "a file<br/> \n " ;

print " $file is " ( is_dir ( $file )? "" : "not " ) "a directory<br/> \n " ; print " $file is " ( is_readable ( $file )? "" : "not " ) "readable<br/> \n " ; print " $file is " ( is_writable ( $file )? "" : "not " ) "writable<br/> \n " ; print " $file is " ( filesize ( $file )) " bytes<br/> \n " ;

print " $file was accessed on " date ( "D d M Y g:i A" ,

fileatime ( $file )) "<br/>" ; print " $file was modified on " date ( "D d M Y g:i A" ,

filemtime ( $file )) "<br/>" ; print " $file was changed on" date ( "D d M Y g:i A" ,

filectime ( $file )) "<br/>" ; }

outputFileTestInfo( "c: \\ windows \\ system32 \\ cmd.exe" );

?>

Trang 50

5 Xử lý tập tin & thư mục (tt)

fopen ( $filename , $mode );

fwrite ( $handle , $string );

fread ( $handle , $length );

fgets ( $handle );

sprintf ( $format );

fscanf ( $handle , $format );

fseek ( $handle , $offset );

fclose ( $handle );

Trang 51

5 Xử lý tập tin & thư mục (tt)

?>

Trang 54

while ($file=readdir($dir)) {

echo "$file\n";}

closedir($dir);

?>

Trang 55

6 Upload tập tin lên server

• Gửi các file lên server (upload) là một chức năngkhông thể thiếu đối với các ứng dụng Web-based

• Để form có thể upload file, ta phải xác định

• Với PHP, bạn có thể xác định kích thước lớn nhấtcủa file upload bằng cách đặt thêm 1 hiddenfield có tên MAX_FILE_SIZE trước control file

55

Trang 56

6 Upload tập tin lên server

file

Upload.php

$_FILES[“file”][ "name" ]

$_FILES[“file”][ "type" ]

$_FILES[“file”][ "size" ]

$_FILES[“file”][ "tmp_name" ]

• $_FILES["file”]["error"]

Trang 57

6 Upload tập tin lên server

$ FILES[' taptin ']['name'] Name of uploaded file test.gif

$_FILES[' taptin ']['tmp_name'] Path to temporary file /tmp/phprDfZvN

$_FILES[' taptin ']['size'] Size (in bytes) of uploaded file 6835

$_FILES[' taptin ']['error'] An error code corresponding

to a PHP constant

UPLOAD_ERR_FO RM_SIZE

$_FILES[' taptin ']['type'] MIME type of uploaded file

(where given by client)

image/gif

Mảng $_FILE

Trang 58

element named MAX_FILE_SIZE

6 Upload tập tin lên server

Mã lỗi

Trang 59

6 Upload tập tin lên server

Trang 60

6 Upload tập tin lên server

Trang 61

Kiểm tra lỗi, định dạng, kích

thước File upload

• “image/pjpeg”  IE nhận đây là file jpeg

– $_FILES[“…”][“size”] : Kích thước file tính theo byte

– $_FILES[“…”][“error”] : Mã lỗi khi upload File

• = 0 : Không có lỗi

• > 0 : Có lỗi

Trang 62

7 Hình ảnh

Vẽ ảnh từ văn bản

Trang 63

8 E-mail, Secure E-mail

• Sử dụng thư viện open source: PHP Mailer

Trang 64

Gởi email sử dụng Mail Server của GMail

Trang 66

Toán tử điều khiển lỗi

• Toán tử điều khiển lỗi (@) dùng để đặt trước các hàm,biểu thức Khi đó tất cả các thông báo lỗi trong hàm, biểu thức đó bị bỏ qua.

Trang 67

Tham khảo

• Website W3school

• Slide lập trình Web, ĐH KHTN, 2007

67

Trang 68

Q & A

Trang 69

THE END

Ngày đăng: 07/03/2015, 11:56

TỪ KHÓA LIÊN QUAN

w