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à mt ngôn ng lp trình kiu script , chy trên Server và tr v mã HTML cho trình duyt. VD: <html> <head> <title>Example</title> </head> <body> <?php echo "Hi, I'm a PHP script!"; ?> </body> </html> Mã PHP đc đt trong kiu tag đc bit cho phép ta có th vào hoc ra khi ch đ PHP 2. Cài đt nh th nào? Cài PHP trên nn Window vi IIS version 3 hoc 4: - Copy php.ini - dist vào th mc Window. i tên thành php.ini - Sa file php.ini nh sau: - t li đng dn mc : 'extension_dir' chuyn ti v trí cài đt php hoc ni đ các file php_*.ini. VD : c:\php - t đng dn chính xác đn file: browscap.ini trong th mc Window. - Chy MMC , chn Web site hoc th mc ca ng dng - m mc Property ca th mc , chn vào Home Directory, Virtual Directory hay Directory. - Vào mc: Configuration->App Mappings ->Add->Executable : c:\php\php.exe %s %s. Chú ý phi có %s %s . - Trong ô Extension, đánh đuôi file bn mun gn vi mã php. Thng là .php hoc .phtml - t ch đ sercurity thích hp. Nu dùng h thng NTFS, cn đt cho phép thc hin vi th mc 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 dng nu nhng tag ngn đc cho phép s dng. Có th sa short_open_tag trong cu hình ca php hoc biên dch file php vi la chn cho phép dùng các tag ngn. Tng t nh vy, cách th 4 ch có tác dng nu asp_tag đc đt trong file cáu hình ca PHP PHP cho phép h tr các kiu chú thích ca 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 kiu d liu: 2.1S nguyên : c khai báo và s dng giá tr giing vi 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 thc: VD :$a = 1.234; $a = 1.2e3; Chú ý: Khi s dng các s thc đ tính toán , có th s làm mt giá tr ca nó. Vì vy, nên s dng các hàm toán hc trong th vin chun đ tính toán. 2.3 Xâu : Có 2 cách đ xác đnh 1 xâu: t gia 2 du ngoc kép (") hoc gia 2 du ngoc đn ('). Chú ý: Các bin giá tr s không đc khai trin trong xâu gia 2 du ngoc đn. 2.4 : Mng : Mng thc cht là gm 2 bng : bng ch s và bng liên kt. a. Mng 1 chiu : Có th dùng hàm : list() hoc array() hoc lit kê các giá tr ca tng phn i trong mng đ to mng . Có th thêm các giá tr vào mng đ to thành 1 mng. --> Dùng ging trong C Có th dùng các hàm asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), and uksort() đ sp xp mng. Tu thuc vào vic bn đnh sp xp theo kiu gì. b. Mng nhiu chiu: Tng t C. bn 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 chiu tr tip t mt mng nhiu chièu khi bên trong 1 xâu: VD : $a[3]['bar'] = 'Bob'; echo "This won't work: $a[3][bar]"; Kt qu tr ra s là: This won't work: Array[bar]. Nhng vi VD sau s chy đúng: $a[3]['bar'] = 'Bob'; echo "This will work: " . $a[3][bar]; Vi PHP4, vn đ s đc gi quyt bng cách cho mng vào gia 2 du ngoc móc { } VD : $a[3]['bar'] = 'Bob'; echo "This will work: {$a[3][bar]}"; PHP không yêu cu phi khai báo trc kiu d liu cho các bin, Kiu d liu ca bin s ph thuc vào kiu d liu mà bn 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 thc (3.3) $foo = 5 + "10 Little Piggies"; // $foo là s nguyên (15) 3. Bin - giá tr: PHP quy đnh mt bin đc biu din bt đu bng du $, sau đó là mt ch cái hoc du gch di. CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com 3.1 Mt s bin đã đc to sn : argv : Mng tham s truyn cho script. Khi đon script chy bng dòng lnh, tham s này s đc dùng ging nh C đ truy nhp các tham s trên dòng lnh. argc : s các tham s đoc truyn. Dùgn vi argv; PHP_SELF : tên ca đon mã script đang thc hin. Nu PHP đang đc chy t dòng lnh thì tham s này không có giá trj. HTTP_COOKIE_VARS: mt mng các giá tr đc truyn ti script hin ti bng HTTP cookie. Ch có tác dng nu "track_vars" trong cu hình đc đt hoc ch dn <?php_track_vars?> HTTP_GET_VARS: Mng các giá tr truyn ti script thông qua phng thc HTTP GET. Ch có tác dng nu "track_vars" trong cu hình đc đt hoc ch dn <?php_track_vars?> HTTP_POST_VARS: 3.2 Phm vi giá tr: PHP coi 1 bin có mt gii hn. xác đnh mt bin toàn cc (global) có tác dng trong mt hàm , ta cn khai báo li. Nu không giá tr ca bin s đc coi nh là cc 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 bit đó là nhng bin toàn cc. Nu không có khai báo global, $a và $b ch đc coi là các bin bên trong hàm Sum(). iu này khác vi C Mt cách khác đ dùng bin toàn cc trong 1 hàm là ta dung mng $GLOBAL ca PHP VD trên s có th vit nh sau: $a = 1; $b = 2; Function Sum () { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Sum (); echo $b; Mt chú ý khác là khai báo static. Vi khai báo này bên trong mt hàm vi 1 bin cc b, giá tr ca bin cc b đó s không b mt đi khi ra khi hàm. VD : Function Test () { static $a = 0; echo $a; $a++; } Vi khai báo nh trên , $a s không mt đi giá tr sau khi thc hin li gi 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 tng lên 1 sau mi ln gi hàm Test(). 3.3 Tên bin: Mt bin có th gn vi 1 cái tên . VD: $a = "hello"; $$a = "world"; ==> $hello = "world" và echo "$a ${$a}"; <==> echo "$a $hello"; Kt qu ra s là : hello world Chú ý : bn có th gp phi trng hp không rõ ràng khi s dng cách này vi mng . VD : $$a[1] s hiu là bn mun dùng $a[1] nh 1 bin hay dùng $$a nh 1 bin vi [1] là ch s? tránh trng hp này , cn có su phân bit rõ bng du { }. VD :${$a[1]} hoc ${$a}[1]. 3.4 Các giá tr bên ngoài phm vi PHP HTML Form : khi 1 form gn vi 1 file php qua phng thc POST VD: <form action="foo.php3" method="post"> Name: <input type="text" name="name"><br> <input type="submit"> </form> PHP s to 1 bin $name bao gm mi giá tr trong trung Name ca Form. PHP có th hiu đc mt mng mt chiu gm các giá tr trong 1 form. Vì vy, bn có th nhóm nhng giá tr liên quan li vi nhau hoc s dng đc tính này đ nhn các giá tr t 1 đu vào tu chn.(multi select input) Khi tính cht track_vars đc đt trong cu hình hoc có ch dn <?php_track_vars?> . các giá tr đc submit đc ly ra qua phng thc GET và POST có th ly t 2 mng toàn cc $HTTP_POST_VARS và $HTTP_GET_VARS IMAGE SUBMIT: Khi dùng 1 image đ thc hin submit, có th dùng tag nh sau: <input type=image src="image.gif" name="sub"> Khi ngi dùng click chut trên nh, form tng ng s đc gi ti server kèm theo 2 giá tr thêm vào : sub_x và sub_y. Nhng bin này s lu gi to đ mà ngi dùng đã click chut trên nh. Ngi lp trình có kinh nghim s thy rng trên thc t, trình duyt gi các giá tr có chu k thi gian nhng PHP đã to cm giãc gn nh vic gi các giá tr đó là liên tc. HTTP Cookies : PHP h tr HTTP cookies theo đnh dng ca Netscape. Cookies file lu gi thông tin ca các trình duyt t xa và qua đó có th theo dõi hay nhn bit ngi s dng. Có th dùng Cookies bng hàm SetCookie(). Hàm này cn đc gi trc khi thông tin đc gi ti trình duyt. Bt k cookie nào gi ti bn t máy khách (client) s t đng chuyn thành d liu ca phng thc GET và POST. Nu bn mun có nhiu giá tr trong 1 cookie, ch cn thêm vào du [ ] vi tên ca cookie. VD : SetCookie ("MyCookie[]", "Testing", time()+3600); Chú ý rng cookie s thay th cho cookie cùng tên, tr trg hp khác đng dn hoc min. BIN MÔI TRNG: CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com PHP t đng to bin cho các bin môi trng nh 1 bin bình thng ca PHP VD : echo $HOME; /* Shows the HOME environment variable, if set. */ Vì thông tin ti qua các phng thc GET, POST , Cookie cng t đông to các bin PHP, thnh thong bn nên đc 1 bin t môi trng đ chc chn rng bn có đúng version. Hàm getenv() và putenv() giúp bn đc và ghi vi các bin môi trng. DU CHM TRONG TÊN BIN: Bình thng, PHP không thay đi tên bin khi bin đó đc truyn vào đon script. Tuy nhiên, nên chú ý rng dáu chm (.) không phi là mt ký hiu hp l trong tên bin đi vi PHP. Vì vy, PHP s t đng thay th các du chm bng du gch di.(_) 4. CONSTANTS PHP đnh ngha sn mt vài hng s: _FILE_ : tên ca script file đang đc thc hin. _LINE_ : s dòng ca mã script đang đc thc hin trong script file hin ti. _PHP_VERSION_ : version ca PHP _PHP_Ó : tên h điu hành mà PHP đang chy TRUE FALSE E_ERROR : báo hiu có li E_PARSE : báo li sai khi biên dch E_NOTICE : Mt vài s kin có th là li hoc không. E_ALL : Có th đnh ngha mt hng s bng hàm define() VD : <?php define("CONSTANT", "Hello world."); echo CONSTANT; // outputs "Hello world." ?> 5. BIU THC Biu thc là mt phn quan trng trong PHP. Phn ln mi th ban vit đu đc coi nh 1 biu thc. iu này có ngha là mi th đu có 1 giá tr. Mt dng c bn nht ca biu thc bao gmcác bin và hng s. PHP h tr 3 kiu giá tr c bn nht: s nguyên, s thc, và xâu. Ngoài ra còn có mng và đi tng. Mi kiu giá tr này có th gán cho các bin hay làm giá tr tr ra ca các hàm. Bn có th thao tác vi các bin trong PHP ging nh vi 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 CU TRÚC LNH: 6.1 If else else if: if (điu kin) { do something; } elseif ( điu kin ) { do something;} else { do something;} 6.2 Vòng lp : 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 khi vòng lp hin thi continue : b qua vòng lp hin ti, tip tc vòng tip theo. 6.4 switch switch (tên bin) { case trng hp 1: . break; case trng hp 2: . break; case trng hp 3: . break; default : } 7 HÀM: Dùng ging vi C++. Ngoi tr bn không cn phi khai báo kiu cho tham s ca hàm: 7.1 Tham tr : VD: function takes_array($input) { echo "$input[0] + $input[1] = ", $input[0]+$input[1]; } 7.2 Tham bin: function add_some_extra(&$string) { $string .= 'and something extra.'; } 7.3 Tham s có giá tr mc đnh: function makecoffee ($type = "cappucino") { return "Making a cup of $type.\n"; } Chú ý : khi s dng hàm có đi s có giá tr mc đnh, các bin này s phi nm v phía phi 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 li ca hàm: CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com Có th là bt k giá tr nào, Tuy vây, không th tr li nhiu giá tr riêng l nhng có th tr li mt mng các giá tr. VD function small_numbers() { return array (0, 1, 2); } tr li mt tham tr, bn cn có du & c khai báo ca hàm cng nh giá tr tr li. VD : function &returns_reference() { return &$someref; } $newref = &returns_reference(); 7.5 Hàm bin: PHP cho phép s dng hàm giá tr Ngha là khi mt bin đc goi có kèm theo du ngoc đn , PHP s tìm hàm có cùng tên vi giá tr bin đó và thc hin 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 hc : + - * / % Các toán t logic : and or xor ! && || Toán t thao tác vi bit : & | ^ ~ << >> Toán t so sánh : ==, != ,< ,> ,<=, >=, ==== (bng va cùng kiu - PHP4 only), !== (khác hoc khác kiu - PHP4 only) Toán t điu khin li : @ - khi đng trc 1 biu thc thì các li ca biu thc s b b qua và lu 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 thc thi : ` `- PHP s thc hin ni dung nm gia 2 du ` nh 1 lnh shell. Tr ra giá tr là kt qu thc hin lnh VD : $output = `ls -al`; //lit kê các file bng lnh Linux echo "<pre>$output</pre>"; 9 LP VÀ I TNG: CM Soft 70 NCT F2 Q10 CM Soft 70 NCT F2 Q10 Tungvn40@yahoo.com Tungvn40@yahoo.com Class: là tp hp các bin và hàm làm vic vi các bin này. Mt lp có đnh dng 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; } } } ?> Lp Cart đây là mt kiu d liu, vì vy bn có th to mt bin có kiu này vi toán t new VD: $cart = new Cart; $cart->add_item("10", 1); Lp có th đc m rng bng nhng lp khác. Lp mi thu đc có tt c nhng bin và hàm ca cá lp thành phn. Thc hin vic tha k này bng t khoá "extends". Chú ý : k tha nhiu lp 1 lúc không đc chp nhn. VD : class Named_Cart extends Cart { var $owner; function set_owner ($name) { $this->owner = $name; } } Các hàm khi to ca lp đc gi t đng khi bn gi toán t new. Tuy nhiên, các hàmkhi to ca lp cha s không đc gi khi hàm khi to ca lp con đc gi. Hàm khi to có th có đi s hoc không, 10. THAM CHIU: Tham chiu trong PHP có ngha là ly cùng 1 giá tr bng nhiu tên bin khác nhau. Khác vi con tr trong C, tham chiu là mt bng các bí danh. Chú ý : trong PHP, tên bin và nôi dung ca bin là khác nhau. Vì vy, cùng 1 ni dugn có th có nhiu tên khác nhau. Tham chiu PHP cho phép bn to 2 bin có cùng nôi dung. VD : $a = & $b; -- > $a, $b tr ti cùng 1 giá tr. Tham chiu truen giá tr bng tham chiu. Thc hin vic này bng cách to mt hàm cc b và truyn giá tr đc tham chiu 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); --> Kt qu : $a = 6; Giá tr tr li ca mt hàm bng tham chiu rt tin khi bn mun s dng hàm đ tìm 1 giá tr trong 1 phm vi nào đó. VD : function &find_var ($param) { .code . return $found_var; } $foo =& find_var ($bar); Khi bn mun loi b mi liên kt gia tên bin và giá tr ca bin, s dng hàm unset() VD : $a = 1; $b =& $a; unset ($a); 11. THAO TÁC VI NH: PHP không b gii hn vi mã HTML đc tr li cho trình duyt. Vì vy, có th dùng PHP đ to và thao tác vi các file nh có đnh dng khác nhau, bao gm :gif, png, jpg, wbmp, and xpm. PHP có th đa các file nh trc tip đn các trình duyt. Bn s cn biên dch PHP vi th vin GD bao gm các hàm thao tác vi nh. GD và PHP có th s cn có thêm 1 s th vin khác, tu thuc vào đnh dng ca file nh cn dùng. VD : To nh GIF vi 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 dng ta dùng tag : <img src="button.php?text">. , 12. PHP và MySQL: connect ti 1 CSDL trên MySQL server rt đn gin. Bn ch cn dùng hàm mysql_connect(host, user, password) đ m 1 kt ni ti MYSQL server vi kt qu là giá tr tr v ca hàm (Gi s là bin $db). Sau đó, dùng hàm mysql_select_db(database_name, link_id) đ chn CSDL bn mun kt ni. thc hin mt câu lnh truy vn, dùng hàm mysql_query(query, link_ID). Giá tr tr li ca hàm là kt qu ca câu truy vn. Nu b qua link_ID thì kt ni cui cùng ti MySQL server s đc thc hin. Bn có th xem ví d sau s hiu rõ hn. <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() đ ly kt qu thc hin , bn 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 mt mng các d liu ly t 1 dòng trong CSDL. Nu đã cui CSDL, giá tr tr v là false. Bn phi dùng ch s ca các trng trong CSDL nu mun ly d liu, 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 mt mng cha d liu ly t 1 dòng trong CSDL. Tng t nh mysql_fetch_row() nhng bn có th ly trc tip tên trng đ ly d liu. VD : Cùng mt CSDL nh trên, bn có th thy s khác bit <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à mt ngôn ng lp trình kiu script , chy trên Server và. khi ch đ PHP 2. Cài đt nh th nào? Cài PHP trên nn Window vi IIS version 3 hoc 4: - Copy php. ini - dist vào th mc Window. i tên thành php. ini -