SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Lập trình và Thiết kế Web 1
© 2007 Khoa Công nghệ thông tin
Khoa CNTT – ĐH.KHTN
i 10
PHP nâng cao
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Nội dung
 Upload File
 Gửi Email
 Cookies
 Sessions
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Nội dung
 Upload File
 Gửi Email
 Cookies
 Sessions
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Upload File
 Cơ chế Upload File
 Thiết kế Form cho phép Upload File
 Xử lý Lưu File upload lên server
 Kiểm tra lỗi, định dạng, kích thước File upload
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Webserver
Cơ chế Upload File
Internet
or Intranet
Yêu cầu trang upload.php
Disk
driver
file
Upload.php
• $_FILES[“file"]["name"]
• $_FILES[“file"]["type"]
• $_FILES[“file"]["size"]
• $_FILES[“file"]["tmp_name"]
• $_FILES["file"]["error"]
• move_uploaded_file(tmpName, savedName)
• file_exists(savedName)
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Thiết kế Form cho phép Upload File
 Thiết lập thuộc tính Form
– Method : POST
– Enctype: multipart/form-data
--- UploadForm.htm ---
<FORM method="POST" action=“upload.php"
enctype="multipart/form-data">
<input type="FILE" name =“myfile" ><br>
<input type="submit" value=“Submit">
</FORM>
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Xử lý lưu File lên hệ thống file system trên Server
 move_uploaded_file(tmp_name, saved_name)
--- Upload.php ---
<?php
move_uploaded_file( $_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo “Temp. Stored in: " . $_FILES["file"]["tmp_name"];
?>
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Kiểm tra Lỗi, Định dạng & Kích thước File
--- Upload.php ---
<?php
if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo “Error Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
// Xu ly luu file
}
}
?>
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Cấu hình phân quyền WRITE cho thự mục upload
PHP Warning:
move_uploaded_file(upload/14.jpg)
[function.move-uploaded-file]:
failed to open stream: Permission
denied in .
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Nội dung
 Upload File
 Gửi Email
 Cookies
 Sessions
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Gửi Email
 Cơ chế gửi Email
 Gửi mail sử dụng Outlook
 Gửi mail sử dụng Web Mail
– PHP mail() – Non Authentication
– PHP PEAR package – SMTP Authentication
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Gửi Email
 Cơ chế gửi Email
 Gửi mail sử dụng Outlook
 Gửi mail sử dụng Web Mail
– PHP mail() – Non Authentication
– PHP PEAR package – SMTP Authentication
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Cơ chế gửi Email Mail server
Mail Client
mail(to,subject,message…)
Web Server
Internet
or Intranet
Internet
or Intranet
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Cơ chế gửi Email
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Ví dụ Cấu hình Gửi Email sử dụng GMAIL
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Gửi Email
 Cơ chế gửi Email
 Gửi mail sử dụng Outlook
 Gửi mail sử dụng Web Mail
– PHP mail() – Non Authentication
– PHP PEAR package – SMTP Authentication
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Gửi mail sử dụng cấu hình trong Mail Client - Outlook
 Sử dụng mailto
 Format: mailto:address[?key=setting][&key=setting] …
<A href="mailto:abc@yahoo.com?SUBJECT=Question&BODY=Plz answer">
Key Ý nghĩa
SUBJECT Tiêu đề Email
CC Danh sách địa chỉ Email người nhận, mỗi địa chỉ cách nhau bằng dấu chấm phẩy (;).
BCC Danh sách địa chỉ Email người nhận được ẩn mỗi địa chỉ cách nhau bằng dấu chấm phẩy (;).
BODY Nội dung Email.
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Gửi Email
 Cơ chế gửi Email
 Gửi mail sử dụng Outlook
 Gửi mail sử dụng Web Mail
– PHP mail() – Non Authentication
– PHP PEAR package – SMTP Authentication
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Gửi mail sử dụng PHP mail() - Non Authentication
 mail(to,subject,message,headers,parameters)
Key Specifies
TO Địa chì email người nhận
SUBJECT Tiêu đề Email (KHÔNG được chứa ký tự xuống dòng)
MESSAGE Nội dung Email
HEADERS
Thông tin thêm (vd: FROM, BCC, CC,…) Các thông tin này nên phân cách nhau
bằng ký tự xuống dòng (rn)
PARAMETERS Tham số cấu hình cho ứng dụng gửi mail
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Cấu hình mặc định của PHP mail() – Non Authentication
 Cấu hình mặc định được định nghĩa trong file php.ini
Default Ý nghĩa
SMTP localhost DSN hoặc IP Address của SMTP Server
smtp_port 25 Port của SMTP
sendmail_from NULL Địa chỉ người gửi
sendmail_path NULL Đường dẫn đến ứng dụng gửi mail
(UNIX)
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Ví dụ
<?php
// định nghĩa email người nhận
$to = „noname@yahoo.com';
// tiêu đề
$subject = 'Test email';
// nội dung email
$message = "Hello World!nnThis is my first mail.";
// định nghĩa email người gửi và email trả lời
$headers = "From: mymail@yahoo.comrnReply-To: replymail@yahoo.com";
// gửi email
$mail_sent = @mail( $to, $subject, $message, $headers );
// kiểm tra gửi thành công và thông báo
echo $mail_sent ? "Mail sent" : "Mail failed";
?>
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Gửi Email
 Cơ chế gửi Email
 Gửi mail sử dụng Outlook
 Gửi mail sử dụng Web Mail
– PHP mail() – Non Authentication
– PHP PEAR package – SMTP Authentication
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Gửi mail sử dụng PHP PEAR package – SMTP Authentication
1. Sử dụng PEAR package Mail.php
– require_once(„Mail.php‟);
2. Khởi tạo thể hiện để gửi mail sử dụng Mail::factory()
– $smtp = Mail::factory(„smtp‟, $params);
• $params[“host”] = “hostname”;
• $params[“auth”] = true;
• $params[“username”] = “smtp_username”;
• $params[“password”] = “smtp_password”;
3. Gửi mail sử dụng hàm send()
– $mail = $smtp->send($to, $headers, $message)
• $headers['From'] = 'from@example.com';
• $headers['To'] = $to;
• $headers['Subject'] = 'Test message';
• $headers['Cc'] = 'cc@example.com';
• $headers['Reply-To'] = 'from@example.com';
4. Kiểm tra lỗi gửi mail
– if (PEAR::isError($mail))
echo($mail->getMessage());
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Ví dụ
<?php
require_once "Mail.php";
$host = “smtp.gmail.com";
$username = “ttbhanh@gmail.com";
$password = "smtp_password";
$to = “noname@yahoo.com”;
$headers = array ('From' => ‟ttbhanh@gmail.com‟,
'Subject' => „Test send mail‟);
$smtp = Mail::factory('smtp', array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, „this is my message‟);
if (PEAR::isError($mail))
echo($mail->getMessage());
else
echo("<p>Message successfully sent!</p>");
?>
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Nội dung
 Upload File
 Gửi Email
 Cookies
 Sessions
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Cookies
 Là 1 tập tin được server lưu xuống máy của client
 Mỗi lần client gửi request 1 trang web, đồng thời sẽ gửi file
cookie này lên server
 Các điều khiển xử lý thông tin (lưu, lấy) do server thực hiện
 Thường được sử dụng để lưu thông tin cá nhân của client
Webserver
cookie
setcookie
$_COOKIE
Client
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Sử dụng Cookies
 Lệnh ghi cookie
– setcookie(name, value, expire, path, domain);
– setrawcookie(name, value, expire, path, domain);
• Name: tên cookie
• Value: giá trị cookie
• Expire: ngày/khoảng thời gian hết hạn hết hạn
• Path : đường dẫn mà cookie được gởi đi
• 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);
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Ví dụ Cookies
 Lưu thông tin đăng nhập
cookie
setcookie
$_COOKIE[fieldName]
Client
Lưu username & password
Webserver
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Nội dung
 Upload File
 Gửi Email
 Cookies
 Sessions
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Session
 Là thông tin về client được server lưu trên máy của server
 Sử dụng cookie 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
Webserver
Cookie: PHPSESSID
session_start
$_SESSION[sessname]
Client
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Sử dụng Session
 Khởi động Session
– session_start();
• Bắt buộc phải xuất hiện trước thẻ <html>
 Ghi & Đọc giá trị Session
– $_SESSION[“sessionName”] = value
– $_SESSION[“sessionName”][ ] = array(…)
– if (isset($_SESSION[“sessionName"])
echo $_SESSION[“sessionName"];
 Hủy Session
– session_destroy();
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Cấu hình Session
 Cấu hình trong php.ini
 ini_set(‘parameter’, value);
– Gọi trước hàm session_start();
Parameter Default
session.auto_start 0 Không tự động
session.cookie_lifetime 0 Tồn tại cho đến
khi đóng browser
session.name PHPSESSID Tên biến cookie
…
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Ví dụ Session
 Đếm số lần duyệt 1 trang web của 1 user
<?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.';
?>
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
Ứng dụng Session
 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?
 Ý tưởng
– Dùng các biến Session để lưu trạng thái đăng nhập của người
dùng:
$_SESSION[“IsLogin”] = 0/1 : Lưu trạng thái đăng nhập
$_SESSION[ “Username”] : Lưu Tên đăng nhập
$_SESSION[ “Authentication”] : Lưu Loại quyền đăng
nhập
…
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
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?
1. Tạo trang login.htm yêu cầu người dùng đăng nhập.
2. Tạo trang validateuser.php là trang xử lí thông tin đăng nhập từ trang
login
– Kết nối với CSDL, kiểm tra xem thông tin đăng nhập có đúng hay không.
– Nếu không đúng thì cho redirect đến trang login.htm.
– Còn nếu ĐÚNG thì dùng một biến Session để lưu trạng thái login thành
công lại.
• Ví dụ $_SESSION["IsLogin“] = 1.
• Lưu ý là phải đặt giá trị mặc định cho biến này là 0 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
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
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?
4. Trong tất cả các trang muốn bảo mật, phải thêm đoạn mã
sau để kiểm tra người dùng đã login hay chưa, nếu chưa
thì redirect lại trang login.htm
<?php
session_start();
if ($_SESSION["IsLogin“] != 1)
header(“Location: login.htm“);
?>
Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao
© 2007 Khoa CNTT - ĐHKHTN
So sánh
Clients
Web servers
Database/File
Session (client1)
Session (client2)cookies
cookies
Thông tin chia sẽ Vị trí
lưu trữ
Thời gian
tồn tại
Số client Số trang web
sử dụng
Database/File Server Dài N N
Session Server Ngắn 1 N
Cookies Client Dài 1 N
Internet
or Intranet

Weitere ähnliche Inhalte

Was ist angesagt?

Php03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongPhp03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongconglongit90
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsdVu Hung Nguyen
 
Lập trình web - HTML cơ bản
Lập trình web - HTML cơ bảnLập trình web - HTML cơ bản
Lập trình web - HTML cơ bảnNhóc Nhóc
 
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng webBài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng webMasterCode.vn
 

Was ist angesagt? (10)

Slide 01
Slide 01Slide 01
Slide 01
 
Php03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongPhp03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdong
 
07 web course 1 php co ban
07 web course   1 php co ban07 web course   1 php co ban
07 web course 1 php co ban
 
Slide 00 gioi thieu
Slide 00   gioi thieuSlide 00   gioi thieu
Slide 00 gioi thieu
 
Web301 slide 1
Web301   slide 1Web301   slide 1
Web301 slide 1
 
Lesson 19.xml
Lesson 19.xmlLesson 19.xml
Lesson 19.xml
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsd
 
Lập trình web - HTML cơ bản
Lập trình web - HTML cơ bảnLập trình web - HTML cơ bản
Lập trình web - HTML cơ bản
 
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng webBài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
 
Web301 slide 6
Web301   slide 6Web301   slide 6
Web301 slide 6
 

Ähnlich wie Php nang cao

PHP.pdf
PHP.pdfPHP.pdf
PHP.pdfTinPh6
 
Slide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfSlide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfHuyVnh4
 
Postfix Dovecot CentOS 6.5
Postfix Dovecot CentOS 6.5Postfix Dovecot CentOS 6.5
Postfix Dovecot CentOS 6.5thienma217
 
(274364013) baibaocaogiuaky 140505213913-phpapp02
(274364013) baibaocaogiuaky 140505213913-phpapp02(274364013) baibaocaogiuaky 140505213913-phpapp02
(274364013) baibaocaogiuaky 140505213913-phpapp02lehuyvinh
 
CVNguyenThanhLam-102015-Vi
CVNguyenThanhLam-102015-ViCVNguyenThanhLam-102015-Vi
CVNguyenThanhLam-102015-ViLam Nguyen
 
Reveal the Power of Php
Reveal the Power of PhpReveal the Power of Php
Reveal the Power of PhpVõ Duy Tuấn
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Ham Chơi
 
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao KhanhPham
 
Kiến thức cần thiết làm việc
Kiến thức cần thiết làm việcKiến thức cần thiết làm việc
Kiến thức cần thiết làm việcmanhvokiem
 
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì?  9 Thứ thú vị có thể làm với PHPPHP có thể làm gì?  9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHPNIIT - ICT Hà Nội
 
php_nangcao [compatibility mode]
php_nangcao [compatibility mode]php_nangcao [compatibility mode]
php_nangcao [compatibility mode]vokhuyet187
 
[ST] Tài liệu thiết kế website cho người mới bắt đầu
[ST] Tài liệu thiết kế website cho người mới bắt đầu[ST] Tài liệu thiết kế website cho người mới bắt đầu
[ST] Tài liệu thiết kế website cho người mới bắt đầuTin Học KEY
 
Python moi
Python moiPython moi
Python moiDÉp LÊ
 
Web1012 slide 1
Web1012   slide 1Web1012   slide 1
Web1012 slide 1Cà Rốt
 
Htaccess
HtaccessHtaccess
HtaccessLê Tú
 

Ähnlich wie Php nang cao (20)

PHP.pdf
PHP.pdfPHP.pdf
PHP.pdf
 
Slide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfSlide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdf
 
Postfix Dovecot CentOS 6.5
Postfix Dovecot CentOS 6.5Postfix Dovecot CentOS 6.5
Postfix Dovecot CentOS 6.5
 
(274364013) baibaocaogiuaky 140505213913-phpapp02
(274364013) baibaocaogiuaky 140505213913-phpapp02(274364013) baibaocaogiuaky 140505213913-phpapp02
(274364013) baibaocaogiuaky 140505213913-phpapp02
 
CVNguyenThanhLam-102015-Vi
CVNguyenThanhLam-102015-ViCVNguyenThanhLam-102015-Vi
CVNguyenThanhLam-102015-Vi
 
Lesson 2 practice
Lesson 2 practiceLesson 2 practice
Lesson 2 practice
 
Reveal the Power of Php
Reveal the Power of PhpReveal the Power of Php
Reveal the Power of Php
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952
 
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
 
Bai th08 php voi csdl
Bai th08 php voi csdlBai th08 php voi csdl
Bai th08 php voi csdl
 
Kiến thức cần thiết làm việc
Kiến thức cần thiết làm việcKiến thức cần thiết làm việc
Kiến thức cần thiết làm việc
 
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì?  9 Thứ thú vị có thể làm với PHPPHP có thể làm gì?  9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
 
9 application layer
9 application layer9 application layer
9 application layer
 
php_nangcao [compatibility mode]
php_nangcao [compatibility mode]php_nangcao [compatibility mode]
php_nangcao [compatibility mode]
 
Lab lap trinhmang_v3
Lab lap trinhmang_v3Lab lap trinhmang_v3
Lab lap trinhmang_v3
 
[ST] Tài liệu thiết kế website cho người mới bắt đầu
[ST] Tài liệu thiết kế website cho người mới bắt đầu[ST] Tài liệu thiết kế website cho người mới bắt đầu
[ST] Tài liệu thiết kế website cho người mới bắt đầu
 
Python moi
Python moiPython moi
Python moi
 
Web1012 slide 1
Web1012   slide 1Web1012   slide 1
Web1012 slide 1
 
Web1012 slide 1
Web1012   slide 1Web1012   slide 1
Web1012 slide 1
 
Htaccess
HtaccessHtaccess
Htaccess
 

Php nang cao

  • 1. Lập trình và Thiết kế Web 1 © 2007 Khoa Công nghệ thông tin Khoa CNTT – ĐH.KHTN i 10 PHP nâng cao
  • 2. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Nội dung  Upload File  Gửi Email  Cookies  Sessions
  • 3. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Nội dung  Upload File  Gửi Email  Cookies  Sessions
  • 4. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Upload File  Cơ chế Upload File  Thiết kế Form cho phép Upload File  Xử lý Lưu File upload lên server  Kiểm tra lỗi, định dạng, kích thước File upload
  • 5. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Webserver Cơ chế Upload File Internet or Intranet Yêu cầu trang upload.php Disk driver file Upload.php • $_FILES[“file"]["name"] • $_FILES[“file"]["type"] • $_FILES[“file"]["size"] • $_FILES[“file"]["tmp_name"] • $_FILES["file"]["error"] • move_uploaded_file(tmpName, savedName) • file_exists(savedName)
  • 6. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Thiết kế Form cho phép Upload File  Thiết lập thuộc tính Form – Method : POST – Enctype: multipart/form-data --- UploadForm.htm --- <FORM method="POST" action=“upload.php" enctype="multipart/form-data"> <input type="FILE" name =“myfile" ><br> <input type="submit" value=“Submit"> </FORM>
  • 7. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Xử lý lưu File lên hệ thống file system trên Server  move_uploaded_file(tmp_name, saved_name) --- Upload.php --- <?php move_uploaded_file( $_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo “Temp. Stored in: " . $_FILES["file"]["tmp_name"]; ?>
  • 8. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Kiểm tra Lỗi, Định dạng & Kích thước File --- Upload.php --- <?php if (($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo “Error Code: " . $_FILES["file"]["error"] . "<br />"; } else { // Xu ly luu file } } ?>
  • 9. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Cấu hình phân quyền WRITE cho thự mục upload PHP Warning: move_uploaded_file(upload/14.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in .
  • 10. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Nội dung  Upload File  Gửi Email  Cookies  Sessions
  • 11. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi Email  Cơ chế gửi Email  Gửi mail sử dụng Outlook  Gửi mail sử dụng Web Mail – PHP mail() – Non Authentication – PHP PEAR package – SMTP Authentication
  • 12. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi Email  Cơ chế gửi Email  Gửi mail sử dụng Outlook  Gửi mail sử dụng Web Mail – PHP mail() – Non Authentication – PHP PEAR package – SMTP Authentication
  • 13. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Cơ chế gửi Email Mail server Mail Client mail(to,subject,message…) Web Server Internet or Intranet Internet or Intranet
  • 14. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Cơ chế gửi Email
  • 15. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Ví dụ Cấu hình Gửi Email sử dụng GMAIL
  • 16. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi Email  Cơ chế gửi Email  Gửi mail sử dụng Outlook  Gửi mail sử dụng Web Mail – PHP mail() – Non Authentication – PHP PEAR package – SMTP Authentication
  • 17. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi mail sử dụng cấu hình trong Mail Client - Outlook  Sử dụng mailto  Format: mailto:address[?key=setting][&key=setting] … <A href="mailto:abc@yahoo.com?SUBJECT=Question&BODY=Plz answer"> Key Ý nghĩa SUBJECT Tiêu đề Email CC Danh sách địa chỉ Email người nhận, mỗi địa chỉ cách nhau bằng dấu chấm phẩy (;). BCC Danh sách địa chỉ Email người nhận được ẩn mỗi địa chỉ cách nhau bằng dấu chấm phẩy (;). BODY Nội dung Email.
  • 18. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi Email  Cơ chế gửi Email  Gửi mail sử dụng Outlook  Gửi mail sử dụng Web Mail – PHP mail() – Non Authentication – PHP PEAR package – SMTP Authentication
  • 19. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi mail sử dụng PHP mail() - Non Authentication  mail(to,subject,message,headers,parameters) Key Specifies TO Địa chì email người nhận SUBJECT Tiêu đề Email (KHÔNG được chứa ký tự xuống dòng) MESSAGE Nội dung Email HEADERS Thông tin thêm (vd: FROM, BCC, CC,…) Các thông tin này nên phân cách nhau bằng ký tự xuống dòng (rn) PARAMETERS Tham số cấu hình cho ứng dụng gửi mail
  • 20. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Cấu hình mặc định của PHP mail() – Non Authentication  Cấu hình mặc định được định nghĩa trong file php.ini Default Ý nghĩa SMTP localhost DSN hoặc IP Address của SMTP Server smtp_port 25 Port của SMTP sendmail_from NULL Địa chỉ người gửi sendmail_path NULL Đường dẫn đến ứng dụng gửi mail (UNIX)
  • 21. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Ví dụ <?php // định nghĩa email người nhận $to = „noname@yahoo.com'; // tiêu đề $subject = 'Test email'; // nội dung email $message = "Hello World!nnThis is my first mail."; // định nghĩa email người gửi và email trả lời $headers = "From: mymail@yahoo.comrnReply-To: replymail@yahoo.com"; // gửi email $mail_sent = @mail( $to, $subject, $message, $headers ); // kiểm tra gửi thành công và thông báo echo $mail_sent ? "Mail sent" : "Mail failed"; ?>
  • 22. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi Email  Cơ chế gửi Email  Gửi mail sử dụng Outlook  Gửi mail sử dụng Web Mail – PHP mail() – Non Authentication – PHP PEAR package – SMTP Authentication
  • 23. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Gửi mail sử dụng PHP PEAR package – SMTP Authentication 1. Sử dụng PEAR package Mail.php – require_once(„Mail.php‟); 2. Khởi tạo thể hiện để gửi mail sử dụng Mail::factory() – $smtp = Mail::factory(„smtp‟, $params); • $params[“host”] = “hostname”; • $params[“auth”] = true; • $params[“username”] = “smtp_username”; • $params[“password”] = “smtp_password”; 3. Gửi mail sử dụng hàm send() – $mail = $smtp->send($to, $headers, $message) • $headers['From'] = 'from@example.com'; • $headers['To'] = $to; • $headers['Subject'] = 'Test message'; • $headers['Cc'] = 'cc@example.com'; • $headers['Reply-To'] = 'from@example.com'; 4. Kiểm tra lỗi gửi mail – if (PEAR::isError($mail)) echo($mail->getMessage());
  • 24. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Ví dụ <?php require_once "Mail.php"; $host = “smtp.gmail.com"; $username = “ttbhanh@gmail.com"; $password = "smtp_password"; $to = “noname@yahoo.com”; $headers = array ('From' => ‟ttbhanh@gmail.com‟, 'Subject' => „Test send mail‟); $smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, „this is my message‟); if (PEAR::isError($mail)) echo($mail->getMessage()); else echo("<p>Message successfully sent!</p>"); ?>
  • 25. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Nội dung  Upload File  Gửi Email  Cookies  Sessions
  • 26. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Cookies  Là 1 tập tin được server lưu xuống máy của client  Mỗi lần client gửi request 1 trang web, đồng thời sẽ gửi file cookie này lên server  Các điều khiển xử lý thông tin (lưu, lấy) do server thực hiện  Thường được sử dụng để lưu thông tin cá nhân của client Webserver cookie setcookie $_COOKIE Client
  • 27. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Sử dụng Cookies  Lệnh ghi cookie – setcookie(name, value, expire, path, domain); – setrawcookie(name, value, expire, path, domain); • Name: tên cookie • Value: giá trị cookie • Expire: ngày/khoảng thời gian hết hạn hết hạn • Path : đường dẫn mà cookie được gởi đi • 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);
  • 28. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Ví dụ Cookies  Lưu thông tin đăng nhập cookie setcookie $_COOKIE[fieldName] Client Lưu username & password Webserver
  • 29. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Nội dung  Upload File  Gửi Email  Cookies  Sessions
  • 30. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Session  Là thông tin về client được server lưu trên máy của server  Sử dụng cookie 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 Webserver Cookie: PHPSESSID session_start $_SESSION[sessname] Client
  • 31. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Sử dụng Session  Khởi động Session – session_start(); • Bắt buộc phải xuất hiện trước thẻ <html>  Ghi & Đọc giá trị Session – $_SESSION[“sessionName”] = value – $_SESSION[“sessionName”][ ] = array(…) – if (isset($_SESSION[“sessionName"]) echo $_SESSION[“sessionName"];  Hủy Session – session_destroy();
  • 32. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Cấu hình Session  Cấu hình trong php.ini  ini_set(‘parameter’, value); – Gọi trước hàm session_start(); Parameter Default session.auto_start 0 Không tự động session.cookie_lifetime 0 Tồn tại cho đến khi đóng browser session.name PHPSESSID Tên biến cookie …
  • 33. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Ví dụ Session  Đếm số lần duyệt 1 trang web của 1 user <?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.'; ?>
  • 34. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN Ứng dụng Session  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?  Ý tưởng – Dùng các biến Session để lưu trạng thái đăng nhập của người dùng: $_SESSION[“IsLogin”] = 0/1 : Lưu trạng thái đăng nhập $_SESSION[ “Username”] : Lưu Tên đăng nhập $_SESSION[ “Authentication”] : Lưu Loại quyền đăng nhập …
  • 35. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN 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? 1. Tạo trang login.htm yêu cầu người dùng đăng nhập. 2. Tạo trang validateuser.php là trang xử lí thông tin đăng nhập từ trang login – Kết nối với CSDL, kiểm tra xem thông tin đăng nhập có đúng hay không. – Nếu không đúng thì cho redirect đến trang login.htm. – Còn nếu ĐÚNG thì dùng một biến Session để lưu trạng thái login thành công lại. • Ví dụ $_SESSION["IsLogin“] = 1. • Lưu ý là phải đặt giá trị mặc định cho biến này là 0 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
  • 36. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN 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? 4. Trong tất cả các trang muốn bảo mật, phải thêm đoạn mã sau để kiểm tra người dùng đã login hay chưa, nếu chưa thì redirect lại trang login.htm <?php session_start(); if ($_SESSION["IsLogin“] != 1) header(“Location: login.htm“); ?>
  • 37. Lập trình và Thiết kế Web 1 – Bài 9 : PHP nâng cao © 2007 Khoa CNTT - ĐHKHTN So sánh Clients Web servers Database/File Session (client1) Session (client2)cookies cookies Thông tin chia sẽ Vị trí lưu trữ Thời gian tồn tại Số client Số trang web sử dụng Database/File Server Dài N N Session Server Ngắn 1 N Cookies Client Dài 1 N Internet or Intranet