TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
PHP CƠ BẢN 1. Giới thiệu PHP PHP là ngôn ngữ dùng để thiết kế các trang web động. PHP được cung cấp tại www.php.net, được sử dụng phổ biến ở hàng triệu Web sites với các ưu điểm sau: Tốc độ xử lý nhanh, miễn phí, dùng được trên nhiều hệ thống, ổn định, bảo mật tốt, kết nối được hầu hết các CSDL. 2. Code PHP Đọan Code PHP nằm giữa cặp thẻ <?php .. .. ?> hoặc:
<? …. ?>
Mỗi lệnh PHP được kết thúc bằng dấu chấm phẩy ; 3. Chú thích trong PHP // Chú thích ngay trên dòng hoặc nhiều dòng
/* Chú thích trên một dòng hoặc nhiều dòng Chú thích trên một dòng hoặc nhiều dòng Chú thích trên một dòng hoặc nhiều dòng */ ?>
Ví dụ
4. Biến trong PHP
Biến là tên của vùng nhớ dùng để lưu trữ dữ lệu. Tên biến bắt đầu bằng $ , sau đó là một chữ cái hoặc một dấu gạch chân. " _ ".Các ký tự còn lại gồm các chữ cái ,chữ số hoặc gạch chân nhưng không có khoảng trắng ở giữa. PHP không yêu cầu phải khai báo biến và kiểu dữ liệu trước khi sử dụng. Tên Biến có phân biệt chữ hoa chữ thường. Biến chứa những loại dữ liệu: Strings, Arrays, Integers, Floating, Numbers, Objects. Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
1
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
Khai báo : $TenBien=<giatri> ; Lệnh echo : Dùng để hiện giá trị của 1 biến, 1 chuỗi Ví dụ :
$hoten = "Tèo"; $dem = 1; echo $hoten; echo "Hello"; ?> 5. Hằng (Constant) Hằng là vùng nhớ chứa giá trị không đổi trong PHP. Quy tắc đặt tên hằng cũng giống như quy tắc đặt tên biến, nhưng không cần dấu $ đi trước. Khi khai báo một hằng số phải gán giá trị của hằng. Cách khai báo như sau: define(“ten_hang”,”gia_tri_hang”);
so sánh bằng - True nếu giá trị $a bằng giá trị $b. so sánh đồng dạng - True nếu giá trị $a bằng giá trị $b, và cùng kiểu dữ liệu. Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
2
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
$a != $b so sánh không bằng - True nếu giá trị $a không bằng giá trị $b $a !== $b so sánh không đồng dạng - True nếu giá trị $a không bằng giá trị $b , hoặc chúng không cùng kiểu dữ liệu. $a < $b $a > $b $a <= $b
$a >= $b
so sánh nhỏ hơn - True nếu giá trị $a nhỏ hơn giá trị $b so sánh lớn hơn - True nếu giá trị $a lớn hơn giá trị $b so sánh nhỏ hơn hoặc bằng - True nếu giá trị $a nhỏ hơn hoặc bằng giá trị $b . so sánh lớn hơn hoặc bằng - True nếu giá trị $a lớn hơn hoặc bằng giá trị $b .
7. Lệnh if: Là khối lệnh rẽ nhánh. Có ba cách dùng như sau: a. Lệnh if không dùng else if (điều kiện){ Khối Lệnh } b. Lệnh if có dùng else if (điều kiện) { Khối Lệnh 1; } else { Khối Lệnh 2; } c. Câu lệnh if elseif if (điều kiện) { Khối Lệnh 1 } elseif (điều kiện) { Khối Lệnh 2 } elseif (điều kiện) { Khối Lệnh 3 } else { Khối Lệnh n }
Ví dụ 1:
$diem=6;
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
3
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
Nếu các khối lệnh chỉ 1 gồm lệnh thì có thể bỏ cặp { }
-
Khối lệnh có thể là mã lệnh php hoặc mã lệnh html
8. Câu lệnh lựa chọn switch case $ngay = date("w"); switch ($ngay){ case 0: $thu="Chủ nhật"; break; case 1: $thu="Thứ hai"; break; case 2: $thu="Thứ ba"; break; case 3: $thu="Thứ tư"; break; case 4: $thu="Thứ năm"; break;
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
4
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
case 5: $thu="Thứ sáu"; break; case 6: $thu="Thứ bảy"; break; } echo "Hôm nay là " . $thu; ?> 9. isset(), empty() và unset() Ví dụ 1: <? if (isset($x)==true) echo "Có biến x"; else echo "Không có biến x"; ?>
$x=1; if (isset($x)==true) echo "Có biến x"; else echo "Không có biến x"; ?>
unset($x); if (isset($x)==true) echo "Có biến x"; else echo "Không có biến x"; ?> Ví dụ 2:
$y=NULL; if (empty($y)==true) echo "y là rỗng "; $t=0; if (empty($t)==true) echo "t là rỗng "; $s=""; if (empty($s)==true) echo "s là rỗng "; $m=FALSE; if (empty($m)==true) echo "m là rỗng "; $n=5; if (empty($n)==true) echo "n là rỗng "; ?> 10. Null và is_null()
$y=NULL; if (is_null($y)==true) echo "y là null "; ?> 11. Vòng lặp for: -
Là lệnh lặp một khối lệnh với số lần lặp nhất định. Khối lệnh có thể là lệnh php hoặc code html. Nếu khối lệnh chỉ gồm 1 lệnh thì có thể bỏ dấu {}. Cú pháp: for (<biến đếm> ; <Điều kiện dừng> ; <Tăng/giảm biến đếm>) {
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
5
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
Khối lệnh. } -
Ví dụ:
for ($i=1 ; $i<=10 ; $i++) echo "i=$i "; ?>
12. Vòng lặp while : -
Là lệnh lặp khối lệnh số lần lặp không xác định. Cú pháp: while (<Điều kiện>){ Khối lệnh }
-
Điều kiện lặp được kiểm tra trước, do đó có thể không thực hiện lần nào.Ví dụ:
$i=1; while ($i<=20) { echo "
$i
"; $i+=2; } ?>
13. Vòng lặp Do...While: -
Là lệnh lặp khối lệnh số lần lặp không xác định. do { Khối lệnh } while (<Điều kiện>);
-
Điều kiện lặp được kiểm tra sau, do đó thực hiện ít nhất 1 lần.
-
Ví dụ:
$i=50; do { echo "
",$i,"
"; $i-=5; }while ($i>=0); ?> Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
6
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
14. Include, require file -
Để chèn các đoạn code từ các File khác có thể dùng một trong hai phát biểu là includehoặc require. Điểm khác biệt giữa hai phát biểu này là nếu file cần chèn vào bị lổi hoặc không có tại vị trí được khai báo thì với phát biểu include chương trình vẫn tiếp tục chạy nhưng nếu sử dụng require thì chương trình sẽ ngưng lại.
-
Để tránh trường hợp chèn nhiều lần một File hay một đoạn code, có thể sử dụng phát biểu include_once hoặc require_once
-
Cú pháp: include "TenFile” ;
hoặc
require "TenFile” ;
hoặc
include_once "TenFile” ;
hoặc //để đảm bảo include chỉ 1 lần
require_once "TenFile” ; -
Ví dụ: <?php include "tinxemnhieu.php"; ?> <?php include_once "tinxemnhieu.php"; ?>
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
7
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM
CHUỖI TRONG PHP 1. Giới thiệu Chuỗi trong PHP, khi dùng phải đặt trong nháy đơn hoặc nháy đôi. Nếu trong giá trị chuỗi có nháy thì phải đặt dau dấu \ $str = "Trung Tâm Nhất Nghệ "; $chao = " Chào \"Sếp\" "; ?> Ngoài hai cách sử dụng nháy đơn và nháy kép cho chuỗi, PHP còn cung cấp một phưong pháp khởi tạo biến chuỗi có nội dung lớn ( nhiều dòng ) gọi là heredoc. Thí dụ: $myStr = <<< End_Of_Quote Trung tâm Nhất Nghệ. 105 Bà Huyện Thanh Quan. End_Of_Quote; echo $myStr; 2. Xuất và định dạng chuỗi -
Dùng lệnh echo hoặc hàm print để xuất các giá trị ra trang web.
Hàm sprintf cũng cho phép định dạng chuỗi in ra nhưng không xuất kết quả ra trình duyệt mà ra bộ nhớ ( lưu vào biến ). Thí dụ:
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
8
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
$d = sprintf("%02d/%02d/%04d", 4, 8, 2012);
3. Truy xuất từng ký tự trong chuỗi Các ký tự trong chuỗi được đánh từ 0. Để truy xuất từng ký tự trong chuỗi, dùng cú pháp : $BiếnChuỗi [Số thứ tự của ký tự] ; Ví dụ: $s = 'NHAT NGHE'; for ($i=0; $i < strlen($s); $i++) { printf("Kí tự thứ %d là %s ", $i, $s[$i] ); } 4. Một số hàm xử lý chuỗi 1.
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
7.
Hàm substr: Trích chuỗi con
<? echo substr("",4,50);?>
8.
Hàm mb_convert_case: Đổi chữ hoa<->thường MB_CASE_LOWER, MB_CASE_UPPER, MB_CASE_TITLE
<? echo mb_convert_case("lập trình ứng dỤng",MB_CASE_TITLE,'utf-8'); ?>
9.
Hàm md5: Mã hóa 1 chuỗi
<? echo md5("123");?>
10.
Hàm sha1: Mã hóa 1 chuỗi
<? echo sha1("123");?>
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
10
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
ARRAY 1. Giới thiệu: - Dãy là 1 đối tượng được tạo ra nhằm lưu trữ các dữ liệu có tính tương đồng. Trong dãy có nhiều phần tử với những giá trị khác nhau và được đánh theo số thứ tự từ 0 trở đi (chỉ số phần tử) hoặc được phân biệt theo dạng chuỗi (key) 0
Teo
1
2
Ty
a
Map b
c
- Giá trị các key phải khác nhau. 2. Khai báo dãy $TênDãy=array(); //
khai báo dãy rỗng
$TênDãy=array(giá tri 1, giá trị 2,…); //khai
báo dãy có các phần tử đánh bằng chỉ số
$ TênDãy =array("key1" => trị 1, "key2" => trị 2, "key3" => trị 3);
3. Truy xuất phần tử dãy $ TênDãy[chiso] ; hoặc $ TênDãy["key"] ; echo $diem[1]. " ";
//5
echo $sanpham["TenSP"];
//Gạo
4. Duyệt qua các phần tử của dãy dùng vòng lặp for : - Với array mà các phần tử được đánh chỉ số liên tục nhau, dùng vòng lặp for như sau : $soluong=array(8,10,9) ; for ( $i=0 ; $iecho "Giá trị thứ $i là $soluong[$i] "; }
5. Duyệt qua các phần tử dùng vòng lặp while : - Liệt kê các phần tử của dãy có chỉ số dạng key -
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
while (key($sanpham) != null) { echo key($sanpham) . " =
6. Duyệt qua các phần tử dùng vòng lặp foreach: <? $daySP=array("5"=>"Mắm","3"=>"Muối","1"=>"Gạo","4"=>"Dưa"); ?> <table border=1 width=200> <tr> <th>idSP</th> <th> TênSP </th> </tr> <?php foreach ($daySP as $k => $v ) { ?> <tr> <td> <?=$k?> </td> <td> <?=$v?> </td> </tr> <?php } ?> </table>
Chú ý:
1 phần tử của dãy có giá trị null cũng được, ghi vầy $a=array(10,null,7); Ghi vầy là sai: $a=array(10,,7); Phần tử có chỉ số thì key là null
foreach ($_SERVER as $x => $y) echo "$x : $y ";
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
12
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
?>
7. Các hàm xử lý dãy a. Count: Đếm số phần tử trong dãy -
Sắp xếp giá trị các phần tử tăng dần, cách sắp xếp tùy thuộc vào tham số $sort_flags. Sau khi sắp sẽ làm thay đổi key của all các phần tử trong dãy
-
Cú pháp: sort($dãy[,$sort_flags]); sort_flags gồm các giá trị sau: SORT_REGULAR : Sắp bình thường (không chuyển kiểu) SORT_NUMERIC : so sánh kiểu số SORT_STRING : So sánh kiểu chuỗi $f = array("lemon", "orange", "banana", "apple"); print_r($f); ?>
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
13
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
sort($f); print_r($f); ?>
d. in_array : tìm 1 giá trị xem có tồn tại trong dãy hay không -
Cú pháp: bool in_array(giá trị tìm, $dãy,$kieu);
-
Ví dụ 1: $os = array("Mac", "NT", "Irix", "Linux"); if (in_array("Irix", $os)) echo "Got Irix"." "; if (in_array("mac", $os))
Kết quả : -
echo "Got mac"." ";
Got Irix
Ví dụ 2: $a = array('1.10', 12.4, 1.13);
if (in_array('12.4', $a, true))echo "'12.4' found "; if (in_array(1.13, $a, true)) echo "1.13 found
Kết quả :
";
1.13 found
e. array_search: Tìm 1 giá trị trong dãy và trả về key của nó. Tìm không được trả về FALSE -
Nếu strict là TRUE thì hàm sẽ test kiểu của giá trị tìm Ví dụ : $array = array(0=> 'blue', 1=> 'red', 2=> 'green', 3=> 'red'); $key = array_search('green', $array); // $key = 2; $key = array_search('red', $array);
// $key = 1;
f. array_key_exists: Tìm 1 key trong dãy Cú pháp: bool array_key_exists ( mixed $key, array $search ). Ví dụ : $search_array = array('first' => 1, 'second' => 4); if (array_key_exists('first', $search_array)) echo "The 'first' element is in the array";
8. Xử lý dữ liệu trên Form a. Đối tượng $_GET, $_POST $_GET là đối tượng chứa dữ liệu gửi lên từ form có method là Get $_POST là đối tượng chứa dữ liệu gửi lên từ form có method là Post b. Cách lấy giá trị từ form
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
14
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
$_GET["TenDoiTuongTrongForm"] $_POST["TenDoiTuongTrongForm"] c. Ví dụ : Tạo 1 file tên dangnhap.php rồi tạo form login trong tag body như dưới đây: <form action="xulydangnhap.php" method="POST" name="form1" id="form1"> <table width="286" border="0" align="center" cellpadding="4" cellspacing="0"> <caption>ĐĂNG NHẬP</caption> <tr> <td width="114">Tên đăng nhập</td> <td width="150"><input name="u" type="text" class="txtfield" id="u" /> </td> </tr> <tr><td width="114">Mật khẩu</td> <td><input name="p" type="password" class="txtfield" id="p" /> </td> </tr> <tr><td> </td>
<td><input type="checkbox" name="nho" />Nhớ user và pass</td> </tr> <tr><td> </td> <td><input name="button" type="submit" value="Đăng Nhập" /></td> </tr> </table> </form>
Tạo file xulydangnhap.php rồi gõ mã sau vào tag body
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
15
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
echo $_POST["u"]. " "; echo $_POST["p"]. " "; ?> F12 file dangnhap.php, gõ user, pass rồi nhắp Login. Nhìn URL của browser, bạn sẽ thấy file xulydangnhap.php và username, password. Chỉnh lại form trên với method là GET, Sửa phương thức POST trong file xulydangnhap.php thành GET và thử lại. Chú ý URL trên thanh Address khi nhắp nút Đăng nhập 9. Cookies
a. Tạo cookie setcookie("TenCookie",giá trị [,Thời điểm quá hạn]); Nếu không chỉ định thời gian thì cookie sẽ lưu trong bộ nhớ. Và sẽ mất khi user đóng browser. Nếu thời điểm quá hạn là 1 thời điểm trong quá khứ thì browser sẽ xóa cookie b. Sử dụng cookie $_COOKIE["Ten"]; c. Ví dụ 1: Tạo file setcookies.php và gõ khối lệnh sau (phải trên tất cả mã html) <?php setcookie("un", "Nguyen Van Teo", time()+60*60*24*30); ?> F12 để tạo cookie
Tạo file viewcookie.php rồi gõ lệnh sau trong tag body echo "Chào bạn " . $_COOKIE["un"] ." "; ?> F12 xem thử d. Ví dụ 2: Mở file xulydangnhap.php, gõ thêm ở đầu:
if (isset($_POST['nho'])==true){ setcookie("un",$_POST['u'], time()+60*60*24*7 );
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
16
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com
setcookie("pw",$_POST['p'], time()+60*60*24*7 ); } else { setcookie("un",$_POST['u'],time()-1); setcookie("pw",$_POST['p'],time()-1); } ?> Lưu file lại Mở file 1 file dangnhap.php Nhắp textfield tên u rồi qua code, bạn sẽ thấy đoạn mã: <input name="u" type="text" class="txtfield" id="u" /> Gõ thêm vào (màu đỏ) để có kết quả sau: id="u" /> Qua Design, nhắp textfield tên p rồi qua code, bạn sẽ thấy đoạn mã: <input name="p" id="p" type="password" class="txtfield" /> Gõ thêm vào (màu đỏ) để có kết quả sau: class="txt" /> F12 trang dangnhap.php. Gõ username và password , check vào Nhớ username rồi nhắp Đăng nhập. Lúc này username và password đã được lưu lại trong cookie. Xem xong đóng browser lại F12 trang dangnhap.php. Bạn sẽ thấy username, password đã được hiện sẵn 10. Session a. Khai báo và sử dụng $_SESSION["TênBiến"] Trang nào dùng session thì phải có hàm <? session_start() ;?> ở dòng đầu b. Ví dụ :
Phiên Bản Thử Nghiệm – Lưu Hành Nội Bộ
17
TRUNG TÂM ĐÀO TẠO MẠNG MÁY TÍNH NHẤT NGHỆ ĐỐI TÁC ĐÀO TẠO CỦA MICROSOFT TẠI VIỆT NAM 105 Bà Huyện Thanh Quan, Q3, TP. HCM Tel: 3.9322.735 – 0913.735.906 Fax: 3.9322.734 www.nhatnghe.com