SlideShare uma empresa Scribd logo
1 de 82
Baixar para ler offline
❑ PHP (Hypertext Preprocessor)
▪ Là ngôn ngữ script chạy trên server (Server
Scripting)
▪ Là mã nguồn mở, chạy được trên nhiều
platforms (Unix, Linux, Windows)
▪ PHP scripts:
• chứa text, thẻ HTML, script
• trả về kết quả cho trình duyệt một plain HTML
2
❑ Lịch sử phát triển
▪ PHP (1994): được phát triển để phát sinh các form đăng
nhập sử dụng giao thức HTTP của Unix
▪ PHP 2 (1995): script server, hỗ trợ CSDL, upload file,
khai báo biến, mảng, hàm đệ quy, câu điều kiện, biểu
thức, …
▪ PHP 3 (1998): hỗ trợ ODBC, đa hệ điều hành, giao thức
email (SNMP, IMAP)
▪ PHP 4 (2000): trở thành một thành phần độc lập cho các
webserver
▪ PHP 5 (2005): bổ sung Zend Engine II hỗ trợ lập trình
HĐT, XML, SOAPcho Web Services, SQLite
▪ PHP 7.1.0: Phiên bản mới nhất 8/2016
3
Tại sao PHP?
▪ Phần mềm mã nguồn mở, miễn phí
▪ Chạy trên nhiều platforms khác nhau (Unix,
Linux, Windows)
• Tương thích với hầu hết các web server: Apache,
IIS, Caudium, Netscape Enterprise Server
• Tương thích với hầu hết các HQT CSDL: MySQL,
Informix, Oracle, Sybase, Solid, PostgreSQL,
Generic ODBC, etc.
▪ Dễ học và phát triển nhanh các ứng dụng trên
Web
▪ Được sử dụng rộng rãi trong môi trường phát
triển ứng dụng Web
4
❑ Làm thế nào để chạy PHP
▪ Cài đặt PHP
• http://www.php.net/downloads.php
▪ Download web server Apache
• http://httpd.apache.org/download.cgi
▪ Cài đặt MySQL
• www.mysql.com
▪ Hoặc sử dụng các chương trình đã đóng gói
sẵn: Appserv, Wamp, Xampp, Vertrigo …
7
❑ Cơ chế hoạt động của WebServer
8
❑ Http header là các thông tin điều khiển
nằm trong các http request, http response
❑ Chứa các chỉ thị báo cho trình
duyệt/server
▪ Chuyển qua trang khác
▪ Không hiển thị file php
▪ Không lưu vào cache
10
❑ Xem http header bằng FireBug
▪ Mở firefox, nhấn F12 để bật FireBug
▪ Gõ địa chỉ 1 trang web
▪ Xem header trong cửa sổ FireBug
11
❑ Xem http header bằng LiveHTTPHeaders
(tiện ích mở rộng của Firefox)
http://livehttpheaders.mozdev.org
Header Description
Host Địa chỉ server đang truy cập
User-Agent Chứa thông tin về browser và HĐH
Accept Các kiểu dữ liệu mà browser chấp nhận
Accept-Language Chỉ ra những ngôn ngữ để server đáp ứng
Accept-Encoding Chỉ ra các kiểu file compress để server nén dữ
liệu
Accept-Charset Những character set mà browser chấp nhận
Connection Chỉ ra các trạng thái kết nối
Cookie Danh sách các biến cookie đã được tạo trước
đây
Referer Địa chỉ của trang web mà từ đó link đến trang
hiện tại
……………..
13
Header Description
Cache-Control Thông báo cho browser có cache dữ liệu hay
không
Content-Type Chỉ định kiểu MIME của tài liệu
Content-Language Ngôn ngữ trong nội dung trả về
Expires Chỉ định thời gian nội dung trả về sẽ hết hạn
Last-Modified Thời điểm tài liệu cập nhật lần gần đây nhất
Content-Encoding Kiểu nén dữ liệu gửi về browser
Server Tên của server
Content-Length Kích thước của tài liệu
Location Chuyển hướng sang trang khác
Set-cookie Tập các biến cookie mà server gửi đến browser
14
❑ 2xx: request thành công
❑ 3xx: chuyển hướng đến trang khác
❑ 4xx: có lỗi xảy ra trong request
❑ 5xx: server bị lỗi
❑ Một số status code thường gặp
▪ 200: OK, được gửi trong response thì request
thành công
▪ 302: tạm chuyển đến trang khác
▪ 400: bab request; 401: unauthorized;
403: forbidden; 404: trang không tìm thấy
▪ 500: internal server error
15
❑ Chuyển hướng (redirection): yêu cầu trình
duyệt chuyển sang trang khác
❑ Cú pháp: header(“location:url”)
❑ VD:
<?php
header(“location:login.php”)
?>
16
❑ Chuyển hướng (redirection):
❑ VD:
Nếu browser là IE thì chuyển đến trang welcome.html,
ngược lại chuyển đến welcome1.html
17
<?php
if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')>0)
header("location:welcome.html");
else header("location:welcome1.html");
?>
❑ Content-type: dùng để báo cho browser kiểu
dữ liệu mà webserver đang trả về cho
browser
❑ Cú pháp:
header(“content-type:MimeType”)
18
❑ Content-type:
❑ VD
19
<?php
// Chuẩn bị xuất 1 file pdf
header('Content-type: application/pdf');
// có tên là downloaded.pdf
header('Content-Disposition: attachment;
filename="downloaded.pdf"');
// nội dung từ file pdf nguồn test.pdf
readfile('test.pdf'); ?>
❑ Một số kiểu Mimetype
20
Mimetype Mô tả
application/msword File word
application/pdf File pdf
application/vnd.ms-excel File excel
Application/zip File zip
❑ Dùng để lưu thông tin (biến) của người
dùng
❑ Cookie được lưu ở máy client, được
browser quản lý
❑ Mỗi biến cookie có 1 thời gian quá hạn.
Vượt qua thời điểm đó, browser sẽ xóa
biến cookie đó
❑ Mỗi lần thực hiện request 1 trang, browser
sẽ gửi lại các biến cookie chưa hết hạn
❑ Được đặt trước thẻ <html>
22
❑ Tạo cookie
▪ Cú pháp
setcookie(“tên”, giá-trị [, thời
điểm quá hạn])
❑ Sử dụng cookie
▪ $_COOKIE là dãy biến toàn cục sẵn có trong
php
▪ Cú pháp sử dụng biến cookie
$_COOKIE[“TenBien”]
23
❑ setcookie.php
<?php
$value = "something from somewhere";
setcookie("TestCookie", $value, time() +
3600); /* hết hạn trong 1 giờ */
?>
❑ viewcookie.php
<?php
if(isset($_COOKIE["TestCookie"]==true))
echo $_COOKIE["TestCookie"];
?>
24
<?php
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");
// after the page reloads, print them out
if (isset($_COOKIE['cookie'])){
foreach ($_COOKIE['cookie'] as $name => $value){
$name = htmlspecialchars($name);
$value = htmlspecialchars($value);
echo "$name : $value <br />n";
}
}
?>
25
❑ Tạo file form.html với form đăng nhập
<form id="form1" name="form1" method="post "
action="xuly.php">
UserName <br/> <input type="text" name="u" id="u" /> <br/>
Password <br/> <input type="password" name="p" id="p"/><br/>
<input type="checkbox" name="nho" id="nho" /> nho <br/>
<input type="submit" name="btnLog" id="btnLog"
value="Submit"/>
</form>
26
❑ xuly.php
<?php
if (isset($_POST['nho'])==true) {
setcookie ("un", $_POST['u'], time() + 3600);
setcookie ("pu", $_POST['p'], time() + 3600);
}else {
setcookie ("un", $_POST['u'], -1);
setcookie ("pu", $_POST['p'], -1);
}
?>
27
❑ Session là đối tượng trên server, chứa
thông tin của từng user
❑ Mỗi user có vùng session riêng biệt
❑ $_SESSION là 1 dãy toàn cục có sẵn
trong php.
❑ Đọc và ghi giá trị session
▪ $_SESSION[“sessionName”] = value
▪ $_SESSION[“sessionName”][ ]= array(…)
▪ if (isset($_SESSION[“sessionName"])
echo $_SESSION[“sessionName"]; 30
❑ Xóa bỏ session
▪ unset($_SESSION['name']); hoặc
▪ session_destroy() // xóa bỏ all session
❑ VD
<?php
session_start();
$_SESSION[‘login']=1;
$_SESSION['name']=“Nguyễn Văn Hoa";
header("Location: index.php");
?>
31
❑ 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[“Login”] = 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
▪ …
32
❑ Tạo trang login.htm yêu cầu người dùng đăng nhập.
❑ 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
❑ 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:
unset($_SESSION[“IsLogin”]); 33
❑ Hàm thao tác trên file
▪ res fopen(string $filename, string $mode)
▪ bool fclose(res $handle)
▪ int fpassthru (res $handle): gửi toàn bộ nội
dung file đang mở cho browser (binary)
▪ int readfile (string $filename): gửi toàn bộ nội
dung file đang mở cho browser (text)
▪ string fread(res $handle, int $length) : đọc
một khối dữ liệu dài tối đa length (binary)
▪ int fwrite(res $handle, string $str [, int
$length]): ghi nội dung của chuỗi ra file
36
❑ Hàm thao tác trên thư mục
▪ bool chdir ( string $directory ): Chuyển thư
mục hiện hành
▪ string getcwd (): Trả về thư mục hiện hành
▪ resource opendir (string $path): Mở một thư
mục trước khi đọc nội dung
▪ void closedir ( res $dir_handle ): Đóng thư
mục đã mở trước đó
▪ bool mkdir ( string $pathname): Tạo thư mục
▪ bool rmdir ( string $dirname): Xóa thư mục
37
<?php
function removeDirectory($dir){
$s = DIRECTORY_SEPARATOR;
$dir = opendir($dir);
while(($file=readdir($dir))!==false){
if (is_file($dir . $s . $file)) {
unlink($dir . $s .$file);
} else if(is_dir($dir . $s .$file)
&&($file != ".")&&($file != "..")) {
removeDirectory($dir .$s. $file);
} }
closedir($dir); rmdir($dir);
printf("Directory %s removed", $dir);
}
?> 38
<html>
<head><title> Form for Uploading a File </title>
</head>
<body>
<h2> A simple form for uploading a file </h2>
<form action="upload.php" method="post
enctype="multipart/form-data">
Enter file name: <input type="file"
name="userfile"><br>
<input type="submit"><br>
</form>
</body> </html>
39
❑ userfile: tên của input trong form upload
❑ $_FILES['userfile']['name']
▪ Tên file đã được upload.
❑ $_FILES['userfile']['type']
▪ Kiểu của file được upload nếu trình duyệt có
thông tin này. Ví dụ "image/gif“
❑ $_FILES['userfile']['size']
▪ Kích thước của file đã upload tính bằng byte.
❑ $_FILES['userfile']['tmp_name']
▪ Vị trí file được lưu trữ tạm trên server.
❑ $_FILES['userfile']['error']
▪ Mã lỗi của việc upload (0 == no error)
40
<?php
$target = "D:/apps/xampp/htdocs/demo/";
$target = $target . basename(
$_FILES['uploaded']['name']) ;
$ok=1;
if(move_uploaded_file($_FILES['uploaded']
['tmp_name'], $target))
{
echo "The file ". basename(
$_FILES['uploadedfile']['name']). "
has been uploaded";
}
else { echo "Sorry, there was a problem
uploading your file.";
}
?>
41
❑ Upload theo định dạng file cho trước
42
❑ PHP hỗ trợ 2 cách sendmail
▪ PHP mail() –Non Authentication
▪ PHP PEAR package –SMTP Authentication
❑ Sử dụng mail()
▪ Cú pháp
mail(to,subject,message,headers,parameters)
❑ Sử dụng mail()
▪ Cú pháp
mail(to,subject,message,headers,parameters)
Key Description
To Địa chỉ người nhận
Subject Chủ đề, không xuống dòng
Message Nội dung thư
Header Thông tin thêm (vd: FROM, BCC, CC,…)
parameters Tham số cấu hình cho ứng dụng gửi mail
<?php
$to = ‘noname@yahoo.com';
$subject = 'Test 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";
?>
❑ Biểu thức chính qui (hay biểu thức quy
tắc) là mẫu chuỗi dùng để so khớp, kiểm
tra các chuỗi khác
❑ Php hỗ trợ các hàm
▪ preg_match kiểm tra, so khớp
▪ preg_replace tìm kiếm, thay thế
▪ preg_split tách chuỗi
▪ …
48
❑ Hàm preg_match($rule, $str, $result)
▪ $rule là chuỗi RE do ta quy định
▪ $str là chuỗi cần so sánh
▪ $result là kết quả trả về
❑ Hàm preg_replace($pattern,
$replacement, $subject)
▪ $partern: là chuỗi RE
▪ $replacement: là chuỗi thay thế
▪ $subject: là chuỗi muốn duyệt
❑ Hàm preg_split($pattern, $string)
❑ VD tìm những từ bắt đầu là A, sau đó là 2 ký
tự a-z
$string="Anh thương Ana anh đi đâu
đâu";
$pattern="/A[a-z][a-z]/";
preg_match($pattern, $string, $match);
echo $match[0];
50
❑ VD tìm thay từ cháu thành bé
$partern = "/cháu/";
$subject = "cháu lên ba, cháu đi mẫu giáo";
$replacement = "bé";
echo preg_replace($partern, $replacement,
$subject);
❑ VD tách chuỗi thành các chuỗi con
$ip = "192.168.7.23";
$iparr = preg_split("/./", $ip);
foreach($iparr as $t)
echo $t . "<br>";
❑ Trong biểu thức regex có 11 ký tự đặc biệt
▪ ^ : diễn tả vị trí bắt đầu của 1 chuỗi; “^Binh”
▪ $ : diễn tả vị trí kết thúc của 1 chuỗi; “đinh$”
▪ * : có nghĩa không hoặc nhiều ký tự; “ab*”
▪ + : có nghĩa MỘT hoặc nhiều ký tự; “ab+”
▪ ? : có nghĩa KHÔNG hoặc MỘT ký tự; “ab?”
▪ {x}: có nghĩ là x ký tự; “ab{2}”
▪ (): diễn tả 1 chuỗi ký tự; “a(bc)*”; “a(bc){1,5}”
▪ | : giống toán tử OR
▪ . : diễn tả 1 ký tự bất kỳ
▪ []: diễn tả tập hợp các ký tự
❑ Trong một website có thể chứa nhiều file
.htaccess
❑ .htaccess là file text dùng để cấu hình hoạt
động cho webserver Apache bằng nhiều
lệnh khác nhau
❑ mod_Rwrite: thay đổi địa chỉ trang web từ
một địa chỉ web động sang một địa chỉ web
tĩnh thông qua các luật chuyển đổi
VD: địa chỉ thật /news/tinthethao.php?idLT=1
được thay bằng địa chỉ ảo /news/tinthethao
❑ RewriteEngine on | off bật tắt chức năng
rewrite
❑ RewriteRule: luật điều chỉnh địa chỉ thật thành địa
chỉ ảo
❑ Cú pháp: RewriteRule pattern substitution [flags]
▪ flags: chỉ thị cách thức hoạt động
[R]: force Redirect
[F]: force ULR to be forbidden
[L]: last rule (dùng lại ở rule này)
[NC]: no case
▪ pattern: regex
▪ substitution: địa chỉ gốc do client request
❑ VD: RewriteRule ^dangky/$ dk.php [L]
❑ RewriteEngine on
❑ RewriteRule users/register/$ dangky.php [L]
❑ RewriteRule users/changepass/$ doipass.php [L]
❑ RewriteRule users/sendpass/$ goipass.php [L]
❑ RewriteRule users/logout/$ thoat.php [L]
❑ RewriteRule ^users/register/$ dangkythanhvien.php [L]
❑ RewriteRule ^users/changepass/$ doipass.php [L]
❑ RewriteRule ^users/sendpass/$ goipass.php [L]
❑ RewriteRule ^users/logout/$ thoat.php [L]
❑ Khai báo lớp
class tên_lớp{
// Danh sách các biến, hằng, lớp... (thuộc tính)
// Danh sách các hàm (phương thức)
}
<?php
class SimpleClass{
public $var = 'a default value';
public function displayVar() {
echo $this->var;
}
}
?>
60
❑ Tạo đối tượng
▪ $a = new SimpleClass();
▪ $a-> displayVar();
❑ Các phương thức OOP
▪ Đóng gói
▪ Đa thừa kế
▪ Overloading
61
<?php
class A {
protected function func1() { echo("I'm func1 in A!<br/>");}
private function func2() { echo("I'm func2 in A!<br/>");}
}
class B extends A {
public function func3() { echo("I'm func3 in B!<br/>");
$this->func1();
}
$b = new B;
$b->func1();
?>
62
❑ Định nghĩa class classDB.php
<?php
class db {
public $conn = NULL;
public $result = NULL;
public $host="localhost";
public $user="root";
public $pass="root";
public $database="php04";
private $author="Nguyễn Văn An";
?>
63
function __construct(){
$this->conn = mysql_connect($this->host, $this->user,
$this->pass);
mysql_select_db($this -> database, $this->conn);
mysql_query("set names 'utf8'");
}
function getdata($sql) {
$this->result = mysql_query($sql);
}
function fetchRow() {
if (is_resource($this->result) ==false) return false;
$row = mysql_fetch_assoc($this->result);
return $row;
}
64
❑ Sử dụng attribute
<?php
require_once "classDB.php";
$d = new db;
echo "<p>user = {$d->user} </p>";
echo "<p>author = {$d->author} </p>";
echo "<p>version = {$d->version} </p>";
?>
❑ Thực hiện câu query và hiển thị kết quả
<?php
require_once "classDB.php";
$d = new db;
$d->getdata("select * from tin where TinNoiBat=1");
while ($row = $d->fetchRow() )
echo "<p>" , $row['TieuDe'], "</p>";
?>
65
❑ Thông thường chúng ta có thể thực hiện việc
tìm kiếm theo nhiều tiêu chí khác nhau
❑ Vd tìm sản phẩm theo từ khóa, hãng SX, từ
giá – đến giá
▪ Phần tạo form
• Lấy dữ liệu từ db đưa vào select box hãng
• Dùng Jquery+Ajax lấy DS SP theo
hãng sx
▪ Phần xử lý kết quả
• Viết code lấy dữ liệu từ db
• Viết code hiện kết quả
67
❑ Tìm tin theo từ khóa, loại tin và thời gian
❑ Tìm theo nhiều loại dữ liệu khác nhau
❑ Tìm kiếm toàn văn: được thực hiện qua 2
bước
▪ Index: build chỉ mục
▪ Search: thực hiện tìm kiếm theo chỉ muc
68
❑ Phân quyền nhằm trả lời các câu hỏi:
▪ Người dùng nào? Được làm gì? Trên đối tượng
nào?
→ Tổ chức phân quyền trong ứng dụng web trả
lời 3 câu hỏi trên
❑ Sự phức tạp của phân quyền người dùng
phụ thuộc
▪ Qui mô của ứng dụng
▪ Số lượng và loại (nhóm) người dùng
▪ Trình độ và kinh nghiệm của người thiết kế phát
triển
❑ Tổ chức và kiểm tra người dùng dựa vào bảng
mô tả
Người dùng
/ Nhóm
Quyền Tài nguyên
/ Module
An, Hoa Xem Tin
An, Hoa Thêm Tin
An, Hoa Sửa Tin
An, Hoa Xóa Tin
An Xem Loại tin
An Thêm Loại tin
… … …
❑ Về tổ chức dữ liệu: cần ít nhất 2 bảng là
người dùng và nhóm
▪ Mỗi người dùng trong 1 hay nhiều nhóm
▪ Mỗi nhóm
• Diễn tả một hành động (xem, thêm, …) trên một loại tài
nguyên
• Hoặc diễn tả khả năng quản lý dữ liệu theo module
(quản trị mặt hàng, tin, quảng cáo, người dùng)
• Hoặc diễn tả theo phòng ban chức năng
▪ Nhiều loại tài nguyên, ví dụ: loại tin, tin, …
• Số lượng tài nguyên có cố định hay không
▪ Quyền áp dụng cho nhóm hay từng tài nguyên
riêng lẻ
❑ Kiểm tra quyền
▪ Được thực hiện đầu mọi trang php có nhu cầu
kiểm tra quyền
• Code kiểm tra quyền đặt trong 1 file riêng, sau đó dùng
require
<?php
$kt = checkPermission([tham số]);
if($kt==false)
header(“location:login.php?m=‘Access denied’”);
?>
▪ Hàm kiểm tra quyền dựa vào các group mà người
dùng đăng nhập là thành viên rồi tra trong bảng
Roles
▪ Khi người dùng login, username và userid được
lưu trong session
❑ JQuery: là thư viện JavaScript giúp đơn giản
cách viết JavaScript trong các trang web
❑ Thư viện của Jquery bao gồm
▪ HTML element selections
▪ HTML element manipulation
▪ CSS manipulation
▪ HTML event functions
▪ JavaScript Effects and animations
▪ HTML DOM traversal and modification
▪ AJAX
75
Nguồn : http://www.w3schools.com/jquery
❑ Downloady file jquery.js tại jquery.com và
lưu vào folder website
❑ Chèn Jquery vào thể head
<head>
<script type="text/javascript"
src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// chèn thêm mã jquery
});
});
</script>
</head>
76
❑ Mã JQuery phải nằm trong hàm
▪ $(document).ready(function(){…})
❑ Cú pháp
▪ $(selector).action()
$: định nghĩa jQuery; (selector): câu truy vấn, chọn
các phần tử HTML; action(): hành động trên các
phần tử đã chọn
❑ VD
▪ $(this).hide() - hides current element
▪ $("p").hide() - hides all paragraphs
▪ $("p.test").hide() - hides all paragraphs with
class="test“
77
❑ JQuery selector: chọn các phần tử HTML
78
Syntax Description
$(this) Current HTML element
$("p") All <p> elements
$("p.intro") All <p> elements with class="intro"
$("p#intro") All <p> elements with id="intro"
$("p#intro:first") The first <p> element with id="intro"
$(".intro") All elements with class="intro"
$("#intro") The first element with id="intro"
$("ul li:first") The first <li> element of each <ul>
$("[href$='.jpg']") All elements with an href attribute that ends with ".jpg"
$("div#intro .head")
All elements with class="head" inside a <div> element
with id="intro"
❑ Sự kiện trong JQuery: click, dblclick,
focus, mouseover
79
Event Method Description
$(document).ready(function) Binds a function to the ready event of a document
(when the document is finished loading)
$(selector).click(function)
Triggers, or binds a function to the click event of
selected elements
$(selector).dblclick(function)
Triggers, or binds a function to the double click
event of selected elements
$(selector).focus(function)
Triggers, or binds a function to the focus event of
selected elements
80
❑ Hiệu ứng trong Jquery: hide, show, toggle,
….
Function Description
$(selector).hide() Hide selected elements
$(selector).show() Show selected elements
$(selector).toggle() Toggle (between hide and show) selected elements
$(selector).slideDown() Slide-down (show) selected elements
$(selector).slideUp() Slide-up (hide) selected elements
$(selector).slideToggle() Toggle slide-up and slide-down of selected elements
$(selector).fadeIn() Fade in selected elements
$(selector).fadeOut() Fade out selected elements
$(selector).fadeTo() Fade out selected elements to a given opacity
$(selector).animate() Run a custom animation on selected elements
81
❑ JQuery thao tác với html thông qua các
hàm
Method Description
after() Inserts content after selected elements
append() Inserts content at the end of (but still inside) selected elements
before() Inserts content before selected elements
html() Sets or returns the content of selected elements
insertAfter() Inserts HTML markup or elements after selected elements
insertBefore() Inserts HTML markup or elements before selected elements
prepend()
Inserts content at the beginning of (but still inside) selected
elements
remove() Removes selected elements
…. …..
82
❑ Các hàm thao tác với CSS
▪ Gán thuộc tính CSS cho các phần tủ đã chọn
• $(selector).css(name,value)
• $(selector).css({properties})
▪ Lấy giá trị thuộc tính CSS của phần tử
• $(selector).css(name)
▪ VD
• $(this).css("background-color");
• $("p").css({"background-color":"yellow","font-size“
:"200%"});
❑ JQuery và Ajax: JQuery cung cấp thư viện cho Ajax
▪ url: địa chỉ trang sẽ request dữ liệu (php?)
▪ data: dữ liệu dạng cập đôi key/value sẽ gửi lên server
▪ callback: hàm sẽ thực hiện khi request xong
▪ type: kiểu dữ liệu sẽ send (html,xml,script, text, ...)
83
Method Description
$(selection).load(url,data,call
back)
Tải dữ liệu từ server vào các phần tử đã chọn
$.ajax(options) Tải dữ liệu từ server vào XMLHttpRequest object
$.get(url,data,callback,type) Tải dữ liệu từ xa sử dụng HTTP GET
$.post(url,data,callback,type) Tải dữ liệu từ xa sử dụng HTTP POST
$.getScript(url,callback) Tải và thực thi 1 JavaScript file
❑ Form chứa thể loại tin và loại tin
$(document).ready (function (){
$("#loaitin").load("layloaitin.php","idTL="+$("#theloai").val());
$("#theloai").change(function(){
$("#loaitin").load("layloaitin.php","idTL="+this.value);
});
});
84

Mais conteúdo relacionado

Semelhante a PHP.pdf

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
Ham Chơi
 
Web course php co ban
Web course   php co banWeb course   php co ban
Web course php co ban
慂 志慂
 
Qtu.vn sql - chuong 7
Qtu.vn  sql - chuong 7Qtu.vn  sql - chuong 7
Qtu.vn sql - chuong 7
Hoang le Minh
 

Semelhante a PHP.pdf (20)

Web301 slide 4
Web301   slide 4Web301   slide 4
Web301 slide 4
 
Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng webBài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
 
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
 
Lesson 2 practice
Lesson 2 practiceLesson 2 practice
Lesson 2 practice
 
Lập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnLập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biến
 
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoBài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
 
Ch06
Ch06Ch06
Ch06
 
Python moi
Python moiPython moi
Python moi
 
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
 
09 web course_-_php_nang_cao
09 web course_-_php_nang_cao09 web course_-_php_nang_cao
09 web course_-_php_nang_cao
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NET
 
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng CaoBài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
 
Golang web database3
Golang web database3Golang web database3
Golang web database3
 
Báo cáo tuần đồ án
Báo cáo tuần đồ ánBáo cáo tuần đồ án
Báo cáo tuần đồ án
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
 
Web301 slide 1
Web301   slide 1Web301   slide 1
Web301 slide 1
 
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
 
Php nang cao
Php nang caoPhp nang cao
Php nang cao
 
Web course php co ban
Web course   php co banWeb course   php co ban
Web course php co ban
 
Qtu.vn sql - chuong 7
Qtu.vn  sql - chuong 7Qtu.vn  sql - chuong 7
Qtu.vn sql - chuong 7
 

PHP.pdf

  • 1.
  • 2. ❑ PHP (Hypertext Preprocessor) ▪ Là ngôn ngữ script chạy trên server (Server Scripting) ▪ Là mã nguồn mở, chạy được trên nhiều platforms (Unix, Linux, Windows) ▪ PHP scripts: • chứa text, thẻ HTML, script • trả về kết quả cho trình duyệt một plain HTML 2
  • 3. ❑ Lịch sử phát triển ▪ PHP (1994): được phát triển để phát sinh các form đăng nhập sử dụng giao thức HTTP của Unix ▪ PHP 2 (1995): script server, hỗ trợ CSDL, upload file, khai báo biến, mảng, hàm đệ quy, câu điều kiện, biểu thức, … ▪ PHP 3 (1998): hỗ trợ ODBC, đa hệ điều hành, giao thức email (SNMP, IMAP) ▪ PHP 4 (2000): trở thành một thành phần độc lập cho các webserver ▪ PHP 5 (2005): bổ sung Zend Engine II hỗ trợ lập trình HĐT, XML, SOAPcho Web Services, SQLite ▪ PHP 7.1.0: Phiên bản mới nhất 8/2016 3
  • 4. Tại sao PHP? ▪ Phần mềm mã nguồn mở, miễn phí ▪ Chạy trên nhiều platforms khác nhau (Unix, Linux, Windows) • Tương thích với hầu hết các web server: Apache, IIS, Caudium, Netscape Enterprise Server • Tương thích với hầu hết các HQT CSDL: MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc. ▪ Dễ học và phát triển nhanh các ứng dụng trên Web ▪ Được sử dụng rộng rãi trong môi trường phát triển ứng dụng Web 4
  • 5.
  • 6.
  • 7. ❑ Làm thế nào để chạy PHP ▪ Cài đặt PHP • http://www.php.net/downloads.php ▪ Download web server Apache • http://httpd.apache.org/download.cgi ▪ Cài đặt MySQL • www.mysql.com ▪ Hoặc sử dụng các chương trình đã đóng gói sẵn: Appserv, Wamp, Xampp, Vertrigo … 7
  • 8. ❑ Cơ chế hoạt động của WebServer 8
  • 9.
  • 10. ❑ Http header là các thông tin điều khiển nằm trong các http request, http response ❑ Chứa các chỉ thị báo cho trình duyệt/server ▪ Chuyển qua trang khác ▪ Không hiển thị file php ▪ Không lưu vào cache 10
  • 11. ❑ Xem http header bằng FireBug ▪ Mở firefox, nhấn F12 để bật FireBug ▪ Gõ địa chỉ 1 trang web ▪ Xem header trong cửa sổ FireBug 11
  • 12. ❑ Xem http header bằng LiveHTTPHeaders (tiện ích mở rộng của Firefox) http://livehttpheaders.mozdev.org
  • 13. Header Description Host Địa chỉ server đang truy cập User-Agent Chứa thông tin về browser và HĐH Accept Các kiểu dữ liệu mà browser chấp nhận Accept-Language Chỉ ra những ngôn ngữ để server đáp ứng Accept-Encoding Chỉ ra các kiểu file compress để server nén dữ liệu Accept-Charset Những character set mà browser chấp nhận Connection Chỉ ra các trạng thái kết nối Cookie Danh sách các biến cookie đã được tạo trước đây Referer Địa chỉ của trang web mà từ đó link đến trang hiện tại …………….. 13
  • 14. Header Description Cache-Control Thông báo cho browser có cache dữ liệu hay không Content-Type Chỉ định kiểu MIME của tài liệu Content-Language Ngôn ngữ trong nội dung trả về Expires Chỉ định thời gian nội dung trả về sẽ hết hạn Last-Modified Thời điểm tài liệu cập nhật lần gần đây nhất Content-Encoding Kiểu nén dữ liệu gửi về browser Server Tên của server Content-Length Kích thước của tài liệu Location Chuyển hướng sang trang khác Set-cookie Tập các biến cookie mà server gửi đến browser 14
  • 15. ❑ 2xx: request thành công ❑ 3xx: chuyển hướng đến trang khác ❑ 4xx: có lỗi xảy ra trong request ❑ 5xx: server bị lỗi ❑ Một số status code thường gặp ▪ 200: OK, được gửi trong response thì request thành công ▪ 302: tạm chuyển đến trang khác ▪ 400: bab request; 401: unauthorized; 403: forbidden; 404: trang không tìm thấy ▪ 500: internal server error 15
  • 16. ❑ Chuyển hướng (redirection): yêu cầu trình duyệt chuyển sang trang khác ❑ Cú pháp: header(“location:url”) ❑ VD: <?php header(“location:login.php”) ?> 16
  • 17. ❑ Chuyển hướng (redirection): ❑ VD: Nếu browser là IE thì chuyển đến trang welcome.html, ngược lại chuyển đến welcome1.html 17 <?php if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')>0) header("location:welcome.html"); else header("location:welcome1.html"); ?>
  • 18. ❑ Content-type: dùng để báo cho browser kiểu dữ liệu mà webserver đang trả về cho browser ❑ Cú pháp: header(“content-type:MimeType”) 18
  • 19. ❑ Content-type: ❑ VD 19 <?php // Chuẩn bị xuất 1 file pdf header('Content-type: application/pdf'); // có tên là downloaded.pdf header('Content-Disposition: attachment; filename="downloaded.pdf"'); // nội dung từ file pdf nguồn test.pdf readfile('test.pdf'); ?>
  • 20. ❑ Một số kiểu Mimetype 20 Mimetype Mô tả application/msword File word application/pdf File pdf application/vnd.ms-excel File excel Application/zip File zip
  • 21.
  • 22. ❑ Dùng để lưu thông tin (biến) của người dùng ❑ Cookie được lưu ở máy client, được browser quản lý ❑ Mỗi biến cookie có 1 thời gian quá hạn. Vượt qua thời điểm đó, browser sẽ xóa biến cookie đó ❑ Mỗi lần thực hiện request 1 trang, browser sẽ gửi lại các biến cookie chưa hết hạn ❑ Được đặt trước thẻ <html> 22
  • 23. ❑ Tạo cookie ▪ Cú pháp setcookie(“tên”, giá-trị [, thời điểm quá hạn]) ❑ Sử dụng cookie ▪ $_COOKIE là dãy biến toàn cục sẵn có trong php ▪ Cú pháp sử dụng biến cookie $_COOKIE[“TenBien”] 23
  • 24. ❑ setcookie.php <?php $value = "something from somewhere"; setcookie("TestCookie", $value, time() + 3600); /* hết hạn trong 1 giờ */ ?> ❑ viewcookie.php <?php if(isset($_COOKIE["TestCookie"]==true)) echo $_COOKIE["TestCookie"]; ?> 24
  • 25. <?php setcookie("cookie[three]", "cookiethree"); setcookie("cookie[two]", "cookietwo"); setcookie("cookie[one]", "cookieone"); // after the page reloads, print them out if (isset($_COOKIE['cookie'])){ foreach ($_COOKIE['cookie'] as $name => $value){ $name = htmlspecialchars($name); $value = htmlspecialchars($value); echo "$name : $value <br />n"; } } ?> 25
  • 26. ❑ Tạo file form.html với form đăng nhập <form id="form1" name="form1" method="post " action="xuly.php"> UserName <br/> <input type="text" name="u" id="u" /> <br/> Password <br/> <input type="password" name="p" id="p"/><br/> <input type="checkbox" name="nho" id="nho" /> nho <br/> <input type="submit" name="btnLog" id="btnLog" value="Submit"/> </form> 26
  • 27. ❑ xuly.php <?php if (isset($_POST['nho'])==true) { setcookie ("un", $_POST['u'], time() + 3600); setcookie ("pu", $_POST['p'], time() + 3600); }else { setcookie ("un", $_POST['u'], -1); setcookie ("pu", $_POST['p'], -1); } ?> 27
  • 28.
  • 29. ❑ Session là đối tượng trên server, chứa thông tin của từng user ❑ Mỗi user có vùng session riêng biệt ❑ $_SESSION là 1 dãy toàn cục có sẵn trong php. ❑ Đọc và ghi giá trị session ▪ $_SESSION[“sessionName”] = value ▪ $_SESSION[“sessionName”][ ]= array(…) ▪ if (isset($_SESSION[“sessionName"]) echo $_SESSION[“sessionName"]; 30
  • 30. ❑ Xóa bỏ session ▪ unset($_SESSION['name']); hoặc ▪ session_destroy() // xóa bỏ all session ❑ VD <?php session_start(); $_SESSION[‘login']=1; $_SESSION['name']=“Nguyễn Văn Hoa"; header("Location: index.php"); ?> 31
  • 31. ❑ 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[“Login”] = 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 ▪ … 32
  • 32. ❑ Tạo trang login.htm yêu cầu người dùng đăng nhập. ❑ 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 ❑ 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: unset($_SESSION[“IsLogin”]); 33
  • 33.
  • 34. ❑ Hàm thao tác trên file ▪ res fopen(string $filename, string $mode) ▪ bool fclose(res $handle) ▪ int fpassthru (res $handle): gửi toàn bộ nội dung file đang mở cho browser (binary) ▪ int readfile (string $filename): gửi toàn bộ nội dung file đang mở cho browser (text) ▪ string fread(res $handle, int $length) : đọc một khối dữ liệu dài tối đa length (binary) ▪ int fwrite(res $handle, string $str [, int $length]): ghi nội dung của chuỗi ra file 36
  • 35. ❑ Hàm thao tác trên thư mục ▪ bool chdir ( string $directory ): Chuyển thư mục hiện hành ▪ string getcwd (): Trả về thư mục hiện hành ▪ resource opendir (string $path): Mở một thư mục trước khi đọc nội dung ▪ void closedir ( res $dir_handle ): Đóng thư mục đã mở trước đó ▪ bool mkdir ( string $pathname): Tạo thư mục ▪ bool rmdir ( string $dirname): Xóa thư mục 37
  • 36. <?php function removeDirectory($dir){ $s = DIRECTORY_SEPARATOR; $dir = opendir($dir); while(($file=readdir($dir))!==false){ if (is_file($dir . $s . $file)) { unlink($dir . $s .$file); } else if(is_dir($dir . $s .$file) &&($file != ".")&&($file != "..")) { removeDirectory($dir .$s. $file); } } closedir($dir); rmdir($dir); printf("Directory %s removed", $dir); } ?> 38
  • 37. <html> <head><title> Form for Uploading a File </title> </head> <body> <h2> A simple form for uploading a file </h2> <form action="upload.php" method="post enctype="multipart/form-data"> Enter file name: <input type="file" name="userfile"><br> <input type="submit"><br> </form> </body> </html> 39
  • 38. ❑ userfile: tên của input trong form upload ❑ $_FILES['userfile']['name'] ▪ Tên file đã được upload. ❑ $_FILES['userfile']['type'] ▪ Kiểu của file được upload nếu trình duyệt có thông tin này. Ví dụ "image/gif“ ❑ $_FILES['userfile']['size'] ▪ Kích thước của file đã upload tính bằng byte. ❑ $_FILES['userfile']['tmp_name'] ▪ Vị trí file được lưu trữ tạm trên server. ❑ $_FILES['userfile']['error'] ▪ Mã lỗi của việc upload (0 == no error) 40
  • 39. <?php $target = "D:/apps/xampp/htdocs/demo/"; $target = $target . basename( $_FILES['uploaded']['name']) ; $ok=1; if(move_uploaded_file($_FILES['uploaded'] ['tmp_name'], $target)) { echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded"; } else { echo "Sorry, there was a problem uploading your file."; } ?> 41
  • 40. ❑ Upload theo định dạng file cho trước 42
  • 41.
  • 42. ❑ PHP hỗ trợ 2 cách sendmail ▪ PHP mail() –Non Authentication ▪ PHP PEAR package –SMTP Authentication ❑ Sử dụng mail() ▪ Cú pháp mail(to,subject,message,headers,parameters)
  • 43. ❑ Sử dụng mail() ▪ Cú pháp mail(to,subject,message,headers,parameters) Key Description To Địa chỉ người nhận Subject Chủ đề, không xuống dòng Message Nội dung thư Header Thông tin thêm (vd: FROM, BCC, CC,…) parameters Tham số cấu hình cho ứng dụng gửi mail
  • 44. <?php $to = ‘noname@yahoo.com'; $subject = 'Test 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"; ?>
  • 45.
  • 46. ❑ Biểu thức chính qui (hay biểu thức quy tắc) là mẫu chuỗi dùng để so khớp, kiểm tra các chuỗi khác ❑ Php hỗ trợ các hàm ▪ preg_match kiểm tra, so khớp ▪ preg_replace tìm kiếm, thay thế ▪ preg_split tách chuỗi ▪ … 48
  • 47. ❑ Hàm preg_match($rule, $str, $result) ▪ $rule là chuỗi RE do ta quy định ▪ $str là chuỗi cần so sánh ▪ $result là kết quả trả về ❑ Hàm preg_replace($pattern, $replacement, $subject) ▪ $partern: là chuỗi RE ▪ $replacement: là chuỗi thay thế ▪ $subject: là chuỗi muốn duyệt ❑ Hàm preg_split($pattern, $string)
  • 48. ❑ VD tìm những từ bắt đầu là A, sau đó là 2 ký tự a-z $string="Anh thương Ana anh đi đâu đâu"; $pattern="/A[a-z][a-z]/"; preg_match($pattern, $string, $match); echo $match[0]; 50
  • 49. ❑ VD tìm thay từ cháu thành bé $partern = "/cháu/"; $subject = "cháu lên ba, cháu đi mẫu giáo"; $replacement = "bé"; echo preg_replace($partern, $replacement, $subject);
  • 50. ❑ VD tách chuỗi thành các chuỗi con $ip = "192.168.7.23"; $iparr = preg_split("/./", $ip); foreach($iparr as $t) echo $t . "<br>";
  • 51. ❑ Trong biểu thức regex có 11 ký tự đặc biệt ▪ ^ : diễn tả vị trí bắt đầu của 1 chuỗi; “^Binh” ▪ $ : diễn tả vị trí kết thúc của 1 chuỗi; “đinh$” ▪ * : có nghĩa không hoặc nhiều ký tự; “ab*” ▪ + : có nghĩa MỘT hoặc nhiều ký tự; “ab+” ▪ ? : có nghĩa KHÔNG hoặc MỘT ký tự; “ab?” ▪ {x}: có nghĩ là x ký tự; “ab{2}” ▪ (): diễn tả 1 chuỗi ký tự; “a(bc)*”; “a(bc){1,5}” ▪ | : giống toán tử OR ▪ . : diễn tả 1 ký tự bất kỳ ▪ []: diễn tả tập hợp các ký tự
  • 52.
  • 53. ❑ Trong một website có thể chứa nhiều file .htaccess ❑ .htaccess là file text dùng để cấu hình hoạt động cho webserver Apache bằng nhiều lệnh khác nhau
  • 54. ❑ mod_Rwrite: thay đổi địa chỉ trang web từ một địa chỉ web động sang một địa chỉ web tĩnh thông qua các luật chuyển đổi VD: địa chỉ thật /news/tinthethao.php?idLT=1 được thay bằng địa chỉ ảo /news/tinthethao ❑ RewriteEngine on | off bật tắt chức năng rewrite
  • 55. ❑ RewriteRule: luật điều chỉnh địa chỉ thật thành địa chỉ ảo ❑ Cú pháp: RewriteRule pattern substitution [flags] ▪ flags: chỉ thị cách thức hoạt động [R]: force Redirect [F]: force ULR to be forbidden [L]: last rule (dùng lại ở rule này) [NC]: no case ▪ pattern: regex ▪ substitution: địa chỉ gốc do client request ❑ VD: RewriteRule ^dangky/$ dk.php [L]
  • 56. ❑ RewriteEngine on ❑ RewriteRule users/register/$ dangky.php [L] ❑ RewriteRule users/changepass/$ doipass.php [L] ❑ RewriteRule users/sendpass/$ goipass.php [L] ❑ RewriteRule users/logout/$ thoat.php [L] ❑ RewriteRule ^users/register/$ dangkythanhvien.php [L] ❑ RewriteRule ^users/changepass/$ doipass.php [L] ❑ RewriteRule ^users/sendpass/$ goipass.php [L] ❑ RewriteRule ^users/logout/$ thoat.php [L]
  • 57.
  • 58. ❑ Khai báo lớp class tên_lớp{ // Danh sách các biến, hằng, lớp... (thuộc tính) // Danh sách các hàm (phương thức) } <?php class SimpleClass{ public $var = 'a default value'; public function displayVar() { echo $this->var; } } ?> 60
  • 59. ❑ Tạo đối tượng ▪ $a = new SimpleClass(); ▪ $a-> displayVar(); ❑ Các phương thức OOP ▪ Đóng gói ▪ Đa thừa kế ▪ Overloading 61
  • 60. <?php class A { protected function func1() { echo("I'm func1 in A!<br/>");} private function func2() { echo("I'm func2 in A!<br/>");} } class B extends A { public function func3() { echo("I'm func3 in B!<br/>"); $this->func1(); } $b = new B; $b->func1(); ?> 62
  • 61. ❑ Định nghĩa class classDB.php <?php class db { public $conn = NULL; public $result = NULL; public $host="localhost"; public $user="root"; public $pass="root"; public $database="php04"; private $author="Nguyễn Văn An"; ?> 63
  • 62. function __construct(){ $this->conn = mysql_connect($this->host, $this->user, $this->pass); mysql_select_db($this -> database, $this->conn); mysql_query("set names 'utf8'"); } function getdata($sql) { $this->result = mysql_query($sql); } function fetchRow() { if (is_resource($this->result) ==false) return false; $row = mysql_fetch_assoc($this->result); return $row; } 64
  • 63. ❑ Sử dụng attribute <?php require_once "classDB.php"; $d = new db; echo "<p>user = {$d->user} </p>"; echo "<p>author = {$d->author} </p>"; echo "<p>version = {$d->version} </p>"; ?> ❑ Thực hiện câu query và hiển thị kết quả <?php require_once "classDB.php"; $d = new db; $d->getdata("select * from tin where TinNoiBat=1"); while ($row = $d->fetchRow() ) echo "<p>" , $row['TieuDe'], "</p>"; ?> 65
  • 64.
  • 65. ❑ Thông thường chúng ta có thể thực hiện việc tìm kiếm theo nhiều tiêu chí khác nhau ❑ Vd tìm sản phẩm theo từ khóa, hãng SX, từ giá – đến giá ▪ Phần tạo form • Lấy dữ liệu từ db đưa vào select box hãng • Dùng Jquery+Ajax lấy DS SP theo hãng sx ▪ Phần xử lý kết quả • Viết code lấy dữ liệu từ db • Viết code hiện kết quả 67
  • 66. ❑ Tìm tin theo từ khóa, loại tin và thời gian ❑ Tìm theo nhiều loại dữ liệu khác nhau ❑ Tìm kiếm toàn văn: được thực hiện qua 2 bước ▪ Index: build chỉ mục ▪ Search: thực hiện tìm kiếm theo chỉ muc 68
  • 67.
  • 68. ❑ Phân quyền nhằm trả lời các câu hỏi: ▪ Người dùng nào? Được làm gì? Trên đối tượng nào? → Tổ chức phân quyền trong ứng dụng web trả lời 3 câu hỏi trên ❑ Sự phức tạp của phân quyền người dùng phụ thuộc ▪ Qui mô của ứng dụng ▪ Số lượng và loại (nhóm) người dùng ▪ Trình độ và kinh nghiệm của người thiết kế phát triển
  • 69. ❑ Tổ chức và kiểm tra người dùng dựa vào bảng mô tả Người dùng / Nhóm Quyền Tài nguyên / Module An, Hoa Xem Tin An, Hoa Thêm Tin An, Hoa Sửa Tin An, Hoa Xóa Tin An Xem Loại tin An Thêm Loại tin … … …
  • 70. ❑ Về tổ chức dữ liệu: cần ít nhất 2 bảng là người dùng và nhóm ▪ Mỗi người dùng trong 1 hay nhiều nhóm ▪ Mỗi nhóm • Diễn tả một hành động (xem, thêm, …) trên một loại tài nguyên • Hoặc diễn tả khả năng quản lý dữ liệu theo module (quản trị mặt hàng, tin, quảng cáo, người dùng) • Hoặc diễn tả theo phòng ban chức năng ▪ Nhiều loại tài nguyên, ví dụ: loại tin, tin, … • Số lượng tài nguyên có cố định hay không ▪ Quyền áp dụng cho nhóm hay từng tài nguyên riêng lẻ
  • 71. ❑ Kiểm tra quyền ▪ Được thực hiện đầu mọi trang php có nhu cầu kiểm tra quyền • Code kiểm tra quyền đặt trong 1 file riêng, sau đó dùng require <?php $kt = checkPermission([tham số]); if($kt==false) header(“location:login.php?m=‘Access denied’”); ?> ▪ Hàm kiểm tra quyền dựa vào các group mà người dùng đăng nhập là thành viên rồi tra trong bảng Roles ▪ Khi người dùng login, username và userid được lưu trong session
  • 72.
  • 73. ❑ JQuery: là thư viện JavaScript giúp đơn giản cách viết JavaScript trong các trang web ❑ Thư viện của Jquery bao gồm ▪ HTML element selections ▪ HTML element manipulation ▪ CSS manipulation ▪ HTML event functions ▪ JavaScript Effects and animations ▪ HTML DOM traversal and modification ▪ AJAX 75 Nguồn : http://www.w3schools.com/jquery
  • 74. ❑ Downloady file jquery.js tại jquery.com và lưu vào folder website ❑ Chèn Jquery vào thể head <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ // chèn thêm mã jquery }); }); </script> </head> 76
  • 75. ❑ Mã JQuery phải nằm trong hàm ▪ $(document).ready(function(){…}) ❑ Cú pháp ▪ $(selector).action() $: định nghĩa jQuery; (selector): câu truy vấn, chọn các phần tử HTML; action(): hành động trên các phần tử đã chọn ❑ VD ▪ $(this).hide() - hides current element ▪ $("p").hide() - hides all paragraphs ▪ $("p.test").hide() - hides all paragraphs with class="test“ 77
  • 76. ❑ JQuery selector: chọn các phần tử HTML 78 Syntax Description $(this) Current HTML element $("p") All <p> elements $("p.intro") All <p> elements with class="intro" $("p#intro") All <p> elements with id="intro" $("p#intro:first") The first <p> element with id="intro" $(".intro") All elements with class="intro" $("#intro") The first element with id="intro" $("ul li:first") The first <li> element of each <ul> $("[href$='.jpg']") All elements with an href attribute that ends with ".jpg" $("div#intro .head") All elements with class="head" inside a <div> element with id="intro"
  • 77. ❑ Sự kiện trong JQuery: click, dblclick, focus, mouseover 79 Event Method Description $(document).ready(function) Binds a function to the ready event of a document (when the document is finished loading) $(selector).click(function) Triggers, or binds a function to the click event of selected elements $(selector).dblclick(function) Triggers, or binds a function to the double click event of selected elements $(selector).focus(function) Triggers, or binds a function to the focus event of selected elements
  • 78. 80 ❑ Hiệu ứng trong Jquery: hide, show, toggle, …. Function Description $(selector).hide() Hide selected elements $(selector).show() Show selected elements $(selector).toggle() Toggle (between hide and show) selected elements $(selector).slideDown() Slide-down (show) selected elements $(selector).slideUp() Slide-up (hide) selected elements $(selector).slideToggle() Toggle slide-up and slide-down of selected elements $(selector).fadeIn() Fade in selected elements $(selector).fadeOut() Fade out selected elements $(selector).fadeTo() Fade out selected elements to a given opacity $(selector).animate() Run a custom animation on selected elements
  • 79. 81 ❑ JQuery thao tác với html thông qua các hàm Method Description after() Inserts content after selected elements append() Inserts content at the end of (but still inside) selected elements before() Inserts content before selected elements html() Sets or returns the content of selected elements insertAfter() Inserts HTML markup or elements after selected elements insertBefore() Inserts HTML markup or elements before selected elements prepend() Inserts content at the beginning of (but still inside) selected elements remove() Removes selected elements …. …..
  • 80. 82 ❑ Các hàm thao tác với CSS ▪ Gán thuộc tính CSS cho các phần tủ đã chọn • $(selector).css(name,value) • $(selector).css({properties}) ▪ Lấy giá trị thuộc tính CSS của phần tử • $(selector).css(name) ▪ VD • $(this).css("background-color"); • $("p").css({"background-color":"yellow","font-size“ :"200%"});
  • 81. ❑ JQuery và Ajax: JQuery cung cấp thư viện cho Ajax ▪ url: địa chỉ trang sẽ request dữ liệu (php?) ▪ data: dữ liệu dạng cập đôi key/value sẽ gửi lên server ▪ callback: hàm sẽ thực hiện khi request xong ▪ type: kiểu dữ liệu sẽ send (html,xml,script, text, ...) 83 Method Description $(selection).load(url,data,call back) Tải dữ liệu từ server vào các phần tử đã chọn $.ajax(options) Tải dữ liệu từ server vào XMLHttpRequest object $.get(url,data,callback,type) Tải dữ liệu từ xa sử dụng HTTP GET $.post(url,data,callback,type) Tải dữ liệu từ xa sử dụng HTTP POST $.getScript(url,callback) Tải và thực thi 1 JavaScript file
  • 82. ❑ Form chứa thể loại tin và loại tin $(document).ready (function (){ $("#loaitin").load("layloaitin.php","idTL="+$("#theloai").val()); $("#theloai").change(function(){ $("#loaitin").load("layloaitin.php","idTL="+this.value); }); }); 84