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

Php tutorial

11 316 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 123,33 KB

Nội dung

Php là gì?Cài đặt như thế nào?Ngôn ngữ php

Tungvn40@yahoo.com Tungvn40@yahoo.com Php Tutorial 1. Php là gì? PHP là mt ngôn ng lp trình kiu script , chy trên Server và tr v mã HTML cho trình duyt. VD: <html> <head> <title>Example</title> </head> <body> <?php echo "Hi, I'm a PHP script!"; ?> </body> </html> Mã PHP đc đt trong kiu tag đc bit cho phép ta có th vào hoc ra khi ch đ PHP 2. Cài đt nh th nào? Cài PHP trên nn Window vi IIS version 3 hoc 4: - Copy php.ini - dist vào th mc Window. i tên thành php.ini - Sa file php.ini nh sau: - t li đng dn mc : 'extension_dir' chuyn ti v trí cài đt php hoc ni đ các file php_*.ini. VD : c:\php - t đng dn chính xác đn file: browscap.ini trong th mc Window. - Chy MMC , chn Web site hoc th mc ca ng dng - m mc Property ca th mc , chn vào Home Directory, Virtual Directory hay Directory. - Vào mc: Configuration->App Mappings ->Add->Executable : c:\php\php.exe %s %s. Chú ý phi có %s %s . - Trong ô Extension, đánh đuôi file bn mun gn vi mã php. Thng là .php hoc .phtml - t ch đ sercurity thích hp. Nu dùng h thng NTFS, cn đt cho phép thc hin vi th mc có php.exe II.Ngôn ng PHP: 1. Có 4 cách đ dùng PHP; 1. <? echo ("this is the simplest, an SGML processing instruction\n"); ?> 2. <?php echo("if you want to serve XML documents, do like this\n"); ?> 3. <script language="php"> echo ("some editors (like FrontPage) don't like processing instructions"); </script> 4. <% echo ("You may optionally use ASP-style tags"); %> <%= $variable; # This is a shortcut for "<%echo " %> Cách 1 ch có th s dng nu nhng tag ngn đc cho phép s dng. Có th sa short_open_tag trong cu hình ca php hoc biên dch file php vi la chn cho phép dùng các tag ngn. Tng t nh vy, cách th 4 ch có tác dng nu asp_tag đc đt trong file cáu hình ca PHP PHP cho phép h tr các kiu chú thích ca c C, C++ và Unix shell. VD: <?php CM Soft 70 NCT F2 Q10 PDF processed with CutePDF evaluation edition www.CutePDF.com CM Soft 70 NCT F2 Q10 PDF processed with CutePDF evaluation edition www.CutePDF.comPDF processed with CutePDF evaluation edition www.CutePDF.com Tungvn40@yahoo.com Tungvn40@yahoo.com echo "This is a test"; // This is a one-line c++ style comment /* This is a multi line comment yet another line of comment */ echo "Another Test"; # This is shell-style style comment ?> 2. Các kiu d liu: 2.1S nguyên : c khai báo và s dng giá tr giing vi C: VD: $a = 1234; # decimal number $a = -123; # a negative number $a = 0123; # octal number (equivalent to 83 decimal) $a = 0x12; # hexadecimal number (equivalent to 18 decimal) 2.2 S thc: VD :$a = 1.234; $a = 1.2e3; Chú ý: Khi s dng các s thc đ tính toán , có th s làm mt giá tr ca nó. Vì vy, nên s dng các hàm toán hc trong th vin chun đ tính toán. 2.3 Xâu : Có 2 cách đ xác đnh 1 xâu: t gia 2 du ngoc kép (") hoc gia 2 du ngoc đn ('). Chú ý: Các bin giá tr s không đc khai trin trong xâu gia 2 du ngoc đn. 2.4 : Mng : Mng thc cht là gm 2 bng : bng ch s và bng liên kt. a. Mng 1 chiu : Có th dùng hàm : list() hoc array() hoc lit kê các giá tr ca tng phn i trong mng đ to mng . Có th thêm các giá tr vào mng đ to thành 1 mng. --> Dùng ging trong C Có th dùng các hàm asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), and uksort() đ sp xp mng. Tu thuc vào vic bn đnh sp xp theo kiu gì. b. Mng nhiu chiu: Tng t C. bn có th dùng nh VD sau: $a[1] = $f; # one dimensional examples $a["foo"] = $f; $a[1][0] = $f; # two dimensional $a["foo"][2] = $f; # (you can mix numeric and associative indices) $a[3]["bar"] = $f; # (you can mix numeric and associative indices) PHP3 không th tham chiu tr tip t mt mng nhiu chièu khi  bên trong 1 xâu: VD : $a[3]['bar'] = 'Bob'; echo "This won't work: $a[3][bar]"; Kt qu tr ra s là: This won't work: Array[bar]. Nhng vi VD sau s chy đúng: $a[3]['bar'] = 'Bob'; echo "This will work: " . $a[3][bar]; Vi PHP4, vn đ s đc gi quyt bng cách cho mng vào gia 2 du ngoc móc { } VD : $a[3]['bar'] = 'Bob'; echo "This will work: {$a[3][bar]}"; PHP không yêu cu phi khai báo trc kiu d liu cho các bin, Kiu d liu ca bin s ph thuc vào kiu d liu mà bn gán cho nó, VD : $foo = "0"; // $foo là kí t ASCII 48 $foo++; // $foo is xâu "1" (ASCII 49) $foo += 1; // $foo là s nguyên (2) $foo = $foo + 1.3; // $foo là s thc (3.3) $foo = 5 + "10 Little Piggies"; // $foo là s nguyên (15) 3. Bin - giá tr: PHP quy đnh mt bin đc biu din bt đu bng du $, sau đó là mt ch cái hoc du gch di. CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com 3.1 Mt s bin đã đc to sn : argv : Mng tham s truyn cho script. Khi đon script chy bng dòng lnh, tham s này s đc dùng ging nh C đ truy nhp các tham s trên dòng lnh. argc : s các tham s đoc truyn. Dùgn vi argv; PHP_SELF : tên ca đon mã script đang thc hin. Nu PHP đang đc chy t dòng lnh thì tham s này không có giá trj. HTTP_COOKIE_VARS: mt mng các giá tr đc truyn ti script hin ti bng HTTP cookie. Ch có tác dng nu "track_vars" trong cu hình đc đt hoc ch dn <?php_track_vars?> HTTP_GET_VARS: Mng các giá tr truyn ti script thông qua phng thc HTTP GET. Ch có tác dng nu "track_vars" trong cu hình đc đt hoc ch dn <?php_track_vars?> HTTP_POST_VARS: 3.2 Phm vi giá tr: PHP coi 1 bin có mt gii hn.  xác đnh mt bin toàn cc (global) có tác dng trong mt hàm , ta cn khai báo li. Nu không giá tr ca bin s đc coi nh là cc b trong hàm. VD : $a = 1; $b = 2; Function Sum () { global $a, $b; $b = $a + $b; } Sum (); echo $b; Khi có khai báo global  trên, $a và $b đc cho bit đó là nhng bin toàn cc. Nu không có khai báo global, $a và $b ch đc coi là các bin bên trong hàm Sum(). iu này khác vi C Mt cách khác đ dùng bin toàn cc trong 1 hàm là ta dung mng $GLOBAL ca PHP VD  trên s có th vit nh sau: $a = 1; $b = 2; Function Sum () { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Sum (); echo $b; Mt chú ý khác là khai báo static. Vi khai báo này bên trong mt hàm vi 1 bin cc b, giá tr ca bin cc b đó s không b mt đi khi ra khi hàm. VD : Function Test () { static $a = 0; echo $a; $a++; } Vi khai báo nh trên , $a s không mt đi giá tr sau khi thc hin li gi hàm Test() mà $a s CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com đc tng lên 1 sau mi ln gi hàm Test(). 3.3 Tên bin: Mt bin có th gn vi 1 cái tên . VD: $a = "hello"; $$a = "world"; ==> $hello = "world" và echo "$a ${$a}"; <==> echo "$a $hello"; Kt qu ra s là : hello world Chú ý : bn có th gp phi trng hp không rõ ràng khi s dng cách này vi mng . VD : $$a[1] s hiu là bn mun dùng $a[1] nh 1 bin hay dùng $$a nh 1 bin vi [1] là ch s?  tránh trng hp này , cn có su phân bit rõ bng du { }. VD :${$a[1]} hoc ${$a}[1]. 3.4 Các giá tr bên ngoài phm vi PHP HTML Form : khi 1 form gn vi 1 file php qua phng thc POST VD: <form action="foo.php3" method="post"> Name: <input type="text" name="name"><br> <input type="submit"> </form> PHP s to 1 bin $name bao gm mi giá tr trong trung Name ca Form. PHP có th hiu đc mt mng mt chiu gm các giá tr trong 1 form. Vì vy, bn có th nhóm nhng giá tr liên quan li vi nhau hoc s dng đc tính này đ nhn các giá tr t 1 đu vào tu chn.(multi select input) Khi tính cht track_vars đc đt trong cu hình hoc có ch dn <?php_track_vars?> . các giá tr đc submit đc ly ra qua phng thc GET và POST có th ly t 2 mng toàn cc $HTTP_POST_VARS và $HTTP_GET_VARS IMAGE SUBMIT: Khi dùng 1 image đ thc hin submit, có th dùng tag nh sau: <input type=image src="image.gif" name="sub"> Khi ngi dùng click chut trên nh, form tng ng s đc gi ti server kèm theo 2 giá tr thêm vào : sub_x và sub_y. Nhng bin này s lu gi to đ mà ngi dùng đã click chut trên nh. Ngi lp trình có kinh nghim s thy rng trên thc t, trình duyt gi các giá tr có chu k thi gian nhng PHP đã to cm giãc gn nh vic gi các giá tr đó là liên tc. HTTP Cookies : PHP h tr HTTP cookies theo đnh dng ca Netscape. Cookies file lu gi thông tin ca các trình duyt t xa và qua đó có th theo dõi hay nhn bit ngi s dng. Có th dùng Cookies bng hàm SetCookie(). Hàm này cn đc gi trc khi thông tin đc gi ti trình duyt. Bt k cookie nào gi ti bn t máy khách (client) s t đng chuyn thành d liu ca phng thc GET và POST. Nu bn mun có nhiu giá tr trong 1 cookie, ch cn thêm vào du [ ] vi tên ca cookie. VD : SetCookie ("MyCookie[]", "Testing", time()+3600); Chú ý rng cookie s thay th cho cookie cùng tên, tr trg hp khác đng dn hoc min. BIN MÔI TRNG: CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com PHP t đng to bin cho các bin môi trng nh 1 bin bình thng ca PHP VD : echo $HOME; /* Shows the HOME environment variable, if set. */ Vì thông tin ti qua các phng thc GET, POST , Cookie cng t đông to các bin PHP, thnh thong bn nên đc 1 bin t môi trng đ chc chn rng bn có đúng version. Hàm getenv() và putenv() giúp bn đc và ghi vi các bin môi trng. DU CHM TRONG TÊN BIN: Bình thng, PHP không thay đi tên bin khi bin đó đc truyn vào đon script. Tuy nhiên, nên chú ý rng dáu chm (.) không phi là mt ký hiu hp l trong tên bin đi vi PHP. Vì vy, PHP s t đng thay th các du chm bng du gch di.(_) 4. CONSTANTS PHP đnh ngha sn mt vài hng s: _FILE_ : tên ca script file đang đc thc hin. _LINE_ : s dòng ca mã script đang đc thc hin trong script file hin ti. _PHP_VERSION_ : version ca PHP _PHP_Ó : tên h điu hành mà PHP đang chy TRUE FALSE E_ERROR : báo hiu có li E_PARSE : báo li sai khi biên dch E_NOTICE : Mt vài s kin có th là li hoc không. E_ALL : Có th đnh ngha mt hng s bng hàm define() VD : <?php define("CONSTANT", "Hello world."); echo CONSTANT; // outputs "Hello world." ?> 5. BIU THC Biu thc là mt phn quan trng trong PHP. Phn ln mi th ban vit đu đc coi nh 1 biu thc. iu này có ngha là mi th đu có 1 giá tr. Mt dng c bn nht ca biu thc bao gmcác bin và hng s. PHP h tr 3 kiu giá tr c bn nht: s nguyên, s thc, và xâu. Ngoài ra còn có mng và đi tng. Mi kiu giá tr này có th gán cho các bin hay làm giá tr tr ra ca các hàm. Bn có th thao tác vi các bin trong PHP ging nh vi trong C. VD $b = $a = 5; /* assign the value five into the variable $a and $b */ $c = $a++; /* post-increment, assign original value of $a (5) to $c */ $e = $d = ++$b; /* pre-increment, assign the incremented value of $b (6) to $d and $e */ /* at this point, both $d and $e are equal to 6 */ $f = double($d++); /* assign twice the value of $d before the increment, 2*6 = 12 to $f */ $g = double(++$e); /* assign twice the value of $e after the increment, 2*7 = 14 to $g */ $h = $g += 10; /* first, $g is incremented by 10 and ends with the value of 24. the value of the assignment (24) is then assigned into $h, and $h ends with the value CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com of 24 as well. */ 6.CÁC CU TRÚC LNH: 6.1 If else else if: if (điu kin) { do something; } elseif ( điu kin ) { do something;} else { do something;} 6.2 Vòng lp : while ( DK) { .} do { .} white ( DK ); for (bieuthuc1; bieuthuc2; bieu thuc3) { .} PHP 4 only : foreach(array_expression as $value) statement foreach(array_expression as $key => $value) statement 6.3 break và continue: break : thoát ra khi vòng lp hin thi continue : b qua vòng lp hin ti, tip tc vòng tip theo. 6.4 switch switch (tên bin) { case trng hp 1: . break; case trng hp 2: . break; case trng hp 3: . break; default : } 7 HÀM: Dùng ging vi C++. Ngoi tr bn không cn phi khai báo kiu cho tham s ca hàm: 7.1 Tham tr : VD: function takes_array($input) { echo "$input[0] + $input[1] = ", $input[0]+$input[1]; } 7.2 Tham bin: function add_some_extra(&$string) { $string .= 'and something extra.'; } 7.3 Tham s có giá tr mc đnh: function makecoffee ($type = "cappucino") { return "Making a cup of $type.\n"; } Chú ý : khi s dng hàm có đi s có giá tr mc đnh, các bin này s phi nm v phía phi nhát trong danh sách đi s. VD : Sai function makeyogurt ($type = "acidophilus", $flavour) { return "Making a bowl of $type $flavour.\n"; } úng ; function makeyogurt ($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour.\n"; } 7.4 Giá tr tr li ca hàm: CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com Có th là bt k giá tr nào, Tuy vây, không th tr li nhiu giá tr riêng l nhng có th tr li mt mng các giá tr. VD function small_numbers() { return array (0, 1, 2); }  tr li mt tham tr, bn cn có du &  c khai báo ca hàm cng nh  giá tr tr li. VD : function &returns_reference() { return &$someref; } $newref = &returns_reference(); 7.5 Hàm bin: PHP cho phép s dng hàm giá tr Ngha là khi mt bin đc goi có kèm theo du ngoc đn , PHP s tìm hàm có cùng tên vi giá tr bin đó và thc hin VD <?php function foo() { echo "In foo()<br>\n"; } function bar( $arg = '' ) { echo "In bar(); argument was '$arg'.<br>\n"; } $func = 'foo'; $func(); $func = 'bar'; $func( 'test' ); ?> 8. CÁC TOÁN T: PHP có các toán t cho các phép s hc : + - * / % Các toán t logic : and or xor ! && || Toán t thao tác vi bit : & | ^ ~ << >> Toán t so sánh : ==, != ,< ,> ,<=, >=, ==== (bng va cùng kiu - PHP4 only), !== (khác hoc khác kiu - PHP4 only) Toán t điu khin li : @ - khi đng trc 1 biu thc thì các li ca biu thc s b b qua và lu trong $php_errormsg VD: <?php /* Intentional SQL error (extra quote): */ $res = @mysql_query ("select name, code from 'namelist") or die ("Query failed: error was '$php_errormsg'"); ?> Toán t thc thi : ` `- PHP s thc hin ni dung nm gia 2 du ` nh 1 lnh shell. Tr ra giá tr là kt qu thc hin lnh VD : $output = `ls -al`; //lit kê các file bng lnh Linux echo "<pre>$output</pre>"; 9 LP VÀ I TNG: CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com Class: là tp hp các bin và hàm làm vic vi các bin này. Mt lp có đnh dng nh sau: <?php class Cart { var $items; // Items in our shopping cart // Add $num articles of $artnr to the cart function add_item ($artnr, $num) { $this->items[$artnr] += $num; } // Take $num articles of $artnr out of the cart function remove_item ($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } else { return false; } } } ?> Lp Cart  đây là mt kiu d liu, vì vy bn có th to mt bin có kiu này vi toán t new VD: $cart = new Cart; $cart->add_item("10", 1); Lp có th đc m rng bng nhng lp khác. Lp mi thu đc có tt c nhng bin và hàm ca cá lp thành phn. Thc hin vic tha k này bng t khoá "extends". Chú ý : k tha nhiu lp 1 lúc không đc chp nhn. VD : class Named_Cart extends Cart { var $owner; function set_owner ($name) { $this->owner = $name; } } Các hàm khi to ca lp đc gi t đng khi bn gi toán t new. Tuy nhiên, các hàmkhi to ca lp cha s không đc gi khi hàm khi to ca lp con đc gi. Hàm khi to có th có đi s hoc không, 10. THAM CHIU: Tham chiu trong PHP có ngha là ly cùng 1 giá tr bng nhiu tên bin khác nhau. Khác vi con tr trong C, tham chiu là mt bng các bí danh. Chú ý : trong PHP, tên bin và nôi dung ca bin là khác nhau. Vì vy, cùng 1 ni dugn có th có nhiu tên khác nhau. Tham chiu PHP cho phép bn to 2 bin có cùng nôi dung. VD : $a = & $b; -- > $a, $b tr ti cùng 1 giá tr. Tham chiu truen giá tr bng tham chiu. Thc hin vic này bng cách to mt hàm cc b và truyn giá tr đc tham chiu VD: function foo (&$var) { $var++; CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com } $a=5; foo ($a); --> Kt qu : $a = 6; Giá tr tr li ca mt hàm bng tham chiu rt tin khi bn mun s dng hàm đ tìm 1 giá tr trong 1 phm vi nào đó. VD : function &find_var ($param) { .code . return $found_var; } $foo =& find_var ($bar); Khi bn mun loi b mi liên kt gia tên bin và giá tr ca bin, s dng hàm unset() VD : $a = 1; $b =& $a; unset ($a); 11. THAO TÁC VI NH: PHP không b gii hn vi mã HTML đc tr li cho trình duyt. Vì vy, có th dùng PHP đ to và thao tác vi các file nh có đnh dng khác nhau, bao gm :gif, png, jpg, wbmp, and xpm. PHP có th đa các file nh trc tip đn các trình duyt. Bn s cn biên dch PHP vi th vin GD bao gm các hàm thao tác vi nh. GD và PHP có th s cn có thêm 1 s th vin khác, tu thuc vào đnh dng ca file nh cn dùng. VD : To nh GIF vi PHP <?php Header("Content-type: image/gif"); $string=implode($argv," "); $im = imagecreatefromgif("images/button1.gif"); $orange = ImageColorAllocate($im, 220, 210, 60); $px = (imagesx($im)-7.5*strlen($string))/2; ImageString($im,3,$px,9,$string,$orange); ImageGif($im); ImageDestroy($im); ?> gi s VD trên trong file button.php . KHi đó, đ s dng ta dùng tag : <img src="button.php?text">. , 12. PHP và MySQL:  connect ti 1 CSDL trên MySQL server rt đn gin. Bn ch cn dùng hàm mysql_connect(host, user, password) đ m 1 kt ni ti MYSQL server vi kt qu là giá tr tr v ca hàm (Gi s là bin $db). Sau đó, dùng hàm mysql_select_db(database_name, link_id) đ chn CSDL bn mun kt ni.  thc hin mt câu lnh truy vn, dùng hàm mysql_query(query, link_ID). Giá tr tr li ca hàm là kt qu ca câu truy vn. Nu b qua link_ID thì kt ni cui cùng ti MySQL server s đc thc hin. Bn có th xem ví d sau s hiu rõ hn. <html> <body> <?php $db = mysql_connect("localhost", "root"); CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com mysql_select_db("mydb",$db); $result = mysql_query("SELECT * FROM employees",$db); printf("First Name: %s<br>\n", mysql_result($result,0,"first")); printf("Last Name: %s<br>\n", mysql_result($result,0,"last")); printf("Address: %s<br>\n", mysql_result($result,0,"address")); printf("Position: %s<br>\n", mysql_result($result,0,"position")); ?> </body> </html> Ngoài cách dùng hàm mysql_result() đ ly kt qu thc hin , bn có th dùng các hàm khác : mysql_fetch_row(), mysql_fetch_array(), and mysql_fetch_object(). * mysql_fetch_row($result) : tr v mt mng các d liu ly t 1 dòng trong CSDL. Nu đã  cui CSDL, giá tr tr v là false. Bn phi dùng ch s ca các trng trong CSDL nu mun ly d liu, VD : <html> <body> <?php $db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); $result = mysql_query("SELECT * FROM employees",$db); echo "<table border=1>\n"; echo "<tr><td>Name</td><td>Position</tr>\n"; while ($myrow = mysql_fetch_row($result)) { printf("<tr><td>%s %s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3]); } echo "</table>\n"; ?> </body> </html> * mysql_fetch_array (int result [, int result_type]) : tr v mt mng cha d liu ly t 1 dòng trong CSDL. Tng t nh mysql_fetch_row() nhng bn có th ly trc tip tên trng đ ly d liu. VD : Cùng mt CSDL nh trên, bn có th thy s khác bit <html> <body> <?php $db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); $result = mysql_query("SELECT * FROM employees",$db); if ($myrow = mysql_fetch_array($result)) { do { printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["id"], $myrow["first"], $myrow["last"]); } while ($myrow = mysql_fetch_array($result)); CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 . Tungvn40@yahoo.com Tungvn40@yahoo.com Php Tutorial 1. Php là gì? PHP là mt ngôn ng lp trình kiu script , chy trên Server và. khi ch đ PHP 2. Cài đt nh th nào? Cài PHP trên nn Window vi IIS version 3 hoc 4: - Copy php. ini - dist vào th mc Window. i tên thành php. ini -

Ngày đăng: 05/09/2013, 10:18

Xem thêm

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN