Hoạt động của Web Server... Hoạt động của Web Server... Yêu cầu cài đặt•• Download Apache Server Download Apache Server Download Apache for free here : http://httpd.apache.org/download.
Trang 1Đại Học Sư Phạm Tp Hồ Chí Minh
Đại Học Sư Phạm Tp Hồ Chí Minh
LẬP TRÌNH WEB PHP
Ch ươ ng 02: PHP C Ơ B Ả N
Trang 2NỘI DUNG
• Ph ần 2: PHP cơ bản
Trang 33 Yêu c Yêu cầầu cài u cài đặđặt t
a Web server (Apache, IIS)
Trang 41 Giới thiệu PHP – Lịch sử
•• PHP PHP : Rasmus Lerdorf in 1994 (được phát triển để phátsinh các form đăng nhập sử dụng giao thức HTTP của Unix)
•• PHP PHP 2 2 ((1995 1995)) : Chuyển sang ngôn ngữ script xử lý trên
hàm đệ quy, câu điều kiện, biểu thức, …
•• PHP PHP 3 3 ((1998 1998)) : Hỗ trợ ODBC, đa hệ điều hành, giao thứcemail (SNMP, IMAP), bộ phân tích mã PHP (parser) của
email (SNMP, IMAP), bộ phân tích mã PHP (parser) của
Zeev Suraski và Andi Gutmans
•• PHP PHP 4 4 ((2000 2000)) : Trở thành một thành phần độc lập cho cácwebserver Parse đổi tên thành Zend Engine Bổ sung cáctính năng bảo mật cho PHP
•• PHP PHP 5 5 ((2005 2005)) : Bổ sung Zend Engine II hỗ trợ lập trình
Trang 51 Giới thiệu PHP – PHP là gì?
•• PHP PHP đượ c phát tri ể n t ừ ngôn ng ữ k ị ch b ả n
(script) v ớ i m ụ c đ ích xây d ự ng trang Web cá
nhân ( Personal Personal Home Home Page Page ) Sau đ ó đ ã đượ c phát tri ể n thành m ộ t ngôn ng ữ hoàn
ch ỉ nh và đượ c ư a chu ộ ng trên toàn th ế gi ớ i
trong vi ệ c phát tri ể n các ứ ng d ụ ng Web.
trong vi ệ c phát tri ể n các ứ ng d ụ ng Web.
•• PHP PHP là m ộ t ngôn ng ữ thông d ị ch.
• Là ngôn ng ữ server-side script, t ươ ng t ự
nh ư ASP, JSP, … th ự c thi ở phía Server.
• T ậ p tin PHP có ph ầ n m ở r ộ ng là php php
• Cú pháp t ươ ng t ự ngôn ng ữ C C & & Perl Perl
Trang 61 Giới thiệu PHP – Ưu điểm
•• Web Web Servers : Apache, Microsoft IIS, Caudium, Netscape Enterprise Server
•• H H ệ ệ đ đ i i ề ề u u hành hành : UNIX (HP-UX, OpenBSD, Solaris,
(Multi (Multi Platform) Platform)
•• H H ệ ệ đ đ i i ề ề u u hành hành : UNIX (HP-UX, OpenBSD, Solaris, Linux), Mac OSX, Windows NT/98/2000/XP/2003/vista
•• H H ệ ệ QTCSDL : Adabas D, dBase, Empress, FilePro (read-only), Hyperwave, IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, Direct MS-SQL, MySQL,
Trang 71 Giới thiệu PHP – Ưu điểm
PHP được sử dụng rộng rãi trên môi
PHP được sử dụng rộng rãi trên môi
trường phát triển web trường phát triển web
Trang 81 Giới thiệu PHP – Một số website dùng PHP
Trang 92 Hoạt động của Web Server
CƠ CHẾ HOẠT ĐỘNG
Trang 102 Hoạt động của Web Server
•• Apache Apache và IIS đượ c xây d ự ng để đ áp ứ ng các yêu
c ầ u (request) các t ậ p tin HTML
• Không hi ể u cách th ự c thi mã PHP ở phía server
•• Apache Apache s ử d ụ ng các modules để “hi ể u” cách th ự c
thi các đ o ạ n mã vi ế t b ằ ng PHP
thi các đ o ạ n mã vi ế t b ằ ng PHP
•• IIS IIS s ử d ụ ng t ậ p l ệ nh ISAPI - Internet Server
Application Programming Interface - để “hi ể u” các
l ệ nh c ủ a PHP và ASP
• Ngoài ra, c ả Apache và IIS đề u h ỗ tr ợ nhi ề u
Trang 112 Hoạt động của Web Server
Trang 122 Hoạt động của Web Server
Trang 133 Yêu cầu cài đặt
•• Download Apache Server Download Apache Server
Download Apache for free here :
http://httpd.apache.org/download.cgi
•• Download PHP Download PHP
Download PHP for free here :
Download PHP for free here :
http://www.php.net/downloads.php
•• Download MySQL Database Download MySQL Database
Download MySQL for free here :
http://www.mysql.com/downloads/index.html
Trang 15Phần 2: PHP căn bản
Trang 171 PHP và HTML
Trang 204 Khai báo biến
• Cú pháp: $ ten_bien = value ;
•• Không khai báo ki Không khai báo kiểu dữ liệu ểu dữ liệu
• Bi ế n t ự độ ng đượ c kh ở i t ạ o khi gán giá tr ị l ầ n đầ u
• Tên bi ế n
– Bao gồm các ký tự (A Z, a z), ký số(0 9),_
– Bao gồm các ký tự (A Z, a z), ký số(0 9),_
Trang 214 Khai báo biến
Trang 245 Kiểu dữ liệu
• Ki ể m tra ki ể u d ữ li ệ u
is_integer is_array unset
Trang 25print rand(); // Giá trị ngẫu nhiên từ 0 đến getmaxrand( )
print rand(1, 6); // Giá trị ngẫu nhiên từ 1 đến 6
trong PHP Manual
Trang 265 Kiểu dữ liệu
• Ki ểu string
– Toán t ử n ố i chu ỗ i “.”
$str=“Hello “ ”World!”; //$str = “Hello World!”;
– Phân bi ệ t d ấ u nháy đơ n, d ấ u nháy kép
$user = “Mr Bean”;
$user = “Mr Bean”;
print ‘Hi $user’; // Hi $user
print “Hi $user”;// Hi Mr Bean
print “Hi” $user;// ????
print “Hi” “$user”;// ????
Trang 275 Kiểu dữ liệu: Kiểu chuỗi (tt)
• Gi ớ i h ạ n b ở i nháy đơ n ( ‘ ) ho ặ c kép ( “ )
• Chu ỗ i đặ t trong nháy kép b ị thay th ế và x ử lý
ký t ự thoát Trong nháy đơ n thì không.
Trang 285 Kiểu dữ liệu: Kiểu chuỗi (tt)
• Để làm rõ các biến trong chuỗi, cần bao
Trang 295 Kiểu dữ liệu: Kiểu chuỗi (tt)
• Ký t ự thoát: \
– S ử d ụ ng để vi ế t các ký t ự đặ c bi ệ t trong chu ỗ i
– VD:
C ầ n có chu ỗ i: Ng ườ i ta nói “PHP r ấ t t ố t”
$a = “Ng ườ i ta nói “PHP r ấ t t ố t””; //Sai
$a = “Ng ườ i ta nói “PHP r ấ t t ố t””; //Sai
Trang 305 Kiểu dữ liệu: Kiểu chuỗi (tt)
nội dung trên nhiều dòng
nội dung trên nhiều dòng
Trang 31$str = <<<EOA
Example of string <br>
spanning multiple lines<br>
using heredoc syntax.<br>
EOA;//không ñược có khoảng trắng ñầu dòng
Trang 32Các hàm x ử lý chu ỗ i
Các hàm x ử lý chu ỗ i
•• Các xử lý cơ bản Các xử lý cơ bản
– strlen ($chu ($chuỗỗi) i)
– substr ($chu ($chuỗỗi, $v i, $vịị trí, $chi trí, $chiềều_dài) u_dài)
– strtoupper ($chu ($chuỗỗi) i)
– strtolower ($chu ($chuỗỗi) i)
– strtolower ($chu ($chuỗỗi) i)
– iconv(mã ngu nguồồn, mã n, mã đđích, $chu ích, $chuỗỗi) i)
– trim ($chu ($chuỗỗi, ’ký t i, ’ký tựự mu muốốn c n cắắt’) t’)
– ltrim ($chu ($chuỗỗi, ’ký t i, ’ký tựự mu muốốn c n cắắt’) t’)
– rtrim ($chu ($chuỗỗi, ’ký t i, ’ký tựự mu muốốn c n cắắt’) t’)
Trang 33Các hàm x ử lý chu ỗ i
Các hàm x ử lý chu ỗ i
•• Tìm ki Tìm ki ế ế m m
– strpos ($chu ($chuỗỗi, $chu i, $chuỗỗi_con, $v i_con, $vịị_trí_b _trí_bắắt t đầđầu) u)
– strrpos ($chu ($chuỗỗi, $chu i, $chuỗỗi_con, $v i_con, $vịị_trí_b _trí_bắắt t đầđầu) u)
•• So sánh
– strcmp ($chu ($chuỗỗi_1, $chu i_1, $chuỗỗi_2) i_2)
– strcmp ($chu ($chuỗỗi_1, $chu i_1, $chuỗỗi_2) i_2)
– strncmp ($chu ($chuỗỗi_1, $chu i_1, $chuỗỗi_2, $chi i_2, $chiềều_dài) u_dài)
– strcasecmp ($chu ($chuỗỗi_1, $chu i_1, $chuỗỗi_2) i_2)
– strncasecmp ($chu ($chuỗỗi_1, $chu i_1, $chuỗỗi_2, $chi i_2, $chiềều_dài) u_dài)
– strnatcmp ($chu ($chuỗỗi_1, $chu i_1, $chuỗỗi_2) i_2)
– strnatcasecmp ($chu ($chuỗỗi_1, $chu i_1, $chuỗỗi_2) i_2)
Trang 34printf ( "%%e = '%e'\n" , $n );
printf ( "%%u = '%u'\n" , $n );
printf ( "%%u = '%u'\n" , $u );
Trang 355 Kiểu dữ liệu
<? php
$input = "Alien" ;
echo str_pad ( $input , 10 ); // produces "Alien "
echo str_pad ( $input , 10 , "-=" , STR_PAD_LEFT ); // produces "-=-=-Alien"
echo str_pad ( $input , 10 , "_" , STR_PAD_BOTH ); // produces " Alien _"
echo str_pad ( $input , 6 , " _" ); // produces "Alien_"
?>
STR_PAD_RIGHT : Thêm vào bên phải (mặc định)
Hàm str_pad
Trang 365 Kiểu dữ liệu
<?php
$array = array( 'lastname' , 'email' , 'phone' );
$comma_separated = implode ( "," , $array );
echo $comma_separated ; // lastname,email,phone
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6" ;
$pieces = explode ( " " , $pizza );
echo $pieces [ 0 ]; // piece1
echo $pieces [ 1 ]; // piece2
// Example 2
X ử lý chu ỗ i
X ử lý chu ỗ i
Trang 37$num = count( $colors );
echo “We have $num items<br>” ;
?>
Do you like blue?
Do you like green?
Do you like red?
Do you like yellow?
We have 4 items
Trang 385 Kiểu dữ liệu
• M ảng ( Array )
<?php
// PHP 5
foreach ( $colors as & $color ) {
$color = strtoupper ( $color );
}
unset( $color ); /* ensure that following writes to
unset( $color ); /* ensure that following writes to
$color will not modify the last array element */
// Workaround for older versions ( phiên bản trước PHP 5 )
foreach ( $colors as $key => $color ) {
$colors [ $key ] = strtoupper ( $color );
}
Array ( [0] => RED [1] => BLUE
Trang 395 Kiểu dữ liệu
<?php
$a = array( "a" => "apple" , "b" => "banana" );
$b = array( "a" => "pear" , "b" => "strawberry" , "c" => "cherry" );
$c = $a + $b ; // Union of $a and $b
echo "Union of \$a and \$b: \n" ;
var_dump ( $c );
$c = $b + $a ; // Union of $b and $a
echo "Union of \$b and \$a: \n" ;
echo "Union of \$b and \$a: \n" ;
["a"]=> string(4) "pear"
["b"]=> string(10) "strawberry"
["c"]=> string(6) "cherry"
Trang 40extract( $var_array , EXTR_PREFIX_SAME , "wddx");
extract( $var_array , EXTR_PREFIX_SAME , "wddx");
echo "$color, $size, $shape, $wddx_size\n";
?>
blue, large, sphere, medium
Trang 415 Kiểu dữ liệu
<?php
$info = array( 'coffee' , 'brown' , 'caffeine' );
// Listing all the variables
list( $drink , $color , $power ) = $info ;
echo "$drink is $color and $power makes it special.\n" ;
// Listing some of them
list( $drink , , $power ) = $info ;
list( $drink , , $power ) = $info ;
echo "$drink has $power.\n" ;
// Or let's skip to only the third one
list( , , $power ) = $info ;
echo "I need $power!\n" ;
// list() doesn't work with strings
list( $bar ) = "abcde" ;
var_dump ( $bar ); // NULL
?>
Trang 42– usort ($m ($mả ảng, ”hàm_so_sánh”) ng, ”hàm_so_sánh”) // t // tự ự đị định ngh nh nghĩ ĩa th a thứ ứ t tự ự
– uasort ($m ($mả ảng, ”hàm_so_sánh”) ng, ”hàm_so_sánh”) // t // tự ự đị định ngh nh nghĩ ĩa th a thứ ứ t tự ự
Theo khóa
– ksort ($m ($mả ảng) ng) // t // tă ăng d ng dầ ần n
– krsort ($m ($mả ảng) ng) // gi // giả ảm d m dầ ần n
Trang 446 Toán tử
Trang 456 Toán tử
$a == $b Equal TRUETRUE if $a is equal to $b.
$a === $b Identical TRUETRUE if $a is equal to $b, and they are of the same type (PHP 4)
$a != $b Not equal TRUETRUE if $a is not equal to $b.
$a <> $b Not equal TRUETRUE if $a is not equal to $b.
$a <> $b Not equal TRUETRUE if $a is not equal to $b.
$a !== $b Not identical TRUETRUE if $a is not equal to $b, or they are not of the same type (PHP 4)
$a < $b Less than TRUETRUE if $a is strictly less than $b.
$a > $b Greater than TRUETRUE if $a is strictly greater than $b.
$a <= $b Less than or equal to TRUETRUE if $a is less than or equal to $b.
$a >= $b Greater than or equal to TRUETRUE if $a is greater than or equal to $b.
Trang 467 Cấu trúc điều khiển
Trang 487 Cấu trúc điều khiển
Trang 49kh ố i l ệ nh
kh ố i l ệ nh 2 2
kh ố i l ệ nh
kh ố i l ệ nh 2 2
case bi bi ể ể u th u th ứ ứ c c n: n:
kh ố i l ệ nh
kh ố i l ệ nh n n default ::
kh ố i l ệ nh cu ố i
kh ố i l ệ nh cu ố i }
Trang 507 Cấu trúc điều khiển
• R ẽ nhánh với switch … case
Trang 51Vòng lặp while/do while
while
while (( biểu thức điều kiện biểu thức điều kiện ))
khối lệnh khối lệnh
Trang 527 Cấu trúc điều khiển
• L ặp với while & do … while
echo "At 2"; break ;
echo "At 2"; break ;
echo "At 5"; break 2 ;
Trang 547 Cấu trúc điều khiển
• L ặp với for & foreach
for ($i= 1 , $j= 0; $i<= 10; $j+=$i, print $i,
Trang 55sang l ầ n l ặ p ti ế o theo
Trang 567 Cấu trúc điều khiển
<?php
$arr = array( 1 , 2 , 3 , 4 );
foreach ( $arr as & $value ) {
$value = $value * 2 ; }
// $arr is now array(2, 4, 6, 8)
unset( $value ); // break the reference with the last element
?>
<?php
$arr = array( "one" , "two" , "three" );
reset ( $arr );// reset pointer, start again on first element
while (list(, $value ) = each ( $arr )) {
echo "Value: $value<br />\n" ; }
Trang 577 Cấu trúc điều khiển
<?php
$arr = array("one", "two", "three");
reset ( $arr );
echo "Key: $key; Value: $value<br />\n";
}
echo "Key: $key; Value: $value<br />\n";
}
?> Key: 0; Value: one
Key: 1; Value: two Key: 2; Value: three Key: 0; Value: one Key: 1; Value: two Key: 2; Value: three
Trang 59Nhập tên hàm (không phân biệt chữ in hoa
Nhập tên hàm (không phân biệt chữ in hoa ththườường) và ng) và
cung cấp đầy đủ các tham số cần thiết trong cặp dấu ()
cung cấp đầy đủ các tham số cần thiết trong cặp dấu ()
Trang 60quyền đđiiềềuu hihiểểnn llạạii chocho nnơơii đđãã ggọọii hàmhàm NNếếuu khôngkhông cócó
lệnh
lệnh returnreturn thìthì mmặặcc địđịnhnh hàmhàm trtrảả vvềề giágiá trtrịị NULL
Muốn trả về hơn một giá trị thì phải dùng mảng
Muốn trả về hơn một giá trị thì phải dùng mảng
•• Truy Truy ề ề n tham s n tham s ố ố
•• Truy Truy ề ề n tham s n tham s ố ố
Trang 61thì m mặ ặc c nhiên nhiên giá giá tr trị ị m mặ ặc c đị định nh đượ được c dùng dùng cho cho tham tham s số ố đ đó ó
•• Hàm có s Hàm có sốố l lượượng tham s ng tham sốố không xác không xác địđịnh nh
•• Hàm có s Hàm có sốố l lượượng tham s ng tham sốố không xác không xác địđịnh nh
Khai báo danh sách tham số rỗng () Khai báo danh sách tham số rỗng ()
Sử dụng các hàm sau để lấy danh sách các tham số:
Sử dụng các hàm sau để lấy danh sách các tham số:
func_num_args(): s số ố l lượ ượng tham s ng tham số ố khi hàm khi hàm đượ được g c gọ ọi i
func_get_arg(i): giá tr giá trị ị các tham s các tham số ố th thứ ứ i đượ được truy c truyề ền (b n (bắ ắt t
đầu từ 0)
đầu từ 0)
func_get_args(): danh sách t danh sách tấ ất c t cả ả các tham s các tham số ố
Trang 628 Hàm
•• Bi Bi ế ế n t n t ĩ ĩ nh nh
Thêm từ khóa Thêm từ khóa static khi khai báo bi khi khai báo biế ến n
Được khởi tạo (và gán giá trị) một lần đầu tiên duy nhất trong suốt
Được khởi tạo (và gán giá trị) một lần đầu tiên duy nhất trong suốt quá trình thực thi của script
quá trình thực thi của script
•• S S ử ử d d ụ ụ ng bi ng bi ế ế n toàn c n toàn c ụ ụ c c
Khai báo lại biến toàn cục với từ khóa Khai báo lại biến toàn cục với từ khóa global (bên trong hàm) (bên trong hàm) để để có có Khai báo lại biến toàn cục với từ khóa
Khai báo lại biến toàn cục với từ khóa global (bên trong hàm) (bên trong hàm) để để có có
thể sử dụng được biến toàn cục này bên trong hàm
thể sử dụng được biến toàn cục này bên trong hàm
Sử dụng các hàm sau để lấy danh sách các tham số:
Sử dụng các hàm sau để lấy danh sách các tham số:
func_num_args() : s : số ố l lượ ượng tham s ng tham số ố khi hàm khi hàm đượ được g c gọ ọi i
func_get_arg(i) : giá tr : giá trị ị các tham s các tham số ố th thứ ứ i i đượ được truy c truyề ền (b n (bắ ắt t đầ đầu t u từ ừ 0) 0)
func_get_args(): danh sách t danh sách tấ ất c t cả ả các tham s các tham số ố
Trang 638 Hàm
•• Phạm vi Phạm vi
Có giá tr ị s ử d ụ ng trong toàn script, ngay c ả
Có giá tr ị s ử d ụ ng trong toàn script, ngay c ả
tr ướ c và sau khi đị nh ngh ĩ a
tr ướ c và sau khi đị nh ngh ĩ a
•• Lồng hàm Lồng hàm
Cho phép đị nh ngh ĩ a l ồ ng hàm, th ậ m chí l ồ ng
Cho phép đị nh ngh ĩ a l ồ ng hàm, th ậ m chí l ồ ng
bên trong m ộ t c ấ u trúc đ i ề u khi ể n (if, switch,
bên trong m ộ t c ấ u trúc đ i ề u khi ể n (if, switch,
while/do, while…)
Lo ạ i hàm này có ph ạ m vi trong toàn script và
Lo ạ i hàm này có ph ạ m vi trong toàn script và
không th ể đị nh ngh ĩ a l ạ i
không th ể đị nh ngh ĩ a l ạ i
Trang 64echo makecoffee ( null );
echo makecoffee ("espresso");
echo makecoffee ("espresso");
?>
<?php
function makecoffee ( $types = array( "cappuccino" ), $coffeeMaker = NULL ) {
$device = is_null ( $coffeeMaker ) ? "hands" : $coffeeMaker ;
return "Making a cup of " join ( ", " , $types ) " with $device.\n" ;
Trang 66$newref =& returns_reference ();
Trang 67// This is a wrapper function around echo
function echoit ( $string )
function echoit ( $string )