You are on page 1of 44

LAP TRNH WEB NG VI

PHP / MySQL
GUESTBOOK CATALOG FORUM SHOPPING CART

PHAN 3
Tong Phc Khai (tong hp & bien dch)

BIEN (variables)
va cac phep x ly tren bien
1- Bien va cach s dung Bien 2- X ly d lieu t FORM 3- Tm hieu sau hn ve Bien

PHP

Ban oc than men, Va qua toi a soan xong phan 1 va phan 2 cua giao trnh t hoc PHP/MySQL. Toi a nhan c email cua nhng ban quan tam, ch i phan 3 cua giao trnh nay. ang le phan 3 a cho ra i sm nhng v ban ron qua nhieu cong viec (hien toi ang phu trach va co rat nhieu cong viec trong nhom Hanosoft - software Han Nom) nen viec bien soan sach t hoc nay t nhieu b tr hoan. Do hoan canh tren, chac chan cong viec bien soan nay khong tranh c nhng sai sot. Nhng du sao i na, biet c cac ban co the ap dung giao trnh nay vao thc te th toi phan nao cung lay o lam s khch le cho rieng mnh. ung ly ra phan 3 nay la danh tron cho viec noi ve ngon ng SQL nhng phan 2 a ban ve CSDL roi, neu phan nay neu cung ban ve no th co ve hi nham phai khong cac ban? Vi y ngh nay toi a danh tron phan 3 e noi ve bien trong PHP. Han nhien toi biet mot so ban mong moi nhng g trong ay co the ap dung lien th chan hn. Nhng theo toi ngh trc tien het ban can phai nam ro moi ngoc ngach cua PHP va MySQL th mi co the thiet ke c nhng chng trnh at tieu chuan. Do vay mong cac ban hay kien nhan khi oc nhng chng hng dan suong nh the nay! ng nan long va nen ghi nh ay la coi re cho cac ng dung thc te cua cac ban.

e bat au chng nay t nhat ban cung phai co chut nh kien thc ve C S Lap Trnh. Toi ngh neu ban a hoc qua mot khoa lap trnh can ban th ban co the hieu c. Neu khong, oi hoi ban can phai ong nao hoac tm toi hi nhieu. Nao, chung ta bat au i thoi! PHP x ly cac bien rat linh ong. No co the nhan biet c kieu cua bien va lam cho cu phap cau lenh n gian hn. Ai a tng lap trnh vi C, Java hoac Perl se cam thay rat de dang khi s dung PHP. Tuy nhien viec de dai nay cung gay ra mot so tr ngai nhat nh. Tat ca nhng bien khai bao trong PHP eu c bat au vi dau o la ($). Du cho bien cua ban kieu chuoi, nguyen hay thap phan hoac tham ch la mang th chung khong co g khac biet nhau. PHP ch theo doi d lieu cha trong bien thay oi nh the nao thoi. Noi chung, khi lam viec vi PHP ban se quan tam en 3 v tr khac nhau cua bien o la: (1) khai bao ngay trong ma lenh PHP, (2) chuyen tiep t mot trang HTML hoac (3) la bien san co trong cua he thong PHP.
Chung ta se tm hieu ve tng loai tren phan tiep theo. Nen lu y rang bien cung co the c chuyen tiep t cac ni khac nh t cac URL hoac t cac SESSION.

Gan bien trong mot Script


Ban khong can phai khai bao EXPLICIT cho bien nh trong mot so ngon ng khac. Ch can khai bao ten bien la no se san sang lam viec. Ban hay xet cac v du sau e hieu cach khai bao bien trong PHP uyen chuyen nh the nao: $a $b $c $d = = = = "Toi thich hoc PHP"; //day la bien chuoi 4; //day la bien so 4.837; //day la bien so thuc "2"; //day cung la bien chuoi

e y rang dau = la dau dung e gan. Con khi thc hien phep so sanh bang th ban dung hai dau bang (= = ). V du: IF ($x= =1)

PHP rat thong minh trong viec bien oi kieu. V du, ban thc hien phep cong mot so nguyen vi mot chuoi cha ky t so (trong v du tren la $b va $d). $a $b $c $d = = = = "Toi thich hoc PHP"; //day la bien chuoi 4; //day la bien so 4.837; //day la bien so thuc "2"; //day cung la bien chuoi

$e = $b + $d; echo $e; PHP se nhan ra rang ban muon xem chuoi trong $d (chuoi "2") nh la mot so nguyen. The la no se hoan chuyen sang tr nguyen va thc hien phep toan cong cho ra ket qua la $e = 6. Ngoai ra, PHP con co the hieu c cac chuoi va so va ch nh v du sau: $a = 2; $b = "2 con heo con"; $c = $a + $b; Ket qua cho ra la $c = 4. Neu mot so nguyen hay thap phan ng v tr au mot chuoi th PHP co the hieu c nh v du tren. Tng t, PHP thc hien tng t oi vi cac kieu so khac nhau: $f = 2; //$f la mot so nguyen $g = 1.444; // $g la mot so thuc $f = $f + $g; //$f tu bien doi thanh so thuc

Viec x ly nay that la hay, nhng no co the dan en mot so rac roi o la se co nhng luc ban khong biet tai thi iem nao ban se lam viec vi kieu cua bien la kieu g. Toi se trnh bay trong phan Kiem Tra Bien.

Qui nh ve chuoi
Trong cac v du tren, ban thay tat ca cac chuoi eu c bao trong dau nhay oi. Co hai cach khac e ban the hien mot cho PHP hieu o la chuoi. Trong mot chuoi ma ban a bao lai bang cap nhay oi "...", xong ban chen mot bien vao gia, th PHP van hieu c bien o. V du: $my_name = "Jay"; $phrase = "Hello, my name is, $my_name"; echo $phrase; Ket qua cho ra la: Hello, my name is, Jay. That khac thng phai khong cac ban?! (ang le ra dau nhay " th hai phai sau ch is roi at mot dau cong chuoi vi bien $my_name)

Trong trng hp sau ay, toi muon xuat ra mot chuoi: Toi ang ky hosting het $20 th phai lam sao? Bi v trong chuoi nay co cha $, ieu nay se lam cho PHP hieu o la mot bien mi. Chung ta xem cach giai quyet nh sau: Neu nh trong chuoi ban muon co cha cac ky t ac biet nh: dau nhay oi "", dau slash \, dau o la $ , ban phai s dung en ky t chuyen (goi la dau escape) o la dau slash (\).
Toi quen oc dau / la "dau suyet trai" va \ la "dau suyet phai".

Gia s, e xuat ra man hnh mot dong ch: <form action="mypage.php" method="get">, nh ban thay trong o cha ti 4 dau nhay oi - thuoc dang ky t ac biet. Ta phai s dung ti 4 dau suyet phai nh sau: echo "<form action=\"mypage.php\" method=\"get\">"; Th en khi chay chng trnh mi mong cho ra ket qua nh mong muon. Tac dung cua dau nhay n oi vi PHP: Ban se thay dau nhay n trong PHP co tac dung hn dau nhay oi nh the nao! Neu chuoi cua ban co cha cac bien (bat au bang $), ban bao lai bang dau nhay n th bien o se b bien thanh chuoi luon, ch khong c hieu la mot bien nh cach bao bang dau nhay oi:

$my_name = "Jay"; echo Hello, my name is, $my_name; Ket qua cho ra la Hello, my name is, $my_name ch khong phai Hello, my name is Jay. Cuoi cung, trong PHP4 ban co the s dung dau Here Documents. ay la mot loai ky hieu tng t hai loai nhay n va nhay oi. Trong mot so trng hp khi s dung no ban se cam thay rat tien li. Here Docs xac nh gii han au chuoi vi 3 dau nho hn <<< va ky hieu nhan dang (trong sach nay toi s dung ky hieu nhan dang EOQ) Chuoi c ket thuc cung vi ky hieu nhan dang nh vay va kem theo la dau cham phay (;). Sau ay la v du chuoi Toi thich hoc PHP c gan cho bien $mystring c xac nh bang cach s dung Here Doc. $my_string = <<<EOQ Toi thich hoc PHP. EOQ; S dung Here Doc, cac bien se ch anh hng trong chuoi cho nen khi the hien dau nhay oi trong chuoi th khong can s dng dau escape.

$element = <<<EOQ <textarea name="$name" cols="$cols" rows="$rows" wrap="$wrap">$value</textarea> EOQ; Nh v du tren cac ban thay khong can phai hao ph nhieu dau suyet (\), chung ta van co the co c mot chuoi cha cac ky hieu dang bien khong co tam anh hng ra ben ngoai. Cac phan t mang s dung khoa lien hp (ban se tm hieu phan tiep theo) khong the s dung Here Doc c. V du sau ay se xuat hien loi: $array = array ("fname"=>"jay", "lname"=>"greenspan"); $str = <<<EOQ print my string $array["fname"] EOQ;

Mang (array) trong PHP


Mang la mot dang cua bien trong o co cha nhieu gia tr. V du mot dang n gian cua mang la thang: $thang = array("Gieng", "Hai", "Ba", "Bon", "Nam", "Sau", "Bay", "Tam", "Chin", "Muoi", "Muoi Mot", "Muoi Hai"); Mang nay co cha 12 phan t, va ban co the nh v chung bang th t trong mang, bat au bang v tr 0. Do o lenh echo $thang[0] se cho ra la Gieng va echo $thang[11] se cho ra Muoi Hai. e truy xuat c tat ca cac phan t trong mang, ban co the tnh ra chieu dai cua mang va thc hien vong lap: for ($i=0; $i<count($months); $i++) { echo $thang[$i] . "<br>\n" ; } Chi tiet ve vong lap se c trnh bay cac phan sau. Ban co the gan gia tr vao mang vi mot phep toan n gian nh sau:

$dogs = array(); $dogs[0] = "kiki"; $dogs[1] = "lulu"; Neu ban khong xac nh ch so ben trong ngoac vuong th gia tr se c gan cho phan t cuoi mang. Trong v du sau "nana se c gan vao $dogs[2]: $dogs[] = "nana";

Mang lien hp
Cung giong nh cac ngon ng khac, PHP tan dung kha nang cua mang lien hp (associative array). Co the ban cam thay mi me vi khai niem nay. e toi noi s qua mot chut: Moi phan t trong mang lien hp mang khoa(key) rieng. Cac phan t cua mang se c truy cap thong qua khoa. ieu nay giong nh cach thc truy xuat trong cac query khi lam viec vi Database. Trong v du sau, ban se thay cac phan t first_name, last_name, e-mail s dung cac key: $person = array ( "first_name" => "Jay",

"last_name" => "Greenspan", "e-mail" => "jgreen_1@yahoo.com" ); Neu nh ban muon them phan t vao mang, ban co the gan tiep mot gia tr khac. Dong lenh sau se them mot so nguyen vao trong mang, do o mang nay se cha tat ca 4 phan t. $person["age"] = 32; Neu ban muon truy cap ca khoa va gia tr cua mot mang lien hp, ban se dung list() = each() nh sau: while (list($key, $value) = each($person)) { echo "<b>key :</b> $key, value = $value <br>\n"; } Cac chng sau nay toi se noi ky ve list() = each() mot cach chi tiet hn. Tren c ban each() truy xuat c ca khoa va gia tr cua phan t trong mang. List() gi cac gia tr

va gan vao $key va $value. Tien trnh nay tiep tuc cho en khi moi phan t trong mang c truy cap. Neu ban muon duyet qua het mang ban can phai s dung reset($person). Neu ban ch muon s dung gia tr cua phan t trong mang ma thoi hoac ban muon s dung mang khong lien lp va van muon s dung cau truc list()=each() ban phai thc hien nh sau: while (list( , $value) = each($person)) { echo "value = $value <br>\n"; } Hoac ban ch muon truy xuat khoa, ban se lam nh sau: while (list($key) = each($person)) { echo "key = $key <br>\n"; }

Hay nhan nh ve mang trong PHP nh sau: - Tat ca cac mang trong PHP eu la mang lien hp. Tai v sao? Bi v nhng mang khong phai la lien hp th PHP cung se t ong gan cho chung cac key. V du: $x= array ("pug", "poodle"), PHP se t gan cho $x cac khoa la cac con so nguyen theo th t bat au t so 0. Ban se c tm hieu ky chng 6.

Mng a chiu
PHP cung ho tr mang a chieu. Mang a chieu thng s dung nhat o la mang hai chieu. Chung cha thong tin da tren hai khoa. Gia s, neu chung ta cha thong tin hai ngi tr len th mang hai chieu se ho tr viec nay rat tot. Chung ta se xac lap mot mang $people. Trong mang $people lai cha mang cho tng ca nhan: $people = array ( "khai" => array ("ho_lot" => "tongphuoc", "tuoi" => 30), "minh" => array ("ho_lot" => "leanh" , "tuoi" => 52) ); Ta thay $people cha cac thong tin cua 2 ngi, Khai va Minh. e truy cap mot tr trong bat ky thong tin cua ca nhan nao ban se phai dung ca hai khoa. V du e truy xuat tuoi cua Minh ban se thc hien lenh nh sau:

echo $people["minh"]["tuoi"]; Ban co the truy cap tat ca cac phan t trong mang hai chieu bang cach s dung vong lap tren ca hai chieu cua mang: while(list($person, $person_array) = each($people)) { echo "<b>Ban biet gi ve $person</b><br>\n"; while(list($person_attribute, $value) = each($person_array)) { echo "$person_attribute = $value<br>\n"; } }

Bien gan t trnh duyet (web browser)


Quan iem chung cua viec s dung PHP cung nh cac ngon ng khac la cung cap kha nang nhap thong tin theo y muon cua khach. Thong thng cac thong tin nay c nhap vao thong qua mot form HTML. Nhng cung co the chung xuat phat t cac nguon khac nh: HTML, cookie, session.

Bien t Form cua HTML

Dang thong thng nhat e khach co the nhap thong tin rieng la thong qua mot form HTML. Trong phan phu luc A co trnh bay chi tiet ve cac tao mot form HTML. Neu ban cha biet g ve cach tao form nay th hay oc phan phu luc. Ban hay tao trang sign.php ch cha 100% ma lenh HTML nh sau (co the at la sign.htm cung c): <form action=mypage.php action=post> <input type=text name=email> <input type=text name=first_name> <input type=submit name=submit value=OK> <input type=submit name=reset value=Cancel> </form> Mot khi khach nhap chuot vao nut SUBMIT (chap nhan) th cac bien nh $email, $first_name, va $submit se c chuyen giao sang trang action la mypage.php. Sau o, trong trang mypage.php ban se x ly cac bien nay tuy thuoc vao muc ch chng trnh. e y rang phan ln cac ng dung trong sach nay eu s dung gia tr cua nut lenh SUBMIT. Trong trang mypage.php ban phai viet cac lenh e x cac thao tac cua ngi truy cap. Ban hay xem cach x ly trong trang mypage.php mau nh sau:

<?php if (isset($submit) && $submit=="OK") { echo "Cam on ban da gui thong tin cho chung toi."; } else { ?> <form action=mypage.php action=post> <input type=text name=email> <input type=text name=first_name> <input type=submit name=submit value=OK> <input type=submit name=reset value=Cancel> </form> <?php } ?> Ban hay xem ky v du tren, neu nh ngi truy cap nhap u thong tin va nhan nut OK t trang sign.php (cha toan ma lenh html), th no chuyen sang trang mypage.php va xuat ra dong thong bao: Cam on ban da gui thong tin cho chung toi. Ngc lai, neu nh nhan nut Cancel th no se thc hien ma lenh trong lenh Else va se hien th form e buoc nhap lai. Chu y: Ban hay xem lai cach thc submit trong v du GuestBook tap mot. Trong tap 1, neu ban khong chon Submit th chng trnh se goi lai trang sign.php la trang cha Form nhap lieu

bang lenh include. Con ay khong goi lai trang sign.php na, bi v chung ta lam theo kieu khac la gan Form nhap lieu ngay trong file Action la mypage.php. Cac bien cung co the c truy xuat thong qua mang $HTTP_POST_VARS hoac $HTTP_GET_VARS, da vao method s dung trong form cua ban. Viec nay rat thuan tien, neu cac bien t cac forms co the mang cung ten vi bien trong script cua ban, hoac neu ban co cac bien cha nh ngha c chuyen giao th ban se tm c o. Ban co the truy cap bat ky phan t rieng biet nao nh a lam trong mang lien hp ($HTTP_POST_VARS["e-mail"]). Hoac ban co the tao vong lap duyet qua tat ca cac phan t cua mang: while (list($key, $value) = each($HTTP_POST_VARS)) { echo "variable = $key value = $value <br>"; }

Truyen mang

Co nhng trng hp khi viec chuyen giao bien khong the thc hien c. V du nh khi ban chon ca hai gia tr cho cung mot bien. Viec nay thng xay ra khi lam viec vi form co cha listbox va co the la ban se gi phm Ctrl e chon phan t th 2 trong list. Ta giai quyet bang cach s dung phep truyen mang. Cac lenh c s dung nh sau: <form action ="mypage.php" method="post"> <select name="j_names[]" size=4 multiple> <option value="2">John <option value="3">Jay <option value="4">Jackie <option value="5">Jordan <option value="6">Julia </select> <input type="submit" value="submit"> </form>

e y rang trong trong lenh cau lenh select name, toi s dung dau ngoac vuong e bao PHP biet rang ay la mot mang. Neu khong s dung dau [ ] th se co ti 2 gia tr gan cho cung mot bien. Mot khi c SUBMIT ban co the truy cap mang nh sau: if (is_array($j_names)) { echo "<b>the select values are:<br> <br>"; while(list($key, $value) = each($j_names)) { echo $value . "<br>\n"; } }

Viec truyen mang rat thong dung khi ban Submit Form co mot loat cac checkbox (ten cac mat hang chang han). Khach truy cap co the se nhap chuot vao nhieu checkbox hoac khong co checkbox nao. Trong chng 8, co v du cho phep ngi quan tr co the s dung checkbox e chon va xoa cac phan t. Mang c chuyen giao t form co the co khoa lien hp, ngay ca oi vi mang nhieu chieu. Ten cua phan t form thng co ten la name = "array_name[element_name]". Hoac oi vi mang nhieu chieu la array_name[element_name] [subelement_name]".

Cookies

Cookie la nhng file nho cha mot so cac thong tin truy cap Web. Cac cookie do Websever phat sinh, lu gi lai, sau o se c oc nhng lan truy cap ve sau. Cookie n thuan ch la thong tin ghi nhan lai nhng ong tac truy cap web cua khach. Khi ton tai tren a cng, cookie tr thanh cac thnh cau cua giao thc HTTP, c gi en Webserver. e co the phat sinh mot cookie ban can phai s dung ham setcookie() nh sau: setcookie(name, value, time_to_expire, path, domain, security setting);

Chung ta se tm hieu chi tiet ve cookie chng 6. Con bay gi ban tm hieu s lc cac chc nang thong qua mot v du: setcookie("my_cookie", "my_id",time()+(60*60*24*30),"/",".mydomain.com", 0) Lenh tren se phat sinh mot cookie vi cac chc nang sau: - Cha mot bien ten la my_cookie - Gia tr cua mycookie my_id - Cookie ton tai trong vong 30 ngay ke t ngay no phat sinh (time()+(30*24*60*60) ngay gi hien tai + 30 ngay c quy ra giay). - Cookie co tac dung en tat ca cac trang trong domain. Ban co the han che lai bang cac ch ra ng dan en mot so trang nao o trong domain. - No se hien dien trong tat ca cac website co a ch http://mydomain.com - Khong co xac lap ac biet nao ve bao mat. Mot khi cookie c xac lap, cac bien phat sinh t cookie co tac dung giong nh bien phat sinh t form ma chung ta a ban trc ay. Chung se hien dien vi chc nang la bien global.

Sau khi script PHP xac lap cookie, cac script khac trong domain co the truy cap cookie mot cach t ong. Neu nh ban muon can than hn e $mycookie khong xung ot vi mot bien nao khac cung co ten $mycookie, ban co the truy xuat no thong qua mang HTTP_COOKIE_VARS va s dung lenh: HTTP_COOKIE_VARS["mycookie"]. Ban co the xac lap cookie cung cap kha nang truy xuat nh la mot mang: setcookie("mycookie[first]","dddd",time()+2592000,"/","192.168.1. 1", 0); setcookie("mycookie[second]","my_second_id",time()+2592000,"/","1 92.168.1.1", 0); Ca hai bien tren eu co the truy cap en nh la mot mang lien hp.

Sessions

PHP4 cung giong nh ASP va ColdFusion eu co ho tr session, viec nay giup ch rat nhieu cho viec truy cap web. Vay session la g?

n gian no ch la mot cach thc e duy tr va truyen bien trong khi chuyen tiep gia cac trang web. Chng trnh cua ban khai bao mot session c bat au vi ham start_session(). PHP ang ky mot SesssionID duy nhat, va thng th ID nay c gi en user thong qua mot cookie. PHP sau o tao mot tap tin tren server e theo doi s thay oi cua bien. Tap tin nay co ten giong nh ten cua SessionID. Mot khi session c tao, ban co the ang ky bat ky so lng bien. Cac gia tr cua nhng bien nay c lu gi trong tap tin tren server. Cung nh s ton tai cua cookie, cac bien trong session se hien dien tren bat ky trang nao c truy cap en trong pham vi mot domain. Viec xac lap nay rat thuan tien hn la chuyen tiep cac bien t trang nay sang trang khac thong qua cac phan t an trong form hay cookie. Session noi chung la kha n gian. Hay xem script sau se ang ky mot bien session ten la $my_var, va se gan cho no mot gia tr la "hello world". <? session_start(); session_register("my_var"); $my_var = "hello world"; ?>

Tren nhng trang tiep theo bien $my_var se hien dien, nhng ch sau khi ban chay ham sesssion_start(). Ham nay bao PHP tm kiem mot session xem co ton tai hay khong, roi lam cho cac bien session tr thanh global. No co the s dung cau lenh IF e lam cho cac bien session hoan toan co the truy cap c. Hay xem xet v du sau: <?php session_start(); session_register("your_name"); //check to see if $your name contains anything if(!empty($your_name)) { echo "I already know your name, $your_name"; } //this portion will probaby run the first time to //this page. elseif(empty($your_name) && !isset($submit)) { echo "<form name=myform method=post action=$PHP_SELF> <input type=text name=first_name> first name<br> <input type=text name=last_name> last name<br> <input type=submit name=submit value=submit> </form>"; //if the form has been submitted, this portion will

//run and make an assignment to $your_name. } elseif (isset($submit) && empty($your_name)) { $your_name = $first_name . " " . $last_name; echo "Thank you, $your_name"; } Sau khi chay chng trnh nay, chon refresh tren trnh duyet. Ban se thay script se nh c rang ban la ai. Cac ham setcookie() va session_start() nen v tr gan au tap tin. Neu ban th chuyen en trnh duyet trc e xac lap mot cookie ban se nhan c mot thong bao loi.

Bien san co
<?php phpinfo(); ?>

Co rat nhieu bien san co cua PHP va Server. Ban co the liet ke mot danh sach ay u bang cach s dung lenh phpinfo() e xem. Ban hay tao mot file php va cho chay th xem:

Ban co the s dung cac bien nay bang nhieu cach thc khac nhau. Toi se trnh bay mot sau ngay sau ay, va se ch ra ban nen dung vao trng hp nao. Mot so bien en t PHP engine, mot so khac bat nguon t Webserver.

Bien san co cua PHP


Bien nay nhan gia tr la a ch hien tai cua tap tin .php ang c duyet. a ch nay se la a ch ay u t goc (bat au t http://) . Ban se s dung no khi muon truy cap lai chnh trang web ang thi thanh. Xet v du sau, ay la mot form tng t nh form sign.php ma cac ban a co dp xet qua. Neu khach thc hien thao tac khac vi submit th chnh form nay se c thi hanh lai: <? if(isset($submit)) { //Xuat ra thong bao tai day echo "Cam on ban da submit"; } else { ?> <form name=myform method=post action=<?=$PHP_SELF?>> <input type=text name=first_name> first name<br> <input type=text name=last_name> last name<br> <input type=submit name=submit value=submit>

PHP_SELF

</form> <? } ?>

HTTP_POST_VARS

ay la mot mang cha tat ca cac bien c chuyen tiep thong qua POST method t mot form. Ban co the truy cap tng bien rieng re nh la mot phan t cua mang lien hp (v du: $PHP_POST_VARS["myname"]).

HTTP_GET_VARS

ay la mot mang cha tat ca cac bien c chuyen tiep thong qua GET method. Ban co the truy cap tng bien rieng re nh la mot phan t cua mang lien hp (v du: $PHP_GET_VARS["myname"]).

HTTP_COOKIE_VARS

Tat ca cac cookie chuyen en trnh duyet eu co the c truy xuat trong mang lien hp nay. No bao gom ca session cookie. Neu ban con thac mac cookie se thi hanh nh the nao th hay xem ham phpinfo() e biet c trnh duyet cua ban ang chuyen en server nhng g.

BIEN CUA APACHE

Apache co san rat nhieu bien. Toi khong trnh bay ay u tat ca cac bien ra ay. Cac bien ban s dung, chung tuy thuoc vao xac lap hien tai cua ban nh the nao. Sau ay la mot so bien ma co le ban se s dung thng xuyen trong chng trnh cua ban.

DOCUMENT_ROOT

Bien nay tra ve ng dan cua Webserver. Bien nay c toi s dung trong xuyen suot quyen sach nay. Hay xet v du sau: include"$DOCUMENT_ROOT/book/functions/charset.php"; Bang cach s dung bien DOCUMENT_ROOT thay v dung ng dan tuyet oi, chung ta co the di chuyen toan bo mot th muc sang mot Apache Server khac ma khong lo lang rang ng dan se b sai lech trong include path. Nen nh rang neu nh ban khong s dung Apache Server th bien nay khong s dung c. Neu ban s dung include_path trong tap tin php.ini,

ban khong can phai lo lang phai xac nh ng dan nh the nao bi v PHP se duyet het tat ca cac th muc va tm ra tap tin ban a ch nh.

Bat ky ai a tng thiet ket Web site eu hieu rang tam quan trong cua viec nhan dang c trnh duyet cua ngi s dung la g. Mot so trnh duyet th khong s dung c JavaScript, mot so khac th oi hoi dang HTML n gian. Bien user_agent cung cap cho ban kha nang uyen chuyen oi vi tng trnh duyet khac nhau. Mot user_agent chuan co dang nh the nay: Mozilla/4.0 (compatible; MSIE 5.01; Windows 98) Neu ban phan tch chuoi nay ra ban se biet c nhng g ban can tm. Co the ban ch thch ham get_browser() cua PHP. Ve ly thuyet ma noi, ham nay nh ngha kha nang cho phep cua trnh duyet cua user ang s dung. Cho nen ban co the biet c la chng trnh cua ban ang phuc vu tot hay khong. Cac sach PHP co nhng hng dan ve cach cai at va s dung get_browser(), nhng toi khuyen ban khong nen s dung no. Bi v s dung get_browse ban se c bao rang IE 5 dung cho PC va Netscape 4.01 dung cho Mac co ho tr CSS (cascading stylesheets) va JavaScript. Nhng bat ky ngi s dung nao cung biet rang: viet lenh DHTML

HTTP_USER_AGENT

e chay tren ca hai moi trng trnh duyet nay la mot cong viec phc tap. Thong tin ban nhan c t get_browser() co the dan en nhng tnh nang gia trong bao mat. Cach tot nhat la ban s dung HTTP_USER_AGENT va thc hien quyet nh cua mnh da tren trnh duyet hoac platform xac nh nao o.

REMOTE_ADDR

Dung e lay a ch IP cua user. Tuy nhien co nhng user am hieu chuyen nay va co the ho thay oi IP cua may mnh. Cho nen khong lay g e am bao rang: mot a ch IP chan chan la cua mot user nao o. Ban s dung bien nay e theo doi s truy nhap cua mot user nhng no ch mang tnh tng oi thoi.

REQUEST_URI

Bien nay cung giong nh bien PHP_SELF. Ngoai ra no con cha them tham so trong a ch truy van . Neu ban truy cap vao a ch: http://www.mydomain.com/info/products/index.php?id=6 Th bien REQUEST_URI cua ban co gia tr la: info/products/index.php?id=6

SCRIPT_FILENAME

Bien nay cha toan bo ng dan cua tap tin.

Kiem tra bien

tren chung ta a noi nhieu ve Bien. Nh cac ban biet o, ten cua mot bien khong quan trong bang gia tr ma no cha trong o. Nh toi a noi Bien trong PHP rat uyen chuyen. ieu nay phat sinh s bat li la ban se khong biet tai mot thi iem nao o th bien nay se mang gia tr g. Do o ban can phai thc hien thao tac kiem tra bien.

Ham nay thc hien viec kiem tra bien co cha gia tr hay khong. No se tra ve gia tr TRUE hoac FALSE. Neu bien cha c xac lap th tr isset() se la false. Ban hay xem xet v du sau, no thi hanh mot query MySQL. Ban a biet rang mot field trong database co the cha tr null hoac chuoi rong. Vi viec s dung ham isset() ban se kiem tra va phan biet c hai gia tr tren. Trong oan lenh PHP ben di. Trong o bien $query la mot phat bieu SELECT lay d lieu submit t form cua user. $result = mysql_query($query) or die (mysql_error()); $number_cols = mysql_num_fields($result);

isset( )

echo "<b>query: $query</b><br>\n"; //layout table header echo "<table border = 1>\n"; echo "<tr align=center>\n"; for ($i=0; $i<$number_cols; $i++) { echo "<th>", mysql_field_name($result, $i), "</th>\n"; } echo "</tr>\n";//end table header //layout table body while ($row = mysql_fetch_row($result)) { echo "<tr align=left>\n"; for ($i=0; $i<$number_cols; $i++) { echo "<td>"; if (!isset($row[$i])) //test for null value {echo "NULL";} else {echo $row[$i];} echo "</td>\n";

} echo "</tr>\n"; } echo "</table>"; Lu y rang dau cham than (!) co ngha la phu nh. Tc la neu $var co gia tr null th: isset($var) cho ra gia tr False !isset($var) cho ra gia tr True

empty()

Ham empty() co ve ngc ngao so vi ham isset(). No se cho ra tr True neu $var co tr null, chuoi rong hoac so 0. Ham nay thng c s dung e kiem tra xem user co nhap tr vao trong form hay khong: if(empty($first_name)) { echo "Ban can phai nhap ten cua minh"; exit;

is_int( )

Ham nay e kiem tra bien co phai la so nguyen hay khong. Co 2 cu phap khac cho cung ket qua nh no la: is_integer va is_long(). Ban s dung ham nay khi khong chac rang bien la mot tr nguyen hay chuoi. V du: $a = "222"; $b = 22; is_int($a) cho ra tr False is_int($b) cho ra tr True Tng t ban se co mot loat ham kiem tra kieu cua bien sau ay:

is_double()
Kiem tra so kieu double (dau phay ong). Ham thay the: is_float() va is_real().

is_string( ) is_array( ) is_bool( )

Kiem tra kieu chuoi.

Kiem tra kieu mang.

Kiem tra kieu boolean (TRUE va FALSE)

is_object( ) gettype( )

Kiem tra bien kieu object. Ban se tm hieu kieu object trong cac phan sau.

Ham nay se cho ban biet kieu cua bien nh: string, double, integer, array, hoac boolean. Ngoai ra no co tra ve cac kieu nh object, class. Ban se khao sat ky ve viec lap trnh hng oi tng trong cac phan sau e biet them ve object va class.

Lu y tr cua han gettype() tra ve luon la mot chuoi: "string", "integer", "double" v.v. Ban hay xem v du sau: $str = "Day la mot chuoi"; $type = gettype($str); if ($type == "string") { echo "Dung vay"; }

oi kieu cua bien

Ban se s dung 3 cach e oi kieu cua bien.

Phng phap nay rat n gian: Ban ch can ghi ten kieu ra, ong ngoac n lai, roi at trc bien. Tc khac bien se b oi theo kieu ma ban muon. Cach thc: (kieu) $bien V du: $a = $b = echo echo 1; (string)$a; //so 1 se bien thanh chuoi 1 gettype($a), "<br>\n"; gettype($b), "<br>\n";

Phng phap type casting

Ket qua cho ra la: integer string

S dung ham settype( )

Ham nay co 2 oi so. Th nhat la ten bien, th nh la kieu. u iem cua no la no co the cho ra ket qua FALSE neu nh viec hoan oi khong c. Cach thc: settype($bien, "kieu") V du: $a = 1; settype($a, "string");

S dung ham intval( ), doubleval( ), va stringval( )


$a = "43";/ /43 la kieu chuoi $b = (intval($a) * 2);

Phng phap nay thng e ban ap dung nhanh trong khi tnh toan. Co le nhn ten ham ban cung biet c chc nang cua no roi. Hay xet v du sau:

Bien cua bien


Nghe qua co ve la la, nhng ay la mot "oc chieu" cua PHP. Vi cach thc nay ban se lay gia tr cua mot bien e hnh thanh ten cua mot bien mi. Cach thc: $$bien V du: $a = khai; $$a = Chao moi nguoi; Ban se thay trong v du tren mot bien mi c hnh thanh o la $khai cha gia tr la "Chao moi nguoi" Xet them v du sau, trong o $tacgia la mot mang lien hp. <? $tacgia = array ("ho"=>"Tong", "ten"=>"Khai"); while (list($field,$value) = each($tacgia))

{ $field = "bien_$field"; $$field = $value; } echo $bien_ho, " ", $bien_ten; ?> Khi chay chng trnh, cac bien sau se c tao $bien_ho, $bien_ten va ghi ra man hnh: Tong Khai

Tom tat

Ban a tm hieu cac bien trong PHP. Ban thay PHP x ly cac bien linh hoat hn nhieu so vi cac ngon ng khac. Con mot van e kha quan trong oi vi bien o la scope ban cung se biet ky ve no trong cac phan sau cua giao trnh nay.

(Con tiep)

You might also like