SlideShare una empresa de Scribd logo
1 de 221
Descargar para leer sin conexión
Chapter 1
                                Configuring Your Installation


Introduction
	       Great website ေတြကို creat လုပ္ေပးႏိုင္တဲ႔ technologies ေတြက အမ်ားႀကီးရွိပါတယ္။
အဲဒိထဲကမွ သင္ဟာ Apache/MySQL/PHP (တစ္ခါတစ္ရံ AMP လုိ႔သံုးႏံႈးပါတယ္) ကို ေရြးခ်ယ္ၿ
ပီးေလ႔လာၾကမွာျဖစ္ပါတယ္။ သင္႔အေနနဲ႔ အရင္ကတည္းက မေလ႔လာဖူးတာျဖစ္ျဖစ္ နည္းနည္းပ
ါးပါးေလ႔လာဖူးရင္ျဖစ္ျဖစ္ ဒီစာအုပ္ကို ဖတ္ရႈႏိုင္ပါတယ္။ Apache, MySQL, PHP ဆုိတဲ႔ ၃ ခုလံုးဟာ
တစ္ပိုင္းျခင္းစီျဖစ္ျဖစ္ သံုးခုတြဲျဖစ္ျဖစ္ ေတာ္ေတာ္ေလးကို complex ျဖစ္ပါတယ္။ ယခုစာအုပ္ထဲမွာ အဲဒိ
၃ ခုလံုးနဲ႔သက္ဆုိင္တဲ႔ အေၾကာင္းအရာအားလံုးရဲ႕ details ကို ေဖာ္ျပႏိုင္ဖို႔ဆုိတာ ေတာ္ေတာ္ေလးကို
မလြယ္ကူပါဘူး။ မျဖစ္ႏိုင္ပါဘူး။ ဒီစာအုပ္ရဲ႕ အဓိက ရည္ရြယ္ခ်က္က ခုနက ေျပာခဲ႔တဲ႔ AMP
တစ္ခုျခင္းစီကို အေျခခံကေန နားလည္လြယ္ေအာင္ ရည္ရြယ္ၿပီးေရးထားတာပါ။ တစ္ခ်ဳိ႕ေနရာေတြမွာ
coding အားလံုးကို အေသးစိတ္လိုက္မရွင္းထားတာက ေရွ႕သင္ခန္းစာမွာ ရွင္းထားခဲ႔ၿပီးရင္ ေနာက္သင္
ခန္းစာမွာထပ္မရွင္းေတာ႔ပါဘူး။ အဓိက ရည္ရြယ္ခ်က္ကို focus လုပ္ေနတာကေန ေသြဖီသြားမွာစိုးလို႔ပါ။
	       ေနာက္တစ္ခုက ဒီစာအုပ္ကို ဖတ္မယ္ဆုိရင္ စာဖတ္သူဟာ HTML, CSS ကို နားလည္ ထားသူ
သို႔မဟုတ္ တီးမိေခါက္မိရွိထားသူျဖစ္ဖုိ႔လိုပါတယ္။ HTML နဲ႔ CSS       နဲ႔ပါတ္သတ္တာေတြကို လံုး၀
ထည့္မရွင္းထားပါဘူး။ တစ္ျခား ေနာက္ထပ္ Program တစ္ခုခုကို လည္း သင္ မသိထားရင္ ရပါတယ္။
သိထားတဲ႔သူေတြကေတာ႔ programming concept ရတာေပါ႔။ ဆိုလိုတာကေတာ႔ APACHE/MySQL/
PHP newbie ေတြအတြက္ ရည္ရြယ္ပါတယ္။ တကယ္လို႔မ်ား ကၽြန္ေတာ္ intermediate level အတြက္
စာအုပ္ ထုတ္ျဖစ္ခဲ႔မယ္ဆုိရင္ အဲဒိစာအုပ္မွာ ေအာက္ပါအခန္းမ်ား ပါ၀င္လာမွာျဖစ္ပါတယ္ -
	       1. Image upload
	       2. Create thumbnails
	       3. Handling and avoiding errors
	       4. Validating user input
	       အခု စာအုပ္မွာ အဓိက ပါတာေတြကေတာ႔ PHP ကို စတင္ဖုိ႔အတြက္ မိမိစက္ထဲမွာ web serv-
er တစ္ခု တည္ေဆာက္တာနဲ႔ က်န္တဲ႔အပိုင္းကေတာ႔ PHP/MySQL အဓိက ျဖစ္ပါတယ္။ အခုစာအုပ္ကို
သင္က ဆံုးခန္းတုိင္ေအာင္ ဖတ္ၿပီးၿပီဆုိပါက သင္႔အေနျဖင္႔ movie review dynamic website
တစ္ခုကို အေျခခံက်က် ဖန္တီးႏိုင္မွာျဖစ္ပါတယ္။ ဘာေတြပါလဲဆုိရင္ movie name ေတြပါမယ္။ အဲဒိ
movie တစ္ခုျခင္းစီရဲ႕ details ေတြပါမယ္။ user ေတြရဲ႕ comments ေတြပါမယ္။ အဲဒိ comments
ေတြနဲ႔အတူ movie ratings ေတြပါ ၾကယ္ေလးေတြနဲ႔ ျပတတ္လာမယ္။ ၿပီးရင္ ေနာက္ထပ္ movie
အသစ္ေတြ ထပ္ေပါင္းထည့္ႏိုင္မယ္။ ရွိၿပီးသားဟာေတြကို Edit လုပ္ႏိုင္မယ္။ delete လုပ္ႏိုင္မယ္။
အဲဒါေတြ အားလံုးအတြက္ concepts ေတြကို ေသခ်ာရွင္းျပထားပါတယ္။ တစ္ခ်ဳိ႕ေနရာေတြမွာ screen
2                                                       PHP        avScg;xpfrsm;
shot နဲ႔ ျပပါတယ္။


Requirements
	        ခု သင္ခန္းစာအတြက္ လိုအပ္တာေတြကေတာ႔
	        ၁။ Browser
	        ၂။ Text editor ( ကၽြန္ေတာ္ကေတာ႔ notepad++ သံုးပါတယ္)
	        ၃။ Wamp server
	        ၄။ developer tools bar (firefox addon)
	        တုိ႔ျဖစ္ပါတယ္။ အဲဒါေတြ အားလံုးကို ဒီစာအုပ္နဲ႔အတူ ပါလာမယ္႔ CD ခ်ပ္ထဲကေန ရႏိုင္ပါတယ္။


Wamp server installation
	        ပထမဆံုး CD ထဲက WampServer2.0c ဆိုတဲ႔ .exe file ကို double click လုပ္ပါ။




Yes ကို ႏွိပ္ပါ။

                                         rZÑdr pmay
udkausmf                 3




Next ကို ႏွိပ္ပါ။




                    rZÑdr pmay
4                                                           PHP        avScg;xpfrsm;
default အေနနဲ႔ c ေအာက္မွာ wamp ဆိုတဲ႔ folder နာမည္နဲ႔ install လုပ္မွာပါ။ Next ကိုဘဲ ႏွိပ္ပါ။
	      ေနာက္တစ္ခါ Quick launch တုိ႔ဘာတုိ႔ေရြးခိုင္းရင္လည္း ႏွစ္သက္သလို ေရြးၿပီး Next လုပ္ပါ။


	      ၿပီးရင္ေတာ႔ Install ကို ႏွိပ္ပါ။ ဒါဆုိရင္ သူ႔ဟာသူ install လုပ္ေနပါလိမ္႔မယ္။
	      ၿပီးသြားရင္   default     browser      ေရြးခိုင္းပါလိမ္႔မယ္။   ကၽြန္ေတာ္ကေတာ႔    firefox
ကိုဘဲေရြးခဲ႔ပါတယ္။
	
	      ေနာက္တစ္ဆင္႔အေနနဲ႔ mail parameters ကို ေရြးခိုင္းပါတယ္။




ေလာေလာဆယ္ ဒီအတုိင္းထားၿပီး Next ကိုဘဲ ႏွိပ္ပါတယ္။
ၿပီးသြားရင္ေတာ႔ Finish ကို ႏွိပ္လိုက္ပါ။ ဒါဆုိရင္ task bar မွာ ေအာက္ပါအတုိင္းေပၚေနပါလိမ္႔မယ္။




                                           rZÑdr pmay
udkausmf                                                                     5




အဲဒိ ျမားျပထားတဲ႔ icon ေပၚမွာ left click ႏွိပ္ၿပီးေတာ႔ put online ကို ကလစ္လိုက္ပါ။




အဲဒါၿပီးရင္ wamp server icon ေလးဟာ ေအာက္ပါပံုအတုိင္းေျပာင္းသြားပါလိမ္႔မယ္။




                                          rZÑdr pmay
6                                                        PHP        avScg;xpfrsm;




အားလံုးၿပီးသြားၿပီဆုိရင္ သင္႔အေနနဲ႔ wamp server ကို ေအာင္ျမင္စြာ install လုပ္ၿပီးသြားပါၿပီ။ သင္
ယခုျပဳလုပ္လုိက္တဲ႔ ဆာဗာထဲမွာ PHP 5.2.6 , Apache 2.2.8 , MySQL 5.0.51b တုိ႔ ကိုလည္း install
လုပ္ၿပီးသား ျဖစ္သြားပါမည္။


Starting with browser


	      firefox browser မွာ localhost or 127.0.0.1 လုိ႔ ရိုက္ထည့္လိုက္ပါက ေအာက္ပါအတုိင္း
တက္လာရပါမည္။
ဒါမွမဟုတ္လည္း wamp server icon အေပၚမွာ left click လုပ္ၿပီး localhost ကို click လုပ္ရင္လည္း
တက္ပါတယ္။




                                         rZÑdr pmay
udkausmf                                                                   7




Your projects ဆိုတဲ႔ေနရာမွာ ခုေလာေလာဆယ္ ေအာက္ပါအတုိင္းျမင္ရမွာျဖစ္ပါတယ္။
No projects yet.
To create a new one, just create a directory in ‘www’.


        ကၽြန္ေတာ္တုိ႔လုပ္သမွ်   projects    အားလံုးသည္   c:wampwww   ဆိုေသာ   folder
ေအာက္တြင္သာ ျပဳလုပ္ရမည္ ျဖစ္ပါသည္။
        ေနာက္ထပ္ phpMyAdmin ကို ေခၚလိုလွ်င္ wamp server icon ေပၚမွ phpMyAdmin ကို
click လုပ္ၿပီး ေခၚႏိုင္ပါသည္။
        Default Database username မွာ root ျဖစ္ၿပီး password မွာ blank ျဖစ္ပါသည္။
ယခုစာအုပ္တြင္ Default အတိုင္းသာ သံုးသြားမည္ျဖစ္ပါသည္။




                                           rZÑdr pmay
8                                                      PHP       avScg;xpfrsm;
How to use Notepad++


	       Notepad++ ကို install လုပ္ၿပီးၿပီဆုိပါက text document တစ္ခုေပၚတြင္ right click
လုပ္ၾကည့္ပါက Edit with Notepad++ ဆိုေသာ စာတမ္းကိုေတြ႕ျမင္ရမည္ျဖစ္ပါသည္။




	       သင္က php page တစ္ခုကို စတင္ၿပီး create လုပ္လုိပါက www folder ထဲတြင္ text docu-
ment တစ္ခု လုပ္လိုက္ပါ။ ၿပီးရင္အဲဒိ text document ေပၚကို right click လုပ္ၿပီးေတာ႔ Edit with
Notepad++ လုပ္လုိက္ပါ။ ဒီလိုဆိုရင္ notepad++ program တက္လာပါမယ္။ တက္လာတဲ႔အခါမွာ
Language မွာ PHP ကို ေရြးေပးပါ။ ၿပီးရင္save as လုပ္ၿပီးေတာ႔ နာမည္တစ္ခုနဲ႔ သိမ္းလိုက္ရင္ php
file တစ္ခုကို ရလာမွာျဖစ္ပါတယ္။ default အေနနဲ႔ PHP ရဲ႕ open and close tag ေတြကို အနီနဲ႔
ေဖာ္ျပၿပီး comment ေတြကို အစိမ္းနဲ႔ျပပါတယ္။ ျပင္ခ်င္တယ္ဆုိရင္ေတာ႔ settings/style configura-
tor မွာ ျပင္လို႔ရပါတယ္။




                                       rZÑdr pmay
udkausmf                                                                           9
                                 Chapter (2)
                        Creating PHP pages using PHP

       ဒီအခန္းမွာေတာ႔ PHP ရဲ႕ အေျခခံအခ်က္ေလးမ်ားကို ေျပာသြားမွာျဖစ္ၿပီး တစ္ခ်ိန္တည္း
မွာဘဲ ေျပာသြားတဲ႔အခ်က္ေလးေတြနဲ႔ web တစ္ခုကို အဆင္႔ဆင္႔ တည္ေဆာက္သြားမွာျဖစ္ပါတယ္။
အားလံုးၿပီးသြားတဲ႔အခါမွာ Movie review ေတြရယ္ ၊ ဒီ web ကို လာတဲ႔ လူေတြရဲ႕ comment
ေတြရယ္ movie details ေတြကို MySQL နဲ႔ တြဲၿပီး ျပႏိုင္မွာျဖစ္ပါတယ္။ အေသးစား dynam-
ic web page တစ္ခု တည္ေဆာက္တယ္လို႔ မွတ္ယူလို႔ရပါတယ္။ သင္႔အေနနဲ႔ PHP program ကို
ဒီအတုိင္း သီအိုရီ ခ်ည္း သက္သက္ေလ႔လာ ေနရင္ ပ်င္းမွာစိုးပါတယ္။ ကိုယ္ သိထားသေလာက္က
ဘယ္ေလာက္ထိ ေရးလို႔ရသလဲ ဘယ္ေလာက္ထိ ဖန္တီးလို႔ရသလဲဆုိတာကို သိထားဖုိ႔လိုပါတယ္။
ခု အေျခခံအခ်က္ေလးေတြနဲ႔ တင္ သင္ ထင္မွတ္မထားေလာက္ေအာင္ လုပ္ႏိုင္မွာကို ေတြ႕ရွိရမွာပါ။
ကၽြန္ေတာ္ဟာ ဒီစာအုပ္နဲ႔ အတူ CD တစ္ခ်ပ္ တြဲထည့္ေပးထားၿပီးေတာ႔ အဲဒိ CD ထဲမွာ Exercise files
ေတြပါတယ္။ အႀကံျပဳလိုတာကေတာ႔ အဲဒိ CD ထဲက ဖိုင္ေတြကို တတ္ႏုိင္သမွ် နားလည္ေအာင္ၾကည့္ပါ။
copy paste လုပ္ၿပီး သင္မေလ႔က်င္႔ပါနဲ႔။ Programming ဆိုတာမ်ဳိးကလည္း တစ္ခါေရးနားမလည္
ႏွစ္ခါေရး ရင္ ရူးသြားတာမ်ဳိးမဟုတ္ပါဘူး။ ထပ္ခါထပ္ခါေရးေလ ပို နားလည္ေလ ျဖစ္ေစတာပါ။


       PHP ကို အျခား language ေတြျဖစ္တဲ႔ HTML တို႔လို text editor နဲ႔ ေရးလို႔ရပါတယ္။ ဒါေပမယ္႔
HTML နဲ႔ မတူတာက PHP မွာက .php ဆိုတဲ႔ extension နဲ႔ အဆံုး သတ္တာျဖစ္ၿပီး Web စာမ်က္ႏွာ
ေပၚတာေတြက HTML ေတြျဖစ္တယ္ဆုိတာ မွတ္ထားဖို႔လိုပါတယ္။


How PHP fits with HTML


       The Rules of PHP syntax
       PHP ကို စေရးၿပီဆုိရင္ ထိပ္ဆံုးမွာ <?php နဲ႔ စၿပီးေတာ႔ ေနာက္ဆံုးမွာ ?> အဆံုးသတ္ရပါတယ္။
       ေယ်ဘူယ်အားျဖင္႔ PHP statement ေတြရဲ႕အဆံုးကို semicolon(;)နဲ႔ အဆံုး သတ္ေပးရပါတယ္။
ေအာက္က ဥပမာကို ၾကည့္ပါ။




                                        rZÑdr pmay
10                                                          PHP         avScg;xpfrsm;
	       <?php
		              $num = 1+2;
		              echo $num;
	       ?>
	       ကိုယ္ေရးေနတဲ႔ ပရိုဂရမ္ဟာ တျဖည္းျဖည္းရွည္ လာၿပီးရႈပ္ေထြးမႈရွိလာရင္ ေနာက္တစ္ခါ
ျပန္ၾကည့္တဲ႔အခါ ကိုယ္ေရးထားတဲ႔ဟာကို ကိုယ္႔ဟာကို ျပန္မမွတ္မိ ျဖစ္ေနတတ္ပါတယ္။ ဒါေၾကာင္႔
စတင္ေရးၿပီဆုိကတည္းက          ဘယ္      အေၾကာင္းအရာ         ကို   ဘာေၾကာင္႔ေရးထားတယ္ဆုိတာကို
ပရိဂရမ္ထဲမွာ ထည့္ေရးထားဖုိ႔ အၾကံျပဳလိုပါတယ္။ ဒါကို Comment ေရးတယ္လို႔လဲေခၚပါတယ္။ Com-
ment ေရးရင္ တစ္ေၾကာင္းတည္းဆုိရင္ double forward slashes (//) ကို အသံုး ျပဳၿပီးေရးရပါတယ္။
ဥပမာ-
	    <?php
		          // Adding number
		          $num = 1+2;
		          echo $num;
	    ?>
	    ဒီလို ေရးတဲ႔အခါမွာ comments ေတြကို ပရိုဂရမ္က ထည့္ မ run ပါဘူး။
တကယ္လို႔ ကိုယ္မွတ္ထားတာက ငါးေၾကာင္း ေလာက္ျဖစ္သြားမယ္ဆုိရင္ /* com-
ment */ ကို သံုးလို႔ရပါတယ္။ ဒါေတြကို မွတ္ထားရင္ရပါၿပီ။ ကဲ... အခု ဆိုရင္ သင္ဟာ
PHP ကို ဘယ္လို စေရးရမယ္ဆုိတာ သိၿပီးသြားၿပီမဟုတ္လား။ သိပ္မခက္ပါဘူး။


The importance of coding pratices
	     သင္ဟာ     ပရိုဂရမ္  တစ္ခု   စေရးေတာ႔မယ္ဆုိရင္                   Code    structure    ေတြကို
အ ရ င္ ဆံုးေ လ ႔ လာ သ င္ ႔ ပ ါ တ ယ္ ။ သ င္ေ ရး လို က္ တဲ ႔ C o d eေ တ ြ ဟာ B r o w s e rေ ပ ၚ မ ွာ
ေကာင္းမြန္စြာအလုပ္လုပ္ေနသမွ်       သင္႔ရဲ႕   code   structure   ကို    သိပ္ဂရုစိုက္စရာမလိုပါဘူး   ။
တကယ္လို႔ အဲသည္လိုမဟုတ္ေတာ႔ဘဲ တစ္ခုခု error ျပ ေနၿပီဆုိရင္ Code error ကို ရွာရေတာ႔မယ္
။ အဲဒိအခါမွာစေရးကတည္းက ရႈပ္ေထြးေနေအာင္ေရးခဲ႔မယ္ဆုိရင္ အလြယ္တကူ ရွာဖို႔ ခက္ခဲမွာပါ။
ေအာက္က နမူနာပံုစံကိုၾကည့္ၾကည့္ပါ။




                                             rZÑdr pmay
udkausmf                                                                       11
        Example(2) ကိုၾကည့္လိုက္ရင္ ပိုရွည္တယ္ထင္ေပမယ္႔ တကယ္တမ္းၾကေတာ႔ syntax err-
ror or other troubleshooting လုပ္တဲ႔အခါမွာ ပိုမိုျမန္ဆန္စြာလုပ္ႏိုင္ပါတယ္။
        ဒါဟာ     ပရိုဂရမ္ကို   ခုမွ   စေရးမယ္႔    သူေတြအတြက္တကယ္႔ကို         အေရးႀကီးပါတယ္။
ၾကံဳသလိုေရးလိုက္ရင္ အက်င္႔ႀကီးပါသြားတတ္ပါတယ္။
Example (1)
      < ?php
              //check to make sure the first name is equal to MgMg before granting ac-
cess
              if ($_POST['fname'] == 'MgMg') {
                echo '<p> Hi '. $_POST['fname'] . '</p>';
              } else {
                 echo '<p> Your name isn't MgMg so you cannot enter the web site. </p>
';
              }
      ?>
Example(2)
      < ?php
              //check to make sure the first name is equal to Joe before granting access
                  if ($_POST['fname'] == 'Joe')
                {
                        echo '<p>';
                        echo 'Hi';
                        echo $_POST['fname'];
                        echo '</p>';
              }
              else
              {
                        echo '<p>';
                        echo 'Your name's not MgMg so you cannot enter the web site!';
                        echo '</p>';



                                          rZÑdr pmay
12                                                    PHP        avScg;xpfrsm;
Creating your first program
	
	      Using (echo)
	      1. ေအာက္မွာ ျပထားတဲ႔ ကုဒ္ေတြကို notepad++ ထဲ ကူးထည့္ၿပီး firstprog.php ဆိုၿပီး Save
လုပ္ပါ။
	       <html>
		            <head>
			                 <title>My first Program</title>
		            </head>
		            <body>
			                 <?php
				                       echo "I'm a KoKo.And I'm OK.";
			                 ?>
		            </body>
	       </html>
OK . အဲဒိ firstprog.php ဆိုတ႔ဲ ဖုိင္ကို web browser ကေန ၾကည့္ၾကည့္ရင္ ေအာက္ကပံုအတိုင္း
ျမင္ရပါမယ္။




                                       rZÑdr pmay
udkausmf                                                                        13
ကဲ အခု ေနာက္ထပ္ တစ္ေၾကာင္းေလာက္ ထပ္ေပါင္း ေရးၾကည့္ရေအာင္။ ထပ္ေပါင္းေရးတဲ႔
စာေၾကာင္းကို Highlight လုပ္ေပးထားပါတယ္။
      <html>
               <head>
                       <title>My first Program</title>
               </head>
               <body>
                       <?php
                              echo "I'm a KoKo.";
                              echo 'And I'm OK.';
                       ?>
               </body>
      </html>

File ကို save လုပ္ၿပီးေတာ႔ Browser ကေန ျပန္ၾကည့္ၾကည့္ပါ။ ေအာက္ပါ ပံုအတိုင္း ျမင္ရပါလိမ္႔မယ္။




                                        rZÑdr pmay
14                                                         PHP         avScg;xpfrsm;
How it works?
	       Browser ကေန PHP program ကို​ call လုပ္လိုက္ရင္ အရင္ဆံုး PHP code ေတြကို line
by line ရွာပါတယ္။ ဆုိလိုတာက <?php ?> ၾကားက ကုဒ္ေတြကို ရွာတာေပါ႔။ တစ္ခ်ိန္တည္းမွာဘဲ
အဲဒိ code ေတြကို process လုပ္ပါတယ္။ ဆာဗာကို PHP code ေတြဟာ တစ္ေၾကာင္းတည္း ပံုစံနဲ႔
သြားတာပါ။ ဆာဗာဆီကိုPHP code ေတြဟာ မွန္မွန္ကန္ကန္ေရာက္သြားၿပီဆိုရင္ က်န္တဲ႔ HTML code
ေတြကို browser ဆီပို႔ေပးပါတယ္။ တစ္ခါတည္း php sections ေတြပါ ပို႔ေပးတာပါ။
	       အထက္က ပရိုဂရမ္ မွာ Coding ပိုင္းမွာ သတိထားမိမယ္ဆုိရင္ single quotation marks (')
ေလးကို သတိထားမိမွာပါ။
	       Text string ေတြကို ေဖာ္ျပရာမွာ single quotation mark(') နဲ႔ double quotation mark(")
ကို လိုအပ္ခ်က္ေပၚမူတည္ၿပီး သံုးသြားရမွာပါ။ ေနာက္ပိုင္း သင္ခန္းစာေတြမွာ ပရိုဂရမ္ ေရးရင္း ေရးရင္း
ပိုမုိေလ႔လာႏိုင္ပါတယ္။ ေအာက္က နမူနာ ပံုစံေလးကို ၾကည့္ၾကည့္ပါ။


	       echo " I'm a KoKo";
	       အဲဒိဟာကို output အေနနဲ႔ ထုတ္လိုက္ရင္ I'm a KoKo ဆိုၿပီး ရလာမွာပါ။ ဘာျဖစ္လို႔လဲဆိုေတာ႔
text string ရဲ႕ အစနဲ႔ အဆံုး ကို " နဲ႔ ခံၿပီး သံုးထားလို႔ပါ။ double quotaion mark (") ႏွစ္ခုၾကားမွာ
ရွိတဲ႔ဟာက String ေတြျဖစ္တယ္ဆုိတာ PHP က သူ႔အလိုလို သိပါတယ္။ ေအာက္က နမူနာကိုလည္း
ၾကည့္ပါဦး။


	       echo 'I'm a KoKo';
	       အဲဒိ လိုင္းကို Output ထုတ္လိုက္ရင္ Error message ရလာမွာပါ။ ဘာျဖစ္လို႔လဲဆုိေတာ႔
String value က ဘယ္က စမွန္း PHP က မသိေတာ႔ပါဘူး။ I'm က ' က စတာလား ။ ဒါမွမဟုတ္ 'I က
စတာလားဆိုတာ Confused ျဖစ္သြားပါၿပီ။ အဲဒိလိုဘဲ double quotation mark နဲ႔ စေပမယ္႔ အလားတူ
Problem မ်ဳိး ေတြလည္းျဖစ္ႏုိင္ပါတယ္။ ေအာက္က နမူနာေလးကို ေလ႔လာၾကည့္ပါ။
	
	       echo "I'm a KoKo . "Hello world"";
	       အဲဒိေတာ႔ လိုအပ္သလို ေပၚဖုိ႔ single quotation mark(') and double quotation




                                          rZÑdr pmay
udkausmf                                                                             15
mark (") ေတြကို လိုအပ္သလို အသံုးျပဳရမွာပါ။ အထက္ပါ code ကို မွန္မွန္ကန္ကန္ Run ဖို႔
ေအာက္ပါအတုိင္း ေရးရင္ ရပါတယ္။


        echo"I'm a KoKo . "Hello world"";
         သံုးထားတာကို သတိျပဳမိမွာပါ။ ဘာအတြက္ သံုးတာလဲဆိုရင္ ဒီမွာက Hello world
ရဲ႕ေရွ႕နဲ႔ေနာက္က (") ကို plain character အျဖစ္ ယူလိုတဲ႔အတြက္ဘဲျဖစ္ပါတယ္။ အခုေန
ရႈပ္ေနမယ္ဆုိတာ     သိပါတယ္။      ေနာက္     အခန္းေတြ     ေရာက္လာရင္       ခု   ေလ႔က်င္႔ခန္းေတြက
ထမင္းစားေရေသာက္ တာထက္ကို ပိုမို လြယ္ကူ သြားေစမယ္ဆုိတာ အာမခံပါတယ္။

Integrating HTML with PHP
        ေအာက္မွာ ျပထားတဲ႔ နမူနာေလးေတြကို ၾကည့္လိုက္ရင္ HTML ကို PHP ထဲ ထည့္သံုးရတာ
ဘယ္ေလာက္ လြယ္ကူၿပီး လွပ တယ္ဆုိတာ ကိုယ္တုိင္ လုပ္ၾကည့္လိုက္ပါ။

                <html>
                      <head>
                            <title>My first Program</title>
                      </head>
                      <body>
                            <?php
                                   echo " <h1>I'm a KoKo.</h1>";
                                   echo "<h2>I'm a KoKo . "Hello world"</h2>";
                            ?>
                      </body>
                </html>
Considerations with HTML inside PHP
        HTML ကို PHP ထဲမွာ ထည့္သံုးေတာ႔မယ္ဆုိရင္ ေအာက္မွာ ျပထားတဲ႔အခ်က္ေတြကို
ေသခ်ာေလး ဂရုစိုက္ေစခ်င္ပါတယ္။
        ၁။ double quotation mark ေတြကို သံုးရာမွာ ဂရုစိုက္ပါ။ back slash () ခံၿပီးသံုးပါ။
ဥပမာ-


                echo "<p style="font-size:80%;">";
        ၂။ HTML နဲ႔သံုးမယ္ဆုိရင္ single quotation mark ကို အမ်ားဆံုးသံုးသင္႔ပါတယ္။
                                          rZÑdr pmay
16                                                       PHP        avScg;xpfrsm;
ဥပမာ
		             echo '<p style="font-size:80%;">';
	      ၃။ PHP code ေတြထဲကို HTML code ေတြ တအားမ်ားေနၿပီဆုိရင္ သတိထားပါ။ code
ေတြေရာေထြးၿပီး ရႈပ္ေထြး ေနတတ္ပါတယ္။ အဲဒိအခါမွာ ကိုယ္႔ရဲ႕ HTML code ေတြကို Strictly
ျဖစ္ေအာင္ ျပန္စဥ္းစားၿပီး ျပန္ေရးပါ။ ေအာက္က ဥပမာ ၂ ခုကို ႏႈိင္းယွဥ္ၾကည့္ရင္ သိႏိုင္ပါတယ္။
Example(1)
<?php
   echo ' <table style="font-family: Arial,sans-serif; font-size: 80%; ';
   echo 'width: 100%;">';
   echo ' <tr> ';
   echo ' <td style="width: 50%;">';
   echo 'First Name:';
   echo ' </td > ';
   echo ' <td style="width: 50%">';
   echo $_POST['fname'];
   echo ' </td > ';
   echo ' </tr > ';
   echo ' </table > ';
?>

Example(2)
<table style="font-family: Arial,sans-serif; font-size: 80%; width: 100%;">
 <tr>
  <td style="width: 50%;">
  First Name:
  </td >
  <td style="width: 50%" >
		             <?php echo $_POST['fname'];?>
  </td>
 </tr>
 </table>




                                         rZÑdr pmay
udkausmf                                                                        17
       အထက္က ဥပမာ ၂ ခုကို ယွဥ္ၾကည့္မယ္ဆုိရင္ အဓိက ရည္ရြယ္ခ်က္က $_POST['fname']
ဆိုတဲ႔ ဟာကို ထုတ္ေပးဖုိ႔ဘဲျဖစ္တယ္ဆုိတာ ေတြ႕ရမယ္။ ဒီလိုပံုစံမ်ဳိးမွာ HTML code အားလံုးကို PHP
ပံုစံ ထဲ ထည့္ေရးမယ္႔အစား(Example 1လို) Example 2 လို HTML ထဲမွာ လိုအပ္တဲ႔ PHP code
ကိုဘဲ ထည့္ေရးရင္ ပိုၿပီးရိုးရွင္းပါတယ္။ ဆာဗာ အတြက္ကေတာ႔ အထက္က Example ၂ ခုထဲက
ၾကိဳက္တဲ႔ဟာနဲ႔ ေရး ။ အေရးမႀကီးဘူး။ ပရိုဂရမ္မာေတြအတြက္ဘဲကိုယ္ေရးလိုက္တဲ႔ဟာ              For-
mat က်က် ေရးခ်င္တယ္၊ debugging လုပ္ဖို႔ လြယ္လြယ္ျဖစ္ခ်င္တယ္ဆုိရင္ example 2 လိုေရးဖို႔
အၾကံျပဳလိုပါတယ္။

Using Constants and Variables to add Functionality

       ခုဆုိရင္ echo function ဘယ္လို အလုပ္လုပ္သလဲဆုိတာ နားလည္သြားၿပီလို႔ယူဆပါတယ္။
echo function ဟာ HTML နဲ႔ တူတူပါဘဲ။ ခု ရွင္းျပမယ္႔ Constants and Variables ေတြကို ထည့္သံုး
အသံုးျပဳတတ္မွ တကယ္႔ True power of PHP ကို ရရွိမွာျဖစ္ပါတယ္။
       Overview of constants
       Constant ဆိုတဲ႔ သေဘာတရားကို ေက်ာင္းသားတုိင္း သိၾကမွာပါ။ သူ႔ကို အသံုးျပဳမယ္ဆုိရင္
       (၁) မသံုးခင္မွာ သူ႕ရဲ႕ တန္ဖိုးကို ႀကိဳတင္သတ္မွတ္ဖို႔လိုပါတယ္။
       (၂) Constant ေတြကို နာမည္ေပးတဲ႔အခါမွာ အစစာလံုးေတြကို letter (A to Z, a to
               z) or _(underscore)     နဲ႔စရပါတယ္။
       (၃) Constant နာမည္ေတြကို Number နဲ႔ စလို႔ မရပါဘူး။
       (၄) Constant ေတြဟာ case- sensitive ျဖစ္ပါတယ္။ သိသာထင္ရွားေအာင္ စာလံုး
       အႀကီးေတြနဲ႔ ေရးေလ႔ရွိပါတယ္။
       (၅) Constant ေတြကို PHP function တစ္ခုျဖစ္တဲ႔ define() နဲ႔ သတ္မွတ္ၿပီးေတာ႔
       သတ္မွတ္ၿပီးသြားရင္ သူ႔ကို ျပန္ေျပာင္းလို႔မရပါဘူး
       နမူနာေလး ေလ႔က်င္႔ၾကည့္ရေအာင္။ ေအာက္မွာ ျပထားတဲ႔ code ေတြအတုိင္း text editor ထဲ
ရိုက္ထည့္ပါ။




                                         rZÑdr pmay
18                                                  PHP       avScg;xpfrsm;
	   <html>
  		       <head>
  			            <title> My Movie Site </title>
  		       </head>
  		       <body>
			              <?php
				                    define ('FAVMOVIE', 'ThaGyanMoe');
				                    echo 'My favorite movie is ';
				                    echo FAVMOVIE;
			              ?>
		         </body>
	   </html >
	
	      အဲဒိ ပရိုဂရမ္ေလးကို ေလ႔လာမယ္ဆုိရင္ FAVMOVIE ဆိုတဲ႔ constant ကို သတ္မွတ္ၿပီး
သူ႔ရဲ႕ တန္ဖိုးကို ThaGyanMoe လို႔ ထားလိုက္တာပါ။ အဲဒိေတာ႔ ဘယ္လိုျဖစ္သြားမလဲဆုိရင္
define('name','value') ျဖစ္သြားတာပါ။ ေအာက္က ပံုအတုိင္း Result ထြက္လာပါမယ္။




                                     rZÑdr pmay
udkausmf                                                                        19
        Overview of Variables

        Constant ရဲ႕ ေျပာင္းျပန္က Variable ေပါ႔ ။ Variable ေတြရဲ႕ တန္ဖုိးဟာ ေျပာင္းႏိုင္တယ္။
Variable ေတြကို သံုးဖုိ႔ define သတ္မွတ္ေပးစရာမလိုသလို declare လုပ္ဖို႔လည္း မလိုပါဘူး။ Vari-
able ေတြဟာ ဘာနဲ႔ တူသလဲဆုိရင္ information ေတြကို သိမ္းထားတဲ႔ container တစ္ခုပါဘဲ။
လိုတ႔ဲေနရာကေန ေခၚသံုးႏိုင္တယ္။ ၿပီးေတာ႔ အဲဒိ information ကိုလည္း ထပ္ေျပာင္းႏိုင္တယ္။ Vari-
able ေတြကို ေရးေတာ႔မယ္ဆုိရင္
        (၁) $ နဲ႔ စရမယ္။
        (၂) Variable ေတြဟာ case-sensitive ျဖစ္ပါတယ္။ ($dateEntered နဲ႔ $Dateentered)
တုိ႔ရဲ႕ တန္ဖုိးဟာ                           မတူပါဘူး
        (၃) Variable name ေတြရဲ႕ အစဟာလည္း letter(A to Z, a to z) or _ (underscore)
ျဖစ္ရပါမယ္။
        (၄) Variable name ေတြရဲ႕ အစဟာ number မျဖစ္ရပါဘူး (0-9)။

        Using Variables

        ခုနက        moviesite.php   ကို   အနည္းငယ္     ျပင္ေရးၾကည့္ပါမယ္။   Variables   ေလး
ထည့္သံုးၾကည့္မွာေပါ႔။ ျပင္ထားတဲ႔ စာေၾကာင္းေတြကို Highlight ျပထားပါတယ္။
        <html>
              <head> <title> My Movie Site </title> </head>
              <body>
                   <?php
                           define ('FAVMOVIE', 'ThaGyanMoe');
                           echo 'My favorite movie is ';
                           echo FAVMOVIE;
                           echo '<br/>';
                           $movierate = 5;
                           echo 'My movie rating for this movie is: ';
                           echo $movierate;
                   ?>
              </body>
        </html >

                                          rZÑdr pmay
20                                                    PHP        avScg;xpfrsm;




How it works
	      ပထမဆံုး $movierate ဆုိတဲ႔ variable ရဲ႕ တန္ဖုိးကို 5 လို႔ သတ္မွတ္လိုက္ပါတယ္။ Num-
ber ေတြကို တန္ဖုိးသတ္မွတ္ ရင္ single quotation mark or double quotation mark မလိုပါဘူး။
တကယ္လို႔ သင္ဟာ ေအာက္ပါအတုိင္း ေရးမယ္ဆုိရင္ movierate တန္ဖုိးဟာ ဂဏန္း 5 မဟုတ္ဘဲ
Character 5 ျဖစ္သြားမွာပါ။
	      $movierate='5';
ဒီေတာ႔ တန္ဖိုးေတြကို သတ္မွတ္ရင္ integer သတ္မွတ္ၿပီး ထားရင္ ေနာက္ပိုင္း mathematical calcu-
lation လုပ္ရင္ ပိုမိုလြယ္ကူပါလိမ္႔မယ္။ ေအာက္မွာ ျပထားတဲ႔ နမူနာကို ၾကည့္လိုက္ရင္ သိသာပါတယ္။
	       <?php
		                $mamamovierate = 5;
		                $nyinyimovierate = 7;
		                $fathermovierate = 2;
		                $mothermovierate = 1;
		                $avgmovierate = (($mamamovierate + $nyinyimovierate +
						                                          $fathermovierate+ $mothermovierate) / 4);
		                echo 'The average movie rating for this movie is: ';
		                echo $avgmovierate;
	       ?>




                                       rZÑdr pmay
udkausmf                                                                        21
ဒီပရိုဂရမ္ေလးကို    ေလ႔လာၾကည့္ရင္        ရိုးရုိးရွင္းရွင္းေလးပါဘဲ။   သခ်ၤာ   ေဖာ္ျမဴလာအတုိင္း
စုစုေပါင္းကို အေရအတြက္ နဲ႔ စားလုိက္ရင္ average value ကို ရတာဘဲေလ ။ မဟုတ္ဘူးလား။
တစ္ခု သတိထားရမွာက () ေတြကို ေရးရင္ျဖစ္ပါတယ္။ ( ဖြင္႔ၿပီးရင္ ျပန္ပိတ္ ) ရပါတယ္။ + -*/
ေတြပါလာၿပီဆုိေတာ႔ ဒီအေၾကာင္းကို ေနာက္ပိုင္းမွာ ဆက္ရွင္းျပပါမယ္။ ခု PHP ထဲမွာ ပါတဲ႔ built-in
mathematical functions ေတြကို နည္းနည္းေလာက္ တီးေခါက္ ၾကည့္ရေအာင္။
         rand([$min , $max]) : Returns a random number.
         ceil($value) : Returns the next highest integer by rounding the value up-
wards.
         floor($value) : Returns the next lowest integer by rounding the value down-
wards.
         number_format($number[,$decimal_places[,$decimal_point, $thousands_
sep]])
         ေအာက္မွာ ျပထားတဲ႔ နမူေလးနဲ႔ ယွဥ္တြဲ ေလ႔လာၾကည့္ပါ။ ၿပီးရင္ ကိုယ္႔ဟာကို တစ္ျခား
တန္ဖုိးေတြကို ေရးၿပီး ေလ႔က်င္႔ပါ။ Pratice makes perfect တဲ႔။

         rand([$min , $max]) : Returns a random number.
         ceil($value) : Returns the next highest integer by rounding the value up-
wards.
         floor($value) : Returns the next lowest integer by rounding the value down-
wards.
         number_format($number[,$decimal_places[,$decimal_point, $thousands_
sep]])



         $price = 12345.67
         number_format($price); // returns 12,345.67
         number_format($price,2,'.',''); // returns 12345.67




                                         rZÑdr pmay
22                                                         PHP           avScg;xpfrsm;
	       အခုက အျမည္းေလးေကၽြးထားတဲ႔သေဘာပါဘဲ။ ေနာက္ပိုင္းမွာ လက္ေတြ႕ေလ႔က်င္႔ခန္းေတြ
လုပ္ရင္းနဲ႔ ပိုၿပီး နားလည္ လာပါမယ္။ သက္ဆုိင္ရာ ေနရာေရာက္ရင္ အေသးစိတ္ရွင္းျပမွာပါ။


Passing variables between pages


	       တကယ္လို႔ သင္႔ရဲ႕ website ထဲကို user ေတြကို ၀င္ခြင္႔ေပးမယ္ဆုိရင္ login form လိုလာၿပီေပါ႔။
Login လုပ္ၿပီးသြားရင္ သင္႔အေနနဲ႔ ၀င္လာတဲ႔ user ကို ႏႈတ္ဆက္ခ်င္တယ္။ အဲဒိ ႏႈတ္ဆက္စာကိုလည္း
user က ဘယ္ စာမ်က္ႏွာကိုဘဲ သြားသြား ေပၚေနေစခ်င္တယ္ဆိုရင္ ေပၚေစခ်င္တဲ႔ ဟာကို vari-
able တစ္ခု သတ္မွတ္ၿပီး အဲဒိ variable ကို စာမ်က္ႏွာတစ္ခုကေန ေနာက္တစ္ခုကို passing လုပ္ဖုိ႔
လုပ္ရမွာဘဲျဖစ္တယ္။ အဲဒိလို pass လုပ္ဖုိ႔ အေျခခံ အားျဖင္႔ေပါ႔ ၄ မ်ဳိးရွိပါတယ္။
	       (1)    Pass the variables in URL
	       (2)    Through a session
	       (3)    Via a cookie
	       (4)    with an HTML form
	       အဲဒိ     ထဲက     ဘယ္ဟာကို         သံုးမယ္ဆုိတာေတာ႔       ကိုယ္     ျပဳလုပ္တဲ႔    site   ရဲ႕
လိုအပ္ခ်က္ေပၚမွာမူတည္ၿပီးဘဲ ဆံုး ျဖတ္ၾကပါတယ္။

Passing Variables through a URL
	
ဥပမာေပါ႔ဗ်ာ -

	       http://www.mydomain.com/news/articles/showart.php?id=12345


	       သူက variables ကို URL ထဲကေန ျဖတ္ၿပီးေဖာ္ျပတာပါ။ showart.php ကို ေခၚလိုက္ရင္ ar-
ticles ထဲက id နံပါတ္ 12345 ကို ေခၚတင္လုိက္တာပါ။
	       အဲဒိလို variable ေတြကို URL ထဲမွာ ေဖာ္ျပတဲ႔အခါမွာ ႏွစ္ခု ကို တစ္ျပိဳင္တည္း လုပ္ခ်င္ရင္
ampersand(&) သေကၤတကို သံုးၿပီး ႏွစ္ခုကို ေပါင္းၿပီး ေဖာ္ျပလို႔ရတယ္။ ဥပမာ-
	       http://www.mydomain.com/news/articles/showart.php?id=12345&lang=en




                                           rZÑdr pmay
udkausmf                                                                          23
သူ႔ရဲ႕ သေဘာတရားကေတာ႔ id နံပါတ္ 12345 ျဖစ္ရမယ္႔ အျပင္ language ကလည္း en ဆိုတဲ႔
english ျဖစ္ရမယ္ေပါ႔ဗ်ာ။ ခုကေတာ႔ ဒီလို လုပ္လို႔ရတယ္ဆုိတာဘဲ မွတ္ထားဦးေနာ္။ ကိုယ္က ခုမွ
စေလ႔လာတာဆိုေတာ႔ အေျခခံေလာက္ေတြဘဲ ေလ႔လာေနတာေလ။ ဒီလို variable ေတြကို URL ထဲမွာ
ေဖာ္ျပတဲ႔ နည္းက တကယ္တမ္း ေတာ႔ Security အပိုင္းက စဥ္းစားရင္ တအားကို အားနည္းပါတယ္။
sensitive ျဖစ္တဲ႔ information ေတြကို ခုလိုသာ ျပေပးေနရင္ Security အတြက္ ဘယ္လိုလုပ္
စိတ္ခ်ႏိုင္ရေတာ႔မွာလဲ။ သူ႕ရဲ႕ အားနည္းခ်က္ေလးေတြကို ေလ႔လာၾကည့္ရေအာင္။


       ၁။ ယူဇာအားလံုးက သင္သံုးထားတဲ႔ variables ေတြကို ျမင္ရမယ္။
       ၂။ ယူဇာေတြဟာ URL ထဲက variable ေတြကို ေျပာင္းၿပီးေတာ႔ တစ္ျခား နည္းလမ္းေတြနဲ႔ သင္
မျပခ်င္တဲ႔ information ေတြကို ယူႏုိင္တယ္ ။


       ဘာဘဲျဖစ္ျဖစ္ေပါ႔။   security    ပိုင္း   အားနည္းတယ္ဆိုေပမယ္႔     တစ္ျခား    သံုးလို႔ရတဲ႔
ေနရာေလးေတြလည္း ရွိေသးတယ္ေလ။ ခုလိုမ်ဳိး variable ေတြကို PASS လုပ္ဖုိ႔ PHP မွာ ရွိပါတယ္။
$_GET array ျဖစ္ပါတယ္။ URL မွာ ေပၚမယ္႔ variable name ကို key အျဖစ္ ယူလိုက္မွာပါ။ URL
မွာ variable က id ျဖစ္တယ္ဆုိရင္ $_GET['id'] ျဖစ္ၿပီးေတာ႔ ေနာက္ variable က lang ဆုိရင္ $_
GET['lang'] ေပါ႔။ ဒါဆုိရင္ ေလ႔က်င္႔ခန္း နမူနာေလး လုပ္ၾကည့္ရ ေအာင္ ။ ခုနက ေရးခဲ႔တဲ႔ moviesite.
php ကို နည္းနည္းေလး ျပင္ေရးမယ္ဗ်ာ။

<html>
            <head>
                 <title> My Movie Site - <?php echo $_GET['favmovie'];
?> </title>
            </head >
            <body >
                 <?php
	      	    	    	     //delete	 this	 line:	 defi
                                                	ne('FAVMOVIE',	 'The	 Life	
of Brian');
                       echo 'My favorite movie is ';



                                         rZÑdr pmay
24                                                     PHP        avScg;xpfrsm;
				                           echo $_GET['favmovie'];
		     		                      echo ' <br/> ';
				                           $movierate = 5;
				                           echo 'My movie rating for this movie is: ';
				                           echo $movierate;
			        ?>
		     </body>
	 </html>
ျပင္ၿပီးသြားၿပီလား။ OK. ဒါဆုိရင္ ေနာက္ထပ္ document အသစ္တစ္ခုေရးမယ္။ text editor မွာ new
pageေခၚၿပီးေတာ႔ ေအာက္ပါအတုိင္း ေရးပါ။ ၿပီးရင္ movie1.php ဆိုၿပီး save လုပ္ပါ။

	      <html>
    		         <head>
	      	       	       <title>  Find my Favorite Movie!  </title>
    		         <head>
 		            <body>
	        		            <?php
				                           echo ' <a href="moviesite.php?favmovie=Stripes"> ';
				                           echo 'Click here to see information about my favorite
movie!';
				                           echo ' </a> ';
			                    ?>
    		         </body>
 	     </html>


ၿပီးရင္ browser ကေန movie1.php ကို ေခၚလိုက္ရင္ ေအာက္က ပံု အတိုင္းေပၚလာ ပါမယ္။ ကၽြန္ေတာ္
ဒီစာအုပ္မွာ HTML အေၾကာင္းကို အေသးစိတ္ရွင္း မေနပါဘူး။ PHP ကို ေလ႔လာေနၿပီဆုိေတာ႔ HTML
ကိုလည္း အေတာ္ အသင္႔ နားလည္ ေနၿပီလို႔ ယူဆပါတယ္။




                                        rZÑdr pmay
udkausmf                                                                              25




     ပံုမွာ ျမင္တဲ႔အတုိင္းဘဲ သူက click ပါတဲ႔။ အဲဒိေတာ႔ click လိုက္ေပါ႔။ ဒါဆုိရင္ ေအာက္ကပံုအတုိင္း
ထြက္လာမယ္။




                                        rZÑdr pmay
26                                                        PHP        avScg;xpfrsm;
ပံုမွာျမင္ရတဲ႔အတုိင္းဘဲ $favmovie = TheGyanMoe ျဖစ္သြားတာပါ။ တစ္ခါတည္း browser ရဲ႕ Tab ရဲ႕
title ကိုလည္း ၾကည့္လိုက္ပါဦး My Movie Site - ThaGyanMoe ဆိုၿပီး ျမင္ရမွာပါ။ ဘာျဖစ္လို႔လဲဆုိေတာ႔
title tag မွာ $favmovie ဆိုတဲ႔ variable ကို ေခၚသံုးထားလိုက္လို႔ျဖစ္ပါတယ္။

Special characters in URLs

	      URL မွာ variable ေတြမွာပါတတ္တဲ႔         special character ေတြျဖစ္တဲ႔ space, amper-
sands(&) စတဲ႔ character မ်ား ကို ဒီအတုိင္း ေဖာ္ျပရာမွာ problem ရွိပါတယ္။ ဒီလို ဟာေတြကို PHP
မွာ ေက်ာ္လႊားႏိုင္ပါတယ္။ သူ႕မွာပါတဲ႔ urlencode() ဆိုတဲ႔ function ကို သံုးၿပီး special character
problem ကို ေျဖရွင္းႏိုင္ပါတယ္။ အခု နည္းနည္းေလာက္ ထပ္ေပါင္း ေလ႔က်င္႔ၾကည့္ရေအာင္။ mov-
ie1.php ကို ေအာက္က ကုဒ္ေတြအတုိင္း ထပ္ ျပင္ေရးၾကည့္မယ္ေလ။
	

<html>
  	     	  <head>
  	   	      	    <title>  Find my Favorite Movie!  </title >
    		     </head>
  		         <body>
			                 <?php
				                    //add this line:
	     	    	      	     $myfavmovie = urlencode('Enemy at the
gate');
				                    //change this line:
				                    echo "<a href="moviesite.
php?favmovie=$myfavmovie">";
				                    echo 'Click here to see information about my
favorite movie!';
				                    echo '</a>';
			               ?>
    		     </body >
</html>




                                         rZÑdr pmay
udkausmf                                                                         27
       save လုပ္ၿပီး ျပန္ ဖြင့္ၾကည့္ရေအာင္။ ဒါဆုိရင္ ေအာက္ပါပံုအတုိင္းျမင္ရမယ္။ URL box ထဲကို
ေသခ်ာၾကည့္ပါ။




ဒီပရိုဂရမ္ေလးမွာဆုိရင္ $myfavmovie = Enemy at the gate ဆိုၿပီး ေပးခဲ႔တာပါ။ word ေတြၾကားက
space ေတြကို မရွိေစခ်င္တဲ႔အတြက္ urlencode() ဆိုတဲ႔ function ကို တစ္ခါတည္း တြဲေပးလိုက္တာပါဘဲ။
မခက္ပါဘူး။ ဟုတ္တယ္မလား။ ကဲ ..ေနာက္တစ္ခန္းကို ဆက္ကူး လိုက္ၾကရေအာင္။


Passing variables with SESSIONS


       ကၽြန္ေတာ္ အထက္မွာ ေျပာခဲ႔တဲ႔အတုိင္း variable ကို URL ကေန passing လုပ္တဲ႔အခါမွာ
အေရးမႀကီးတဲ႔ ေဒတာေတြ ၊ saved လုပ္ထားတဲ႔ old information ေတြကို ယူသံုးလိုက္လို႔ ကိုယ္႔
site အတြက္ dangerous အေျခအေနကို မေရာက္ႏိုင္တဲ႔ အေျခအေနေတြမွာ သံုးလို႔ရပါတယ္။
တကယ္လို႔မ်ား    user   တစ္ေယာက္ရဲ႕      personal   data    ေတြကိုသာဆုိရင္    အထက္ပါနည္းနဲ႔
မသံုးသင္႔ပါဘူး။ ကိုယ္႔အေၾကာင္းကို ဘာျဖစ္လို႔ လူတုိင္းကို ေပးသိရမွာလဲ ? မဟုတ္ဘူးလား။ Person-
al data ေတြဆုိတာ username, password, address, email, phone number, credit card number
စတာေတြပါပါတယ္။ အဲဒါေတြကို private အေနနဲ႔ သံုးဖုိ႔ Cookies ကို သံုးရပါတယ္။ ေနာက္ပိုင္းမွာေတာ႔
cookies အေၾကာင္းကို ထပ္ၿပီး ျဖည့္စြက္ေဆြးေႏြးသြားပါမယ္။




                                        rZÑdr pmay
28                                                   PHP        avScg;xpfrsm;
	      what is a session?        Session ဆိုတာ တကယ္ေတာ႔ variable ကို temporary
သတ္မွတ္လိုက္တာဘဲျဖစ္ပါတယ္။ သူ႕ရဲ႕ သက္တမ္းက ဘယ္ေလာက္ခံလဲဆုိေတာ႔ Browser ကို
shutdown ခ်လိုက္တဲ႔အထိပါဘဲ။ browser လည္း ပိတ္ သူလည္း ေပ်ာက္ ပါဘဲ။ Session မွာလည္း
သူ႔ဟာသူ session id ပါပါတယ္။ ဒါမွ ကိုယ္လုပ္လိုက္တဲ႔ (browser ေပၚမွာ) အရာတစ္ခုကို သူက
သူ႔နံပါတ္နဲ႔သူ မွတ္ထားတာျဖစ္ပါတယ္။ PHP program က လိုအပ္တဲ႔အခါမွာ အဲဒိ Session ေတြကို
refer ျပန္လုပ္ပါတယ္။Session ေတြကို URL ထဲမွာ Pass လုပ္လို႔ရသလို cookie နဲ႔လည္း တြဲဖက္ၿပီး
လုပ္လို႔ရပါတယ္။
	      PHP program မွာ session ကို ေခၚသံုးဖုိ႔ session_start() ဆုိတဲ႔ function ေလးကို
ေခၚသံုးလိုက္ယံုပါဘဲ။ ဘယ္နားမွာ ေရးရလဲဆုိရင္ PHP program ရဲ႕ ထိပ္ဆံုးမွာ ေရးရပါတယ္။
တစ္ခုေတာ႔ရွိတယ္။   session   ထဲမွာ   သင္က    ဘယ္     data   ေတြကို   သိမ္းမွာလဲဆုိတာေတာ႔
ပထမဆံုး စဥ္းစားထားဖုိ႔လိုပါတယ္။ အဓိကက ေတာ႔ username and login information
ေတြကို သိမ္းတာမ်ားပါတယ္။ ကဲ ..ေျပာေနၾကာပါတယ္။ ကၽြန္ေတာ္တုိ႔ ပရိုဂရမ္ တစ္ပုဒ္ေလာက္
ခ်ေရးလိုက္မယ္။ movie1.php ကိုဘဲ နည္းနည္း ထပ္ေပါင္းေရးၾကည့္မယ္။ ေအာက္က အတုိင္းေပါ႔ -
<?php
	     session_start();
	     $_SESSION['username'] = 'MgMg12345';
	     $_SESSION['authuser'] = 1;
?>
  <html>
  	     <head>
	     	        <title>  Find my Favorite Movie!  </title >
    	 </head>
    	 <body>
		             <?php
	     	       	      $myfavmovie = urlencode('Enemy at the gate');
			                  echo " <a href="moviesite.
php?favmovie=$myfavmovie"> ";




                                      rZÑdr pmay
udkausmf                                                                  29
                     echo 'Click here to see information about my favorite mov-
ie!';
                     echo ' </a> ';
          ?>
     </body>
</html>


        ေနာက္ၿပီးေတာ႔ moviesite.php ကိုလည္း နည္းနည္းေတာ႔ျပင္ေရးရမယ္ေလ။ ဘာလို႔ဆုိေတာ႔
သူ႔ဆီက information ေတြ ယူရမွာကိုး ။ session သံုးၿပီဆုိေတာ႔ သူက ဒီအတုိင္း မေပးေတာ႔ဘူးေလ။
သတ္မွတ္ထားတဲ႔ data ေတြကို တူမတူ တိုက္စစ္မယ္။ တူရင္ေပးမယ္။ မတူရင္ မေပးဘူးေပါ႔။ အဲဒိလို
စစ္ဖုိ႔အတြက္ moviesite.php ကို နည္းနည္းေလး ျပင္ေရးမယ္ေလ။

<?php
session_start();

//check to see if user has logged in with a valid password
if	($_SESSION['authuser']	!=	1)	{
				echo	'Sorry,	but	you	don't	have	permission	to	view	this	page!';
				exit();
}
?>
  <html>
        <head>
        <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title>
          </head >
          <body>
                 <?php
	       	      	     echo	'Welcome	to	our	site,	';
	       	      	     echo	$_SESSION['username'];
	       	      	     echo	'!	<br/>';
                     echo 'My favorite movie is ';
                     echo $_GET['favmovie'];
                     echo ' <br/> ';
                     $movierate = 5;
                     echo 'My movie rating for this movie is: ';
                     echo $movierate;

                                      rZÑdr pmay
30                                                         PHP        avScg;xpfrsm;
		        ?>
	    </body>
</html>

    Save လုပ္ၿပီးေတာ႔ movie1.php ကို ဖြင္႔ၿပီး click လုပ္လိုက္ရင္ ေအာက္က
ပံုအတိုင္းထြက္လာပါမယ္။




How it works

	         အေရးႀကီးတာကို မေမ႔နဲ႔ေနာ္။ session ကို ေရးမယ္ဆုိရင္ ကိုယ္ေရးမယ္႔ script ရဲ႕
ထိပ္ဆံုးမွာ ေရးရတယ္။ ခု ဒီ ပရိုဂရမ္ မွာဆုိရင္ movie1.php ကေန request လုပ္လာတာကို
moviesite.php ရဲ႕ ထိပ္ဆံုးက session က if နဲ႔ စစ္ပါတယ္။ if ရဲ႕ အလုပ္လုပ္ပံုက
ေအာက္ပါအတုိင္းျဖစ္ပါတယ္။ သူ႕ရဲ႕ condition က if(conditional statement){statement}
ျဖစ္ပါတယ္။ ဥပမာ ေလး တစ္ခု နဲ႔ လုပ္ၾကည့္မယ္ေလ။ အစဆိုေတာ႔ လြယ္လြယ္ကူကူေပါ႔ဗ်ာ။




                                           rZÑdr pmay
udkausmf                                                                           31
        <?php
                if (1+3 ==4){
                echo 'Summation is true.';
                }
        ?>
        အဲဒါကို run လုိက္ရင္ browser ကေန Summation is true ဆိုတာကို ျပမွာပါ။ အလုပ္လုပ္ပံုက
if ဆိုတဲ႔အတိုင္း ျဖစ္လွ်င္ေပါ႔ ဗ်ာ... 1+3==4 ျဖစ္လွ်င္ Summation is true ဆိုတာကို echo နဲ႔ output
ထုတ္ထားတာပါ။ 1+3==5 ဆိုရင္ ဘာမွ ျပမွာမဟုတ္ပါဘူး ။ ဟုတ္မွမဟုတ္တာကိုး။ ဘာျဖစ္လို႔ ==
ႏွစ္ခါသံုးရတာလဲ ဆုိရင္ PHP မွာ သံုးရမယ္႔ Comparison operators ကို ရွင္း ျပပါမယ္။
        Comparison operators
        ==   :Values are equal
        === : Values are identical
        !=   :Values are not equal
        !== :Values are not identical
        <    :value 1 is less than value 2
        >    :value 1 is greater than value 2
        <=   :value 1 is less than or equal to value 2
        >=   :value 1 is greater than or equal to value 2


        ဒီေနရာမွာ ေသခ်ာ မွတ္ထားရမွာက equal ဆိုတာနဲ႔ identical ဆုိတာ မတူပါဘူး။ identical
မွာဆိုရင္ variable ရဲ႕ value ေရာ datatype ေရာ တူပါတယ္။ equal မွာကေတာ႔ value ဘဲတူတာပါ။
အခု moviesite.php မွာ ျပင္ေရးလိုက္တဲ႔ ဟာကို ျပန္ရွင္းပါမယ္။




                                          rZÑdr pmay
32                                                       PHP        avScg;xpfrsm;
	       if($_SESSION['authuser'] !=1) ဆိုတာက movie1.php file ကေန request လုပ္လာတာမွာ
authuser =1 မဟုတ္ဘူးဆုိရင္ ဆိုတဲ႔ အဓိပၸာယ္ရပါတယ္။ လိုရင္းေျပာရရင္ 1 ျဖစ္မွ ရမယ္ဆိုေပါ႔ဗ်ာ။
1 မဟုတ္ဘူးဆိုရင္ {} ကြင္းထဲကဟာကို ဆက္ Run မွာပါ။ အဲဒိမွာ သူက echo သံုးၿပီး သင္က 1
မဟုတ္တဲ႔အတြက္ ဒီ page ကို ၾကည့္ခြင္႔မရွိပါဘူး ဆိုၿပီး output ထုတ္ေပးတာပါ။ ၿပီးရင္ exit() func-
tion သံုးၿပီး ျပန္ထြက္သြားပါတယ္။
	       တကယ္လို႔ 1 ျဖစ္ခဲ႔မယ္ဆုိရင္ က်န္တဲ႔ code ေတြကို ဆက္ run မွာပါ။ အခုက 1 ျဖစ္ေနေတာ႔
ပထမဆံုး welcome to our site လာမယ္။ ေနာက္ၿပီးရင္ echo $_SESSION['username'] ကို
ကၽြန္ေတာ္တုိ႔က MgMg12345 လို႔သတ္မွတ္ခဲ႔တဲ႔အတြက္ MgMg12345 ဆိုၿပီးျပမယ္။ က်န္တာကေတာ႔
ေရွ႕က အတုိင္းဘဲ။
	       If , else if, while , do while, switch and break , For စတဲ႔ statement ေတြကို သူ႔ရဲ႕
သက္ဆုိင္ရာေနရာ ေရာက္မွ ကၽြန္ေတာ္ ရွင္းျပသြားပါမယ္။ Theory နဲ႔ Pratical ကို တစ္ခါတည္း
လုပ္သြားတာေပါ႔။ ဒါမွမဟုတ္ရင္ ခင္ဗ်ား ပ်င္းသြားမွာေပါ႔။




                                          rZÑdr pmay
udkausmf                                                                        33
Passing variables with cookies

        Cookies ေတြမွာ ဘာေတြကို သိမ္းသလဲဆုိရင္ website ကို လာေရာက္တဲ႔သူရဲ႕ computer
information အနည္းငယ္ကို သိမ္းပါတယ္။ Theory အရဆုိရင္ေတာ႔ Cookies ေတြဟာ အသံုးျပဳသူရဲ႕
IP , operating system ေတြကို intercept လုပ္ႏိုင္ပါတယ္။ ဒါေပမယ္႔ cookies ေတြက storing infor-
mation ဘဲလုပ္ပါတယ္။ တစ္ခ်ဳိ႕သူေတြက ေတာ႔ ဒီ cookies technology နဲ႔ အသံုးျပဳသူရဲ႕ browsing
habits ေတြ ကို track လုပ္ပါတယ္။ ၿပီးေတာ႔ ဒီ cookies ေတြကို commonly name directory ထဲမွာ
သိမ္းထားတာျဖစ္တဲ႔အတြက္ hacker ေတြက hack လုပ္ၿပီးေတာ႔ ေသာ္လည္းေကာင္း တစ္ျခားသူက
မိမိကြန္ပ်ဴတာထဲက cookies ေတြကို တစ္နည္းနည္းျဖင္႔လာယူသြားလွ်င္ေသာ္ လည္းေကာင္း သင္႔ရဲ႕
အေရးႀကီးေဒတာေတြ ပါသြားႏိုင္ပါတယ္။ ဒါေၾကာင္႔ တစ္ခ်ဳိ႕သူေတြကေတာ႔ Browser က cook-
ies ကို disable ေပးထားေလ႔ရွိပါတယ္။ ဒီလိုမ်ဳိး ျဖစ္ပ်က္ႏိုင္တာေတြေၾကာင္႔ တကယ္႔ အေရးႀကီး
ေဒတာေတြ (ဥပမာ - Credit card information ) စတာေတြကို ကြန္ပ်ဴတာထဲမွာ သိမ္းဆည္း မထားဖို႔
အႀကံေပးလိုပါတယ္။
        Cookies နဲ႔ပါတ္သတ္ၿပီး ပိုသိခ်င္ရင္ security risk ေတြကို ပို သိခ်င္ရင္ ေအာက္က website
ကို သြားေရာက္ ေလ႔လာႏိုင္ပါတယ္။
        www.w3.org/Security/faq/wwwsf2.html#CLT-Q10
        ဒီလိုဆုိရင္ ဘာျဖစ္လို႔ developer သမားေတြက cookies ကို သံုးေနၾကေသးလဲ။ cook-
ies ကို သံုးျခင္းျဖင္႔ သတ္မွတ္ထားတဲ႔ အခ်ိန္ထိ information ကို သိမ္းထားလို႔ရပါတယ္။ Ses-
sion ကို သာသံုးမယ္ဆုိရင္ Browser ကို ပိတ္လိုက္တာနဲ႔ သူ႕ရဲ႕ life ကလည္း ကုန္ၿပီေလ။ cookies
ကေတာ႔ အဲလို မဟုတ္ပါဘူး။ Session ကိုသာ cookies နဲ႔ တြဲသံုးမယ္ဆုိရင္ browser life ထက္ ပို
ၾကာရွည္ခံေအာင္သံုးႏိုင္ပါတယ္။
        ဟုတ္ၿပီ။ ခု cookie ကို ဘယ္လို သတ္မွတ္မလဲ။ လြယ္ပါတယ္။ setcookie() ေပါ႔။ ဒါလည္း
PHP function တစ္ခုပါဘဲ။ cookie တစ္ခု သတ္မွတ္မယ္ဆုိရင္ ေအာက္က အခ်က္ေတြကို အရင္ဆံုး
စဥ္းစား ဖုိ႔လိုပါတယ္။
        1. Cookie name
        2. Value of the cookie name (eg. username)
        3. Cookie life time (in seconds) UNIX timestamp ေပၚမွာ အေျခခံထားပါတယ္။




                                        rZÑdr pmay
34                                                    PHP      avScg;xpfrsm;
ဒါေပမယ္႔ ခုလို ေရးလို႔ရပါ တယ္။ time()+60*60*24*365 ဒါဆုိရင္ သူ႔ရဲ႕ သက္တမ္းက ၁
ႏွစ္စာျဖစ္ပါတယ္။
       4. Path ( cookie ကို သိမ္းမယ္႔ေနရာ)
       5. Domain ( ဒီ cookie ကို လက္ခံႏိုင္တဲ႔ domain) (ဒီဟာက optional ျဖစ္ပါတယ္။
မသတ္မွတ္လည္းရတယ္)
       6. Cookie မွာ secure connection HTTPS ကို on ေပးထားရမယ္။
       အဲဒိေတာ႔ ဒီလိုပံုစံျဖစ္မွာေပါ႔။
       setcookie ($name[, $value[, $expire[, $path[, $domain[, $secure]]]]])


       ခုလည္း $_COOKIE['cookiename'] ကို သံုးမွာပါဘဲ။ ခု လုပ္မယ္႔ ပရိုဂရမ္မွာဆုိရင္
MgMg12345 ဆုိတဲ႔ user ဟာ ဒီ site ကို လာတုိင္း သူ႔ရဲ႕ username ကို type လုပ္စရာမလိုဘဲ
ေအာ္တို ျဖည့္ေပးမွာျဖစ္ပါတယ္။ movie1.php file ကိုဘဲ နည္းနည္းေလး ထပ္ ျပင္ ေရးၾကည့္တာေပါ႔။
<?php
               setcookie('username', 'MgMg', time() + 60);
               session_start();
               //delete this line: $_SESSION['username'] = 'MgMg12345';
               $_SESSION['authuser'] = 1;
?>
 <html>
       <head>
       <title> Find my Favorite Movie! </title>
         </head>
       <body>
                <?php
                        $myfavmovie = urlencode('Enemy at the gate');
                        echo " <a href="moviesite.php?favmovie=$myfavmovie"> ";
                        echo 'Click here to see information about my favorite movie!';
                        echo ' </a> ';
               ?>
       </body>
</html>



                                         rZÑdr pmay
udkausmf                                                                       35
        ၿပီးေတာ႔ ထံုးစံအတိုင္း moviesite.php file ကို နည္းနည္းေလး ထပ္ျပင္ေရးမယ္
<?php
session_start();

//check to see if user has logged in with a valid password
if ($_SESSION['authuser'] != 1) {
    echo 'Sorry, but you don't have permission to view this page!';
    exit();
}
?>
 <html>
          <head>
                   <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title>
          </head >
          <body >
                   <?php
                           echo 'Welcome to our site, ';
                           echo $_COOKIE['username'];
                           echo '! <br/> ';
                           echo 'My favorite movie is ';
                           echo $_GET['favmovie'];
                           echo ' <br/> ';
                           $movierate=5;
                           echo 'My movie rating for this movie is: ';
                           echo $movierate;
?>
  </body >
 </html>
          ဒီလိုဆိုရင္ ေအာက္ပါပံုေတြအတုိင္းျမင္ရမွာပါ။




                                        rZÑdr pmay
36                                                     PHP   avScg;xpfrsm;




	       အထက္က ပရိုဂရမ္ဟာ cookies life time ကို 60 seconds ဘဲ သတ္မွတ္ထားတာပါ။
ကိုယ္႔ဟာကို စိတ္ၾကိဳက္ ျပင္ၾကည့္ၿပီးေလ႔က်င္႔ၾကည့္ပါ။




                                          rZÑdr pmay
udkausmf                                                                        37
Passing information with Forms


        Form ပံုစံကို နည္းနည္းေလာက္ ေလ႔လာၾကည့္ရေအာင္ ။ သူ႔ကို စတင္ေတာ႔မယ္ဆုိရင္
        (၁) <form> နဲ႔ စတင္ၿပီး action and method ဆိုတဲ႔ attribute ပါပါတယ္။ action အေနနဲ႔
URL တစ္ခုကို                          ေပးႏိုင္ၿပီး method အေနနဲ႔ GET or POST တစ္ခုခုကို သံုး
ႏိုင္ပါတယ္။
        (၂) input fields မ်ားပါပါတယ္။ အသံုးမ်ားတာေတြကေတာ႔
               TEXT: min 2 characters to 2000 characters အထိ သံုးႏိုင္ပါတယ္။ ဒိထက္
ပိုမ်ားမ်ားသံုးခ်င္ရင္ေတာ႔ textarea ဆိုတဲ႔ ဟာကို သံုးရပါမယ္။
               Check box : user ေတြကို Choice လုပ္ဖုိ႔ရန္အတြက္ျဖစ္ပါတယ္။ choice ကို
တစ္ခုထက္မက ေရြးခ်ယ္ႏိုင္မွာျဖစ္ပါတယ္။
               Radio: radio button ကလည္း list ထဲကေန ေရြးခ်ယ္ဖို႔ဘဲျဖစ္ပါတယ္။ ဒါေပမယ္႔
သူက တစ္ခုဘဲ ေရြးလို႔ရမွာျဖစ္ပါတယ္။
               Select: ဒီေကာင္႔ကိုေတာ႔ ေတာ္ေတာ္မ်ားမ်ားက Drop down box အျဖစ္သိၾကပါတယ္။
               Passwords:       သူ႔ကိုေတာ႔     user     က      ဘာရိုက္တယ္ဆုိတာကို       Hide
လုပ္ထားရမွာျဖစ္ပါတယ္။


Using forms to get information


        movie1.php file ကိုဘဲ နည္းနည္းေလး ထပ္ၿပီး ျပင္ေရးၾကည့္မယ္ေလ။ ျပင္ရင္းျပင္ရင္း
ေတာ္ေတာ္ေတာင္ မ်ားလာၿပီေနာ္။ ကၽြန္ေတာ္ေျပာခ်င္တာက မ်ားလာၿပီဆုိေတာ႔ Comment
ေလးေတြ ေသခ်ာေရးဖုိ႔ ပါ။ ေအာက္မွာ ျပထားတဲ႔ Code ေလးေတြကို ေသခ်ာ ေလ႔လာၾကည့္ပါ။




                                         rZÑdr pmay
38                                                        PHP        avScg;xpfrsm;
<?php
	         //delete this line: setcookie('username', 'MgMg', time() + 60);
	         session_start();
	         $_SESSION['username'] = $_POST['user'];
	         $_SESSION['userpass'] = $_POST['pass'];
	         $_SESSION['authuser'] = 0;

	         //Check username and password information
	         if (($_SESSION['username'] == 'MgMg') and
     	     ($_SESSION['userpass'] == '12345')) {
      	   $_SESSION['authuser'] = 1;
	         } else {
 	           echo 'Sorry, but you don't have permission to view this page!';
     	     exit();
	         }
?>
<html>
   <head >
    <title> Find my Favorite Movie! </title >
   </head >
   <body>
	          <?php
		                $myfavmovie = urlencode('Enemy at the gate');
		                echo " <a href="moviesite.php?favmovie=$myfavmovie"> ";
		                echo "Click here to see information about my favorite movie!";
		                echo " </a> ";
	         ?>
   </body>
  </html>
  ျပီးသြားရင္ moviesite.php ကို နည္းနည္း ထပ္ျပင္ေရးပါဦးမယ္။
	         <?php
		                session_start();
               //check to see if user has logged in with a valid password
		                if ($_SESSION['authuser'] !=1 ) {
   		              echo 'Sorry, but you don't have permission to view this page!';
    		             exit();

                                          rZÑdr pmay
udkausmf                                                                   39
              }
       ?>
<html>
<head>
 <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title>
</head>
<body>
        <?php
              echo 'Welcome to our site, ';
              //delete this line: echo $_COOKIE['username'];
              echo $_SESSION['username'];
              echo '!<br/>';
              echo 'My favorite movie is ';
              echo $_GET['favmovie'];
              echo ' <br/> ';
              $movierate = 5;
              echo 'My movie rating for this movie is: ';
              echo $movierate;
       ?>
</body>
</html>
ၿပီးသြားရင္ Login form တစ္ခု တည္ေဆာက္ပါမယ္။ text editor မွာ new document လုပ္ပါ။ File
name ကို login.php လုိ႔ နာမည္ေပးပါမယ္။
      <?php
      session_unset();
      ?>
       <html>
               <head>
                        <title>Please Log In</title>
               </head>
               <body>
                        <form method="post" action="movie1.php">
                               <p> Enter your username:
                               <input type="text" name="user"/>
                               </p>
                               <p> Enter your password:

                                      rZÑdr pmay
40                                                      PHP        avScg;xpfrsm;
          			            <input type="password" name="pass"/>
          			            </p>
          			            <p>
          			            <input type="submit" name="submit" value="Submit"/>
          			            </p>
          		       </form>
        	    </body>
        </html>
ၿပီးသြားရင္ login.php file ကို ေခၚၾကည့္ပါမယ္။ ေအာက္ကပံုအတိုင္း ျမင္ရမွာပါ။




username ေနရာမွာ mgmg12345 password ကို 12345 ဆိုၿပီး၀င္ၾကည့္ပါ။
၀င္လုိ႔ရမွာမဟုတ္ပါဘူး။ username မွားေနတဲ႔အတြက္ ျဖစ္ပါတယ္။ Authorization scripts
အလုပ္လုပ္တယ္ေပါ႔ဗ်ာ။



                                        rZÑdr pmay
udkausmf                                                                            41




အခု login name "MgMg" and password "12345" နဲ႔၀င္ၾကည့္ပါ။ ၀င္လုိ႔ရသြားတာကို
ေတြ႕ရပါမယ္။


How it works
        ပထမဆံုးအလုပ္လုပ္တာက login.php ေလ ။ ဟုတ္တယ္မလား။ သူ႔ထဲမွာ ဘယ္ page
ကဘဲလာတဲ႔ session ေတြထဲက variables ေတြကို unset လုပ္လိုက္ပါတယ္။ အဲဒါကို session_un-
set() ဆိုတဲ႔ function နဲ႔ လုပ္လိုက္တာပါ။ ၿပီးရင္ variables ၂ ခုျဖစ္တဲ႔ username and password
(user and password respectively) ကို ေမးပါတယ္။ ၿပီးရင္ ရလာတဲ႔ variables ၂ ခုကို movie1.
php ကို ပို႔ေပးပါတယ္။ အဲလို ပို႔တဲ႔ေနရာမွာ POST method ကို သံုးၿပီးပို႔ပါတယ္။ အဲဒါေၾကာင္႔ movie1.
php မွာ $_POST syntax ကို ေတြ႕ရတာျဖစ္ပါတယ္။ ခု ဒီေလာက္ သိရင္ ရပါၿပီ။ ေနာက္ အခန္းေတြမွာ
လက္ေတြ႕ေလ႔က်င္႔ခန္းေတြ လုပ္ရင္းနဲ႔ ပိုၿပီးနားလည္လာပါမယ္။
        movie1.php fileက တကယ္ေတာ႔ ေအာက္ပါလုပ္ငန္းစဥ္မ်ားကို လုပ္ေဆာင္သြားပါတယ္ -
        (၁) Session ကို စတင္ေပးတယ္။ default အားျဖင္႔ login က ရလာတဲ႔ variables ေတြကို
register            လုပ္ေပးတယ္။
        (၂) Usernameand password ကို accept လုပ္ႏိုင္လား မလုပ္ႏိုင္ဘူးလား စစ္ေပးတယ္။
        (၃) တကယ္လို႔ username and password ၂ ခုလံုးကို လက္ခံတယ္ဆုိရင္ autheruser ကို 1
အျဖစ္ သတ္မွတ္ ေပးၿပီးေတာ႔ other pages ေတြကို access ေပးပါတယ္။




                                          rZÑdr pmay
42                                                         PHP         avScg;xpfrsm;
(like moviesite.php)
	       (၄) တကယ္လို႔ username and password က မွားတယ္ဆုိရင္ error message ကို
ျပေပးပါတယ္။


Using if / else arguments


	       ခု if/elsearguments ကိုရွင္းပါမယ္။ ေရွ႕မွာတုန္းကေတာ႔ နည္းနည္း ရွင္းခဲ႔ေသး တယ္ေလ။
မွတ္မိမယ္ထင္တယ္။ if ကို ဘာျဖစ္လို႔ သံုးရတာလဲ။ ဟုတ္ကဲ႔ ဒီလိုပါ။ ကၽြန္ေတာ္တုိ႔ဟာ ခုဆုိရင္ val-
ues အမ်ဳိးမ်ဳိးကို variables ေတြနဲ႔ ျပႏိုင္လာၿပီျဖစ္ပါတယ္။ တစ္ခ်ဳိ႕ variable ေတြကို specific action
လုပ္ခ်င္တဲ႔အခါမ်ဳိးမွာ if ကို သံုးပါတယ္။ ဥပမာ $password ဆိုတဲ႔ variable ေပါ႔။ user ကို password
ေတာင္းမယ္။ user က ထည့္မယ္။ မွန္ရင္ site ထဲကို ၀င္ခြင္႔ေပးမယ္။ မမွန္ဘူးဆုိရင္ user ကို kick out
ဒါမွမဟုတ္ site ထဲကို ၀င္ခြင္႔မေပးဘူး။ if ကို else ထပ္ေပါင္း ေပးလိုက္မယ္ဆုိရင္ the whole range
of possible actions ေတြကို ထိန္းႏိုင္မွာပါ။
	
Using if statements
	
	      Basic if statement က ေအာက္ေဖာ္ျပပါ အတုိင္းျဖစ္ပါတယ္
	       if (condition) action to be taken if true.
	       ဥပမာ အေနနဲ႔ -
	       if ($stockmarket >1000) echo 'Wharr.... Time to Party';
	       တကယ္လို႔ simple statement ထက္ ပို ရွည္တယ္ဆုိရင္ေတာ႔ {} ကို သံုးရမွာပါ။ ဒီ အဖြင္႔
အပိတ္ေတြကို ေသခ်ာ ဂရုစိုက္ဖုိ႔လိုပါတယ္။ ေအာက္ေဖာ္ျပပါ နမူနာကို ၾကည့္ပါ။
	   if ($stockmarket > 10000) {
  		        echo 'Wharr .....Time to Party!';
  		        $mood = 'happy';
  		        $retirement = 'potentially obtainable';
	   }




                                              rZÑdr pmay
udkausmf                                                                        43
       အခု ကၽြန္ေတာ္တုိ႔ လက္ေတြ႕ေလ႔က်င္႔ဖုိ႔ လုပ္ပါမယ္။ text editor ကိုဖြင္႔ပါ။ new document
လုပ္ပါ။ date.php လို႔ နာမည္ေပးပါ။ ၿပီးရင္ ေအာက္က code ေတြအတုိင္း လိုက္ေရးၾကည့္ပါ။

<html>
 <head>
 <title> How many days in this month? </title>
 </head>
 <body>
        <?php
              date_default_timezone_set('Asia/Yangon');
              $month = date('n');
              if ($month == 1) { echo '31'; }
              if ($month == 2) { echo '28 (unless it's a leap year)'; }
              if ($month == 3) { echo '31'; }
              if ($month == 4) { echo '30'; }
              if ($month == 5) { echo '31'; }
              if ($month == 6) { echo '30'; }
              if ($month == 7) { echo '31'; }
              if ($month == 8) { echo '31'; }
              if ($month == 9) { echo '30'; }
              if ($month == 10) { echo '31'; }
              if ($month == 11) { echo '30'; }
              if ($month == 12) { echo '31'; }
       ?>
 </body>
</html>




                                        rZÑdr pmay
44                                                      PHP        avScg;xpfrsm;
	    ကၽြန္ေတာ္ ဒီစာအုပ္ေရးေနတဲ႔ အခ်ိန္က စက္တင္ဘာလ ျဖစ္တဲ႔အတြက္ 30 လို႔
ျပေနတာပါ။

How it works
	      အရင္ဆံုးdate_default_timezone_set ဆိုတဲ႔ date function တစ္ခု နဲ႔ ကိုယ္ေရာက္ရွိေနတဲ႔
ေဒသေပၚမူတည္ၿပီး time zone သတ္မွတ္တာပါ။ အေမရိကား နယူးေယာက္ မွာဆုိရင္ ('America/
New_York') လို႔ သတ္မွတ္ရမွာပါ။ ကၽြန္ေတာ္တုိ႔ ေရးလိုက္တဲ႔ script က $month ဆိုတဲ႔ variable ကို
ယူပါတယ္။ ၿပီးေတာ႔ PHP date function ေတြထဲက တစ္ခုျဖစ္တဲ႔ date('n') ဆိုတဲ႔ value နဲ႔ assign
လုပ္ေပးလို္က္ပါတယ္။ ဒီ script က ဆာဗာ ရဲ႕ အခ်ိန္ကို ၾကည့္ပါတယ္။ ဒီေနရာမွာ တစ္ခု ေျပာခ်င္တာက
date function ကိုက 1 for january , 2 for february စသျဖင္႔ သိပါတယ္။ ေတာ္ေနၾကာ ဘယ္က
ဘယ္လို သိတာလဲ ဦးေဏွာက္စားေနမွာစိုးလို႔ပါ။ date function ကိုလည္း ေနာက္ပိုင္း အခန္းေတြမွာ
အက်ယ္တ၀န္႔ ရွင္းပါဦးမယ္။
	      ဒီ script မွာ if statement သံုးၿပီး မွန္တဲ႔ အထိ စစ္ပါတယ္။ ပထမဆံုး if statement က False
ျဖစ္သြားတယ္ဆုိရင္ေနာက္ ထပ္ statement တစ္ခုကို ခ်က္ျခင္းစစ္ပါတယ္။ ဒီလိုနဲ႔ True ျဖစ္တဲ႔အထိ
စစ္ပါတယ္။

	      Using if and else together
	      သူ႕ရဲ႕ပံုစံေလးကေတာ႔ ေအာက္ပါအတုိင္းျဖစ္ပါတယ္။ အက်ယ္တ၀န္႔ေတာ႔ မရွင္းေတာ႔ဘူးေလ။
တစ္ခု မဟုတ္ရင္ တစ္ခု ဆုိတဲ႔ အဓိပၸာယ္ရပါတယ္။
	
	 <?php
		      $test = 5;
		      if($test < 15) {
			             echo 'The condition was met';
		      } else {
			             echo 'The condition was not met';
		      }	
	 ?>



                                        rZÑdr pmay
udkausmf                                                                     45
       အထက္က ပရိုဂရမ္ေလးကို ၾကည့္မယ္ဆုိရင္ $test ဆိုတဲ႔ variable တန္ဖုိးကို 5 လို႔
သတ္မွတ္လိုက္တယ္။ ၿပီးေတာ႔ if statement နဲ႔ စစ္ၾကည့္လိုက္တယ္။ စစ္ၾကည့္တယ္ဆိုတာ ကိုယ္
output လုပ္ခ်င္တဲ႔ data အတြက္ ျဖစ္ပါတယ္။ $test က 15 ထက္ငယ္တယ္ဆုိရင္ The condition
was met ကို ထုတ္ေပးမွာပါ။ မငယ္ဘူးဆုိရင္ေတာ႔ The condition was not met ဆိုတဲ႔ စာေၾကာင္းကို
ထုတ္ေပးမွာပါ။ $test = 20 လို႔သာေပးခဲ႔မယ္ဆုိရင္ ဒုတိယ output ကို ထုတ္ေပးမွာပါ။
       တကယ္လို႔ ကုိယ္ေပးခ်င္တဲ႔ message က အေျခအေန ၂ ခုထက္ပိုရင္ ဘယ္လိုလုပ္မလဲ ။
ရပါတယ္။ အဲဒိအခါမွာ if ရယ္ else ရယ္ၾကားမွာ else if ကို ထည့္သြင္း အသံုးျပဳႏိုင္ပါေသးတယ္။
ေအာက္က နမူနာေလးကို ေလ႔လာၾကည့္ရေအာင္။

       <?php
               $age = 20;
               if($age < 18) {
                         echo "Not old enough to vote or drink! <br />";
               } else if ($age < 21) {
                         echo "Old enough to vote, but not to drink. <br />";
               } else { // If we get here, $age is >= 21
                         echo "Old enough to vote and drink! <br />";
               }
       ?>
       အေပၚက code ကိုေလ႔လာၾကည့္ရင္ အသက္ ၁၈ ႏွစ္ေအာက္ဆုိရင္ vote or drink ၂ ခုလံုး
လုပ္လို႔မရဘူး။ တကယ္လို႔ ၂၁ ႏွစ္ေအာက္ဆုိရင္ေတာ႔ ( ၁၈ ႏွစ္ နဲ႔ ၂၁ ႏွစ္ၾကားျဖစ္သြားတာေပါ႔)
ေသာက္လုိ႔မရဘူး။ ေအာက္ဆံုး တစ္ခုက ေတာ႔ ၂ ခုလံုးလုပ္လုိ႔ရၿပီေပါ႔။ $age=20 ဆိုတဲ႔ ေနရာမွာ
အသက္ အမ်ဳိးမ်ဳိးကို ေျပာင္းလဲ ေလ႔က်င္႔ၾကည့္ပါ။




                                         rZÑdr pmay
46                                                        PHP   avScg;xpfrsm;
While and do-while
	      while loop က ဘယ္လို လုပ္ေပးလဲဆုိရင္ code block တစ္ခုကို True မျဖစ္မခ်င္း repeat
လုပ္ေပးပါတယ္။ နမူနာေလးနဲ႔တြဲေလ႔လာလိုက္ရင္ ပိုနားလည္သြားမွာပါ။
	       <?php
    		        $i = 0;
    	   	     while($i<3) {
      		      echo "Count is at $i. <br />";
       		     ++$i;
    		        }
	       ?>
	      အထက္ကပံုစံမွာဆုိရင္ ကၽြန္ေတာ္တုိ႔က counter variable $i ကို သံုးထားပါတယ္။ သူ႕ရဲ႕
ကနဦးတန္ဖုိးကို သုည 0 ေပးထားလိုက္ပါတယ္။ ေနာက္ၿပီးေတာ႔ while loop ထဲထည့္ သံုးလိုက္ပါတယ္။
ဘယ္ အေျခအေနထိ ဒီကုဒ္ ကို Run မွာလဲဆုိေတာ႔ <3 ထိ ပါ။ ဘယ္က စမွာလဲဆုိေတာ႔ သုည ကပါ။
while နဲ႔စစ္မယ္။ ပထမဆံုးက သုည ..အုိေက မွန္တယ္ ဘာျဖစ္လို႔လဲဆုိေတာ႔ 3 ထက္ငယ္တယ္ေလ။
ဒီေတာ႔ ပထမဆံုး output အေနနဲ႔ Count is at 0. ျဖစ္မယ္။ ဒုတိယအေနနဲ႔ 1 တတိယအေနနဲ႔ 2
အထိမွန္တယ္။ စတုတၳအေနနဲ႔ 3 ၾကေတာ႔ မမွန္ေတာ႔ဘူး။ ဘာျဖစ္လုိ႔လဲဆိုေတာ႔ <3 ဆိုတာ 3 နဲ႔
ညီလို႔မရဘူး။ ငယ္ကိုငယ္ရမွာ။ ဒီလိုမ်ဳိး ပထမက 0 ဒုတိယက 1 တတိယက 2 ဆိုတာ ဘယ္လို လုပ္
ကြန္ပ်ဴတာက သိလဲ။ ဟုတ္ကဲ႔... ++$i ဆိုတဲ႔ဟာနဲ႔ ေဖာ္ျပတာပါ။ ထြက္လာတဲ႔ တန္ဖုိးကုိ 1 ေပါင္း
ေပးတာပါ။
	      ဒီ script ကို run လိုက္ရင္ Browser မွာ ဒီလို ေပၚမွာပါ။
	

	      Count is at 0.
	      Count is at 1.
	      Count is at 2
	
	      မွတ္ခ်က္။ သင္႔ အေနနဲ႔ မွတ္ထားရမွာက condition က မကိုက္ညီႏိုင္ဘူးဆုိရင္ loop က ex-
cute လုပ္ေပးမွာ 	       မဟုတ္ပါဘူး။ $i=4 ဆိုရင္ ဘာ output မွ ထြက္လာမွာမဟုတ္ပါဘူး။




                                          rZÑdr pmay
udkausmf                                                                      47
       do-while loop

       <?php
	      	     $i=10;
	      	     do{
                   echo "The count is at $i.";
                   ++$i;
	      	     }while(i<5);
       ?>


       ဒီပံုစံမွာဆုိရင္ do ဆုိေတာ႔ လုပ္ပါေပါ႔။ ဘာလုပ္ခိုင္းလဲဆုိရင္ output အေနနဲ႔ $i value
ကို ထုတ္ခိုင္းတယ္။ ၿပီးေတာ႔ while loop ကို ဆက္ဆင္းတယ္။ အဲဒိမွာၾကေတာ႔       ဘာ output မွ
မထြက္ေတာ႔ဘူးေလ။ initial value ကိုက 10 ျဖစ္ေနၿပီ။ while မွာေပးထားတဲ႔ condition က < 5
ဆိုေတာ႔ ဘာ မွ ထြက္လာမွာမဟုတ္ဘူး။ Output အေနနဲ႔ The count is 10. ဆိုၿပီး ေပၚလာမွာပါ။

FOR loop


       for loop ဆိုတာ PHP program ရဲ႕ အသံုးမ်ားဆံုး statement ေတြထဲက တစ္ခု
အပါ၀င္ျဖစ္ပါတယ္။ သူ႔ အေနနဲ႔ expression ၃ ခု ကို လက္ခံႏိုင္ပါတယ္။ Expression 1 အေနနဲ႔ loop
ရဲ႕ အစ တန္ဖုိးကို ေဖာ္ျပတာျဖစ္ၿပီး Expression 2 အေနနဲ႔ကေတာ႔ expression 1 အေပၚအေျခခံကာ
iteration method သံုးၿပီး တြက္ခ်က္မွာ ျဖစ္ပါတယ္။ True value ေတြကိုဘဲ တြက္မွာျဖစ္ၿပီး False
ျဖစ္သြားတဲ႔အခါမွာ ရပ္သြားမွာျဖစ္ပါတယ္။ Expression 3 အေနနဲ႔ကေတာ႔ iteration တစ္ခုစီရဲ႕ end
of iteration ျဖစ္ပါတယ္။ ဒီလိုေျပာေနေတာ႔ နည္းနည္း ရႈပ္သြားသလို ခံစားရမယ္။ မရႈပ္ဘူးေနာ္။
ေအာက္က နမူနာပံုစံေလးကိုၾကည့္လိုက္။ လြယ္မွလြယ္။ ေျပာဖုိ႔က်န္သြားတယ္။ Expression တစ္ခုစီမွာ
အစိတ္အပိုင္း တစ္ခု ထက္မက ပါႏိုင္ပါတယ္။ ပါလာခဲ႔ရင္ comma (,) နဲ႔ ခံေပးရပါမယ္။ Expression
တစ္ခုနဲ႔တစ္ခုၾကားမွာေတာ႔ semicolon (;) နဲ႔ ခံေရးေပးရပါတယ္။




                                       rZÑdr pmay
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)
Php (myanmar)

Más contenido relacionado

La actualidad más candente

Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservicesAnil Allewar
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page ApplicationKMS Technology
 
Joomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPTJoomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPTPinky Mondal
 
Authentication & Authorization in ASPdotNet MVC
Authentication & Authorization in ASPdotNet MVCAuthentication & Authorization in ASPdotNet MVC
Authentication & Authorization in ASPdotNet MVCMindfire Solutions
 
Alice Phieu - WordPress For Beginners
Alice Phieu - WordPress For BeginnersAlice Phieu - WordPress For Beginners
Alice Phieu - WordPress For BeginnersAlice Phieu
 
Web development tool
Web development toolWeb development tool
Web development toolDeep Bhavsar
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerSmartBear
 
Introduction à la sécurité des WebServices
Introduction à la sécurité des WebServicesIntroduction à la sécurité des WebServices
Introduction à la sécurité des WebServicesConFoo
 
CNIT 129S: 12: Attacking Users: Cross-Site Scripting (Part 1 of 2)
CNIT 129S: 12: Attacking Users: Cross-Site Scripting (Part 1 of 2)CNIT 129S: 12: Attacking Users: Cross-Site Scripting (Part 1 of 2)
CNIT 129S: 12: Attacking Users: Cross-Site Scripting (Part 1 of 2)Sam Bowne
 
Web Hacking With Burp Suite 101
Web Hacking With Burp Suite 101Web Hacking With Burp Suite 101
Web Hacking With Burp Suite 101Zack Meyers
 
Privilege escalation from 1 to 0 Workshop
Privilege escalation from 1 to 0 Workshop Privilege escalation from 1 to 0 Workshop
Privilege escalation from 1 to 0 Workshop Hossam .M Hamed
 
Introduction To WordPress
Introduction To WordPressIntroduction To WordPress
Introduction To WordPressCraig Bailey
 
04. xss and encoding
04.  xss and encoding04.  xss and encoding
04. xss and encodingEoin Keary
 

La actualidad más candente (20)

Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
 
Joomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPTJoomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPT
 
Web server
Web serverWeb server
Web server
 
Authentication & Authorization in ASPdotNet MVC
Authentication & Authorization in ASPdotNet MVCAuthentication & Authorization in ASPdotNet MVC
Authentication & Authorization in ASPdotNet MVC
 
Alice Phieu - WordPress For Beginners
Alice Phieu - WordPress For BeginnersAlice Phieu - WordPress For Beginners
Alice Phieu - WordPress For Beginners
 
Web development tool
Web development toolWeb development tool
Web development tool
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
An Introduction to Drupal
An Introduction to DrupalAn Introduction to Drupal
An Introduction to Drupal
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of Swagger
 
Introduction à la sécurité des WebServices
Introduction à la sécurité des WebServicesIntroduction à la sécurité des WebServices
Introduction à la sécurité des WebServices
 
Laravel Tutorial PPT
Laravel Tutorial PPTLaravel Tutorial PPT
Laravel Tutorial PPT
 
Dive in burpsuite
Dive in burpsuiteDive in burpsuite
Dive in burpsuite
 
CNIT 129S: 12: Attacking Users: Cross-Site Scripting (Part 1 of 2)
CNIT 129S: 12: Attacking Users: Cross-Site Scripting (Part 1 of 2)CNIT 129S: 12: Attacking Users: Cross-Site Scripting (Part 1 of 2)
CNIT 129S: 12: Attacking Users: Cross-Site Scripting (Part 1 of 2)
 
Web Hacking With Burp Suite 101
Web Hacking With Burp Suite 101Web Hacking With Burp Suite 101
Web Hacking With Burp Suite 101
 
Privilege escalation from 1 to 0 Workshop
Privilege escalation from 1 to 0 Workshop Privilege escalation from 1 to 0 Workshop
Privilege escalation from 1 to 0 Workshop
 
Introduction To WordPress
Introduction To WordPressIntroduction To WordPress
Introduction To WordPress
 
04. xss and encoding
04.  xss and encoding04.  xss and encoding
04. xss and encoding
 
OWASP TOP 10 VULNERABILITIS
OWASP TOP 10 VULNERABILITISOWASP TOP 10 VULNERABILITIS
OWASP TOP 10 VULNERABILITIS
 
Wordpress ppt
Wordpress pptWordpress ppt
Wordpress ppt
 

Php (myanmar)

  • 1. Chapter 1 Configuring Your Installation Introduction Great website ေတြကို creat လုပ္ေပးႏိုင္တဲ႔ technologies ေတြက အမ်ားႀကီးရွိပါတယ္။ အဲဒိထဲကမွ သင္ဟာ Apache/MySQL/PHP (တစ္ခါတစ္ရံ AMP လုိ႔သံုးႏံႈးပါတယ္) ကို ေရြးခ်ယ္ၿ ပီးေလ႔လာၾကမွာျဖစ္ပါတယ္။ သင္႔အေနနဲ႔ အရင္ကတည္းက မေလ႔လာဖူးတာျဖစ္ျဖစ္ နည္းနည္းပ ါးပါးေလ႔လာဖူးရင္ျဖစ္ျဖစ္ ဒီစာအုပ္ကို ဖတ္ရႈႏိုင္ပါတယ္။ Apache, MySQL, PHP ဆုိတဲ႔ ၃ ခုလံုးဟာ တစ္ပိုင္းျခင္းစီျဖစ္ျဖစ္ သံုးခုတြဲျဖစ္ျဖစ္ ေတာ္ေတာ္ေလးကို complex ျဖစ္ပါတယ္။ ယခုစာအုပ္ထဲမွာ အဲဒိ ၃ ခုလံုးနဲ႔သက္ဆုိင္တဲ႔ အေၾကာင္းအရာအားလံုးရဲ႕ details ကို ေဖာ္ျပႏိုင္ဖို႔ဆုိတာ ေတာ္ေတာ္ေလးကို မလြယ္ကူပါဘူး။ မျဖစ္ႏိုင္ပါဘူး။ ဒီစာအုပ္ရဲ႕ အဓိက ရည္ရြယ္ခ်က္က ခုနက ေျပာခဲ႔တဲ႔ AMP တစ္ခုျခင္းစီကို အေျခခံကေန နားလည္လြယ္ေအာင္ ရည္ရြယ္ၿပီးေရးထားတာပါ။ တစ္ခ်ဳိ႕ေနရာေတြမွာ coding အားလံုးကို အေသးစိတ္လိုက္မရွင္းထားတာက ေရွ႕သင္ခန္းစာမွာ ရွင္းထားခဲ႔ၿပီးရင္ ေနာက္သင္ ခန္းစာမွာထပ္မရွင္းေတာ႔ပါဘူး။ အဓိက ရည္ရြယ္ခ်က္ကို focus လုပ္ေနတာကေန ေသြဖီသြားမွာစိုးလို႔ပါ။ ေနာက္တစ္ခုက ဒီစာအုပ္ကို ဖတ္မယ္ဆုိရင္ စာဖတ္သူဟာ HTML, CSS ကို နားလည္ ထားသူ သို႔မဟုတ္ တီးမိေခါက္မိရွိထားသူျဖစ္ဖုိ႔လိုပါတယ္။ HTML နဲ႔ CSS နဲ႔ပါတ္သတ္တာေတြကို လံုး၀ ထည့္မရွင္းထားပါဘူး။ တစ္ျခား ေနာက္ထပ္ Program တစ္ခုခုကို လည္း သင္ မသိထားရင္ ရပါတယ္။ သိထားတဲ႔သူေတြကေတာ႔ programming concept ရတာေပါ႔။ ဆိုလိုတာကေတာ႔ APACHE/MySQL/ PHP newbie ေတြအတြက္ ရည္ရြယ္ပါတယ္။ တကယ္လို႔မ်ား ကၽြန္ေတာ္ intermediate level အတြက္ စာအုပ္ ထုတ္ျဖစ္ခဲ႔မယ္ဆုိရင္ အဲဒိစာအုပ္မွာ ေအာက္ပါအခန္းမ်ား ပါ၀င္လာမွာျဖစ္ပါတယ္ - 1. Image upload 2. Create thumbnails 3. Handling and avoiding errors 4. Validating user input အခု စာအုပ္မွာ အဓိက ပါတာေတြကေတာ႔ PHP ကို စတင္ဖုိ႔အတြက္ မိမိစက္ထဲမွာ web serv- er တစ္ခု တည္ေဆာက္တာနဲ႔ က်န္တဲ႔အပိုင္းကေတာ႔ PHP/MySQL အဓိက ျဖစ္ပါတယ္။ အခုစာအုပ္ကို သင္က ဆံုးခန္းတုိင္ေအာင္ ဖတ္ၿပီးၿပီဆုိပါက သင္႔အေနျဖင္႔ movie review dynamic website တစ္ခုကို အေျခခံက်က် ဖန္တီးႏိုင္မွာျဖစ္ပါတယ္။ ဘာေတြပါလဲဆုိရင္ movie name ေတြပါမယ္။ အဲဒိ movie တစ္ခုျခင္းစီရဲ႕ details ေတြပါမယ္။ user ေတြရဲ႕ comments ေတြပါမယ္။ အဲဒိ comments ေတြနဲ႔အတူ movie ratings ေတြပါ ၾကယ္ေလးေတြနဲ႔ ျပတတ္လာမယ္။ ၿပီးရင္ ေနာက္ထပ္ movie အသစ္ေတြ ထပ္ေပါင္းထည့္ႏိုင္မယ္။ ရွိၿပီးသားဟာေတြကို Edit လုပ္ႏိုင္မယ္။ delete လုပ္ႏိုင္မယ္။ အဲဒါေတြ အားလံုးအတြက္ concepts ေတြကို ေသခ်ာရွင္းျပထားပါတယ္။ တစ္ခ်ဳိ႕ေနရာေတြမွာ screen
  • 2. 2 PHP avScg;xpfrsm; shot နဲ႔ ျပပါတယ္။ Requirements ခု သင္ခန္းစာအတြက္ လိုအပ္တာေတြကေတာ႔ ၁။ Browser ၂။ Text editor ( ကၽြန္ေတာ္ကေတာ႔ notepad++ သံုးပါတယ္) ၃။ Wamp server ၄။ developer tools bar (firefox addon) တုိ႔ျဖစ္ပါတယ္။ အဲဒါေတြ အားလံုးကို ဒီစာအုပ္နဲ႔အတူ ပါလာမယ္႔ CD ခ်ပ္ထဲကေန ရႏိုင္ပါတယ္။ Wamp server installation ပထမဆံုး CD ထဲက WampServer2.0c ဆိုတဲ႔ .exe file ကို double click လုပ္ပါ။ Yes ကို ႏွိပ္ပါ။ rZÑdr pmay
  • 3. udkausmf 3 Next ကို ႏွိပ္ပါ။ rZÑdr pmay
  • 4. 4 PHP avScg;xpfrsm; default အေနနဲ႔ c ေအာက္မွာ wamp ဆိုတဲ႔ folder နာမည္နဲ႔ install လုပ္မွာပါ။ Next ကိုဘဲ ႏွိပ္ပါ။ ေနာက္တစ္ခါ Quick launch တုိ႔ဘာတုိ႔ေရြးခိုင္းရင္လည္း ႏွစ္သက္သလို ေရြးၿပီး Next လုပ္ပါ။ ၿပီးရင္ေတာ႔ Install ကို ႏွိပ္ပါ။ ဒါဆုိရင္ သူ႔ဟာသူ install လုပ္ေနပါလိမ္႔မယ္။ ၿပီးသြားရင္ default browser ေရြးခိုင္းပါလိမ္႔မယ္။ ကၽြန္ေတာ္ကေတာ႔ firefox ကိုဘဲေရြးခဲ႔ပါတယ္။ ေနာက္တစ္ဆင္႔အေနနဲ႔ mail parameters ကို ေရြးခိုင္းပါတယ္။ ေလာေလာဆယ္ ဒီအတုိင္းထားၿပီး Next ကိုဘဲ ႏွိပ္ပါတယ္။ ၿပီးသြားရင္ေတာ႔ Finish ကို ႏွိပ္လိုက္ပါ။ ဒါဆုိရင္ task bar မွာ ေအာက္ပါအတုိင္းေပၚေနပါလိမ္႔မယ္။ rZÑdr pmay
  • 5. udkausmf 5 အဲဒိ ျမားျပထားတဲ႔ icon ေပၚမွာ left click ႏွိပ္ၿပီးေတာ႔ put online ကို ကလစ္လိုက္ပါ။ အဲဒါၿပီးရင္ wamp server icon ေလးဟာ ေအာက္ပါပံုအတုိင္းေျပာင္းသြားပါလိမ္႔မယ္။ rZÑdr pmay
  • 6. 6 PHP avScg;xpfrsm; အားလံုးၿပီးသြားၿပီဆုိရင္ သင္႔အေနနဲ႔ wamp server ကို ေအာင္ျမင္စြာ install လုပ္ၿပီးသြားပါၿပီ။ သင္ ယခုျပဳလုပ္လုိက္တဲ႔ ဆာဗာထဲမွာ PHP 5.2.6 , Apache 2.2.8 , MySQL 5.0.51b တုိ႔ ကိုလည္း install လုပ္ၿပီးသား ျဖစ္သြားပါမည္။ Starting with browser firefox browser မွာ localhost or 127.0.0.1 လုိ႔ ရိုက္ထည့္လိုက္ပါက ေအာက္ပါအတုိင္း တက္လာရပါမည္။ ဒါမွမဟုတ္လည္း wamp server icon အေပၚမွာ left click လုပ္ၿပီး localhost ကို click လုပ္ရင္လည္း တက္ပါတယ္။ rZÑdr pmay
  • 7. udkausmf 7 Your projects ဆိုတဲ႔ေနရာမွာ ခုေလာေလာဆယ္ ေအာက္ပါအတုိင္းျမင္ရမွာျဖစ္ပါတယ္။ No projects yet. To create a new one, just create a directory in ‘www’. ကၽြန္ေတာ္တုိ႔လုပ္သမွ် projects အားလံုးသည္ c:wampwww ဆိုေသာ folder ေအာက္တြင္သာ ျပဳလုပ္ရမည္ ျဖစ္ပါသည္။ ေနာက္ထပ္ phpMyAdmin ကို ေခၚလိုလွ်င္ wamp server icon ေပၚမွ phpMyAdmin ကို click လုပ္ၿပီး ေခၚႏိုင္ပါသည္။ Default Database username မွာ root ျဖစ္ၿပီး password မွာ blank ျဖစ္ပါသည္။ ယခုစာအုပ္တြင္ Default အတိုင္းသာ သံုးသြားမည္ျဖစ္ပါသည္။ rZÑdr pmay
  • 8. 8 PHP avScg;xpfrsm; How to use Notepad++ Notepad++ ကို install လုပ္ၿပီးၿပီဆုိပါက text document တစ္ခုေပၚတြင္ right click လုပ္ၾကည့္ပါက Edit with Notepad++ ဆိုေသာ စာတမ္းကိုေတြ႕ျမင္ရမည္ျဖစ္ပါသည္။ သင္က php page တစ္ခုကို စတင္ၿပီး create လုပ္လုိပါက www folder ထဲတြင္ text docu- ment တစ္ခု လုပ္လိုက္ပါ။ ၿပီးရင္အဲဒိ text document ေပၚကို right click လုပ္ၿပီးေတာ႔ Edit with Notepad++ လုပ္လုိက္ပါ။ ဒီလိုဆိုရင္ notepad++ program တက္လာပါမယ္။ တက္လာတဲ႔အခါမွာ Language မွာ PHP ကို ေရြးေပးပါ။ ၿပီးရင္save as လုပ္ၿပီးေတာ႔ နာမည္တစ္ခုနဲ႔ သိမ္းလိုက္ရင္ php file တစ္ခုကို ရလာမွာျဖစ္ပါတယ္။ default အေနနဲ႔ PHP ရဲ႕ open and close tag ေတြကို အနီနဲ႔ ေဖာ္ျပၿပီး comment ေတြကို အစိမ္းနဲ႔ျပပါတယ္။ ျပင္ခ်င္တယ္ဆုိရင္ေတာ႔ settings/style configura- tor မွာ ျပင္လို႔ရပါတယ္။ rZÑdr pmay
  • 9. udkausmf 9 Chapter (2) Creating PHP pages using PHP ဒီအခန္းမွာေတာ႔ PHP ရဲ႕ အေျခခံအခ်က္ေလးမ်ားကို ေျပာသြားမွာျဖစ္ၿပီး တစ္ခ်ိန္တည္း မွာဘဲ ေျပာသြားတဲ႔အခ်က္ေလးေတြနဲ႔ web တစ္ခုကို အဆင္႔ဆင္႔ တည္ေဆာက္သြားမွာျဖစ္ပါတယ္။ အားလံုးၿပီးသြားတဲ႔အခါမွာ Movie review ေတြရယ္ ၊ ဒီ web ကို လာတဲ႔ လူေတြရဲ႕ comment ေတြရယ္ movie details ေတြကို MySQL နဲ႔ တြဲၿပီး ျပႏိုင္မွာျဖစ္ပါတယ္။ အေသးစား dynam- ic web page တစ္ခု တည္ေဆာက္တယ္လို႔ မွတ္ယူလို႔ရပါတယ္။ သင္႔အေနနဲ႔ PHP program ကို ဒီအတုိင္း သီအိုရီ ခ်ည္း သက္သက္ေလ႔လာ ေနရင္ ပ်င္းမွာစိုးပါတယ္။ ကိုယ္ သိထားသေလာက္က ဘယ္ေလာက္ထိ ေရးလို႔ရသလဲ ဘယ္ေလာက္ထိ ဖန္တီးလို႔ရသလဲဆုိတာကို သိထားဖုိ႔လိုပါတယ္။ ခု အေျခခံအခ်က္ေလးေတြနဲ႔ တင္ သင္ ထင္မွတ္မထားေလာက္ေအာင္ လုပ္ႏိုင္မွာကို ေတြ႕ရွိရမွာပါ။ ကၽြန္ေတာ္ဟာ ဒီစာအုပ္နဲ႔ အတူ CD တစ္ခ်ပ္ တြဲထည့္ေပးထားၿပီးေတာ႔ အဲဒိ CD ထဲမွာ Exercise files ေတြပါတယ္။ အႀကံျပဳလိုတာကေတာ႔ အဲဒိ CD ထဲက ဖိုင္ေတြကို တတ္ႏုိင္သမွ် နားလည္ေအာင္ၾကည့္ပါ။ copy paste လုပ္ၿပီး သင္မေလ႔က်င္႔ပါနဲ႔။ Programming ဆိုတာမ်ဳိးကလည္း တစ္ခါေရးနားမလည္ ႏွစ္ခါေရး ရင္ ရူးသြားတာမ်ဳိးမဟုတ္ပါဘူး။ ထပ္ခါထပ္ခါေရးေလ ပို နားလည္ေလ ျဖစ္ေစတာပါ။ PHP ကို အျခား language ေတြျဖစ္တဲ႔ HTML တို႔လို text editor နဲ႔ ေရးလို႔ရပါတယ္။ ဒါေပမယ္႔ HTML နဲ႔ မတူတာက PHP မွာက .php ဆိုတဲ႔ extension နဲ႔ အဆံုး သတ္တာျဖစ္ၿပီး Web စာမ်က္ႏွာ ေပၚတာေတြက HTML ေတြျဖစ္တယ္ဆုိတာ မွတ္ထားဖို႔လိုပါတယ္။ How PHP fits with HTML The Rules of PHP syntax PHP ကို စေရးၿပီဆုိရင္ ထိပ္ဆံုးမွာ <?php နဲ႔ စၿပီးေတာ႔ ေနာက္ဆံုးမွာ ?> အဆံုးသတ္ရပါတယ္။ ေယ်ဘူယ်အားျဖင္႔ PHP statement ေတြရဲ႕အဆံုးကို semicolon(;)နဲ႔ အဆံုး သတ္ေပးရပါတယ္။ ေအာက္က ဥပမာကို ၾကည့္ပါ။ rZÑdr pmay
  • 10. 10 PHP avScg;xpfrsm; <?php $num = 1+2; echo $num; ?> ကိုယ္ေရးေနတဲ႔ ပရိုဂရမ္ဟာ တျဖည္းျဖည္းရွည္ လာၿပီးရႈပ္ေထြးမႈရွိလာရင္ ေနာက္တစ္ခါ ျပန္ၾကည့္တဲ႔အခါ ကိုယ္ေရးထားတဲ႔ဟာကို ကိုယ္႔ဟာကို ျပန္မမွတ္မိ ျဖစ္ေနတတ္ပါတယ္။ ဒါေၾကာင္႔ စတင္ေရးၿပီဆုိကတည္းက ဘယ္ အေၾကာင္းအရာ ကို ဘာေၾကာင္႔ေရးထားတယ္ဆုိတာကို ပရိဂရမ္ထဲမွာ ထည့္ေရးထားဖုိ႔ အၾကံျပဳလိုပါတယ္။ ဒါကို Comment ေရးတယ္လို႔လဲေခၚပါတယ္။ Com- ment ေရးရင္ တစ္ေၾကာင္းတည္းဆုိရင္ double forward slashes (//) ကို အသံုး ျပဳၿပီးေရးရပါတယ္။ ဥပမာ- <?php // Adding number $num = 1+2; echo $num; ?> ဒီလို ေရးတဲ႔အခါမွာ comments ေတြကို ပရိုဂရမ္က ထည့္ မ run ပါဘူး။ တကယ္လို႔ ကိုယ္မွတ္ထားတာက ငါးေၾကာင္း ေလာက္ျဖစ္သြားမယ္ဆုိရင္ /* com- ment */ ကို သံုးလို႔ရပါတယ္။ ဒါေတြကို မွတ္ထားရင္ရပါၿပီ။ ကဲ... အခု ဆိုရင္ သင္ဟာ PHP ကို ဘယ္လို စေရးရမယ္ဆုိတာ သိၿပီးသြားၿပီမဟုတ္လား။ သိပ္မခက္ပါဘူး။ The importance of coding pratices သင္ဟာ ပရိုဂရမ္ တစ္ခု စေရးေတာ႔မယ္ဆုိရင္ Code structure ေတြကို အ ရ င္ ဆံုးေ လ ႔ လာ သ င္ ႔ ပ ါ တ ယ္ ။ သ င္ေ ရး လို က္ တဲ ႔ C o d eေ တ ြ ဟာ B r o w s e rေ ပ ၚ မ ွာ ေကာင္းမြန္စြာအလုပ္လုပ္ေနသမွ် သင္႔ရဲ႕ code structure ကို သိပ္ဂရုစိုက္စရာမလိုပါဘူး ။ တကယ္လို႔ အဲသည္လိုမဟုတ္ေတာ႔ဘဲ တစ္ခုခု error ျပ ေနၿပီဆုိရင္ Code error ကို ရွာရေတာ႔မယ္ ။ အဲဒိအခါမွာစေရးကတည္းက ရႈပ္ေထြးေနေအာင္ေရးခဲ႔မယ္ဆုိရင္ အလြယ္တကူ ရွာဖို႔ ခက္ခဲမွာပါ။ ေအာက္က နမူနာပံုစံကိုၾကည့္ၾကည့္ပါ။ rZÑdr pmay
  • 11. udkausmf 11 Example(2) ကိုၾကည့္လိုက္ရင္ ပိုရွည္တယ္ထင္ေပမယ္႔ တကယ္တမ္းၾကေတာ႔ syntax err- ror or other troubleshooting လုပ္တဲ႔အခါမွာ ပိုမိုျမန္ဆန္စြာလုပ္ႏိုင္ပါတယ္။ ဒါဟာ ပရိုဂရမ္ကို ခုမွ စေရးမယ္႔ သူေတြအတြက္တကယ္႔ကို အေရးႀကီးပါတယ္။ ၾကံဳသလိုေရးလိုက္ရင္ အက်င္႔ႀကီးပါသြားတတ္ပါတယ္။ Example (1) < ?php //check to make sure the first name is equal to MgMg before granting ac- cess if ($_POST['fname'] == 'MgMg') { echo '<p> Hi '. $_POST['fname'] . '</p>'; } else { echo '<p> Your name isn't MgMg so you cannot enter the web site. </p> '; } ?> Example(2) < ?php //check to make sure the first name is equal to Joe before granting access if ($_POST['fname'] == 'Joe') { echo '<p>'; echo 'Hi'; echo $_POST['fname']; echo '</p>'; } else { echo '<p>'; echo 'Your name's not MgMg so you cannot enter the web site!'; echo '</p>'; rZÑdr pmay
  • 12. 12 PHP avScg;xpfrsm; Creating your first program Using (echo) 1. ေအာက္မွာ ျပထားတဲ႔ ကုဒ္ေတြကို notepad++ ထဲ ကူးထည့္ၿပီး firstprog.php ဆိုၿပီး Save လုပ္ပါ။ <html> <head> <title>My first Program</title> </head> <body> <?php echo "I'm a KoKo.And I'm OK."; ?> </body> </html> OK . အဲဒိ firstprog.php ဆိုတ႔ဲ ဖုိင္ကို web browser ကေန ၾကည့္ၾကည့္ရင္ ေအာက္ကပံုအတိုင္း ျမင္ရပါမယ္။ rZÑdr pmay
  • 13. udkausmf 13 ကဲ အခု ေနာက္ထပ္ တစ္ေၾကာင္းေလာက္ ထပ္ေပါင္း ေရးၾကည့္ရေအာင္။ ထပ္ေပါင္းေရးတဲ႔ စာေၾကာင္းကို Highlight လုပ္ေပးထားပါတယ္။ <html> <head> <title>My first Program</title> </head> <body> <?php echo "I'm a KoKo."; echo 'And I'm OK.'; ?> </body> </html> File ကို save လုပ္ၿပီးေတာ႔ Browser ကေန ျပန္ၾကည့္ၾကည့္ပါ။ ေအာက္ပါ ပံုအတိုင္း ျမင္ရပါလိမ္႔မယ္။ rZÑdr pmay
  • 14. 14 PHP avScg;xpfrsm; How it works? Browser ကေန PHP program ကို​ call လုပ္လိုက္ရင္ အရင္ဆံုး PHP code ေတြကို line by line ရွာပါတယ္။ ဆုိလိုတာက <?php ?> ၾကားက ကုဒ္ေတြကို ရွာတာေပါ႔။ တစ္ခ်ိန္တည္းမွာဘဲ အဲဒိ code ေတြကို process လုပ္ပါတယ္။ ဆာဗာကို PHP code ေတြဟာ တစ္ေၾကာင္းတည္း ပံုစံနဲ႔ သြားတာပါ။ ဆာဗာဆီကိုPHP code ေတြဟာ မွန္မွန္ကန္ကန္ေရာက္သြားၿပီဆိုရင္ က်န္တဲ႔ HTML code ေတြကို browser ဆီပို႔ေပးပါတယ္။ တစ္ခါတည္း php sections ေတြပါ ပို႔ေပးတာပါ။ အထက္က ပရိုဂရမ္ မွာ Coding ပိုင္းမွာ သတိထားမိမယ္ဆုိရင္ single quotation marks (') ေလးကို သတိထားမိမွာပါ။ Text string ေတြကို ေဖာ္ျပရာမွာ single quotation mark(') နဲ႔ double quotation mark(") ကို လိုအပ္ခ်က္ေပၚမူတည္ၿပီး သံုးသြားရမွာပါ။ ေနာက္ပိုင္း သင္ခန္းစာေတြမွာ ပရိုဂရမ္ ေရးရင္း ေရးရင္း ပိုမုိေလ႔လာႏိုင္ပါတယ္။ ေအာက္က နမူနာ ပံုစံေလးကို ၾကည့္ၾကည့္ပါ။ echo " I'm a KoKo"; အဲဒိဟာကို output အေနနဲ႔ ထုတ္လိုက္ရင္ I'm a KoKo ဆိုၿပီး ရလာမွာပါ။ ဘာျဖစ္လို႔လဲဆိုေတာ႔ text string ရဲ႕ အစနဲ႔ အဆံုး ကို " နဲ႔ ခံၿပီး သံုးထားလို႔ပါ။ double quotaion mark (") ႏွစ္ခုၾကားမွာ ရွိတဲ႔ဟာက String ေတြျဖစ္တယ္ဆုိတာ PHP က သူ႔အလိုလို သိပါတယ္။ ေအာက္က နမူနာကိုလည္း ၾကည့္ပါဦး။ echo 'I'm a KoKo'; အဲဒိ လိုင္းကို Output ထုတ္လိုက္ရင္ Error message ရလာမွာပါ။ ဘာျဖစ္လို႔လဲဆုိေတာ႔ String value က ဘယ္က စမွန္း PHP က မသိေတာ႔ပါဘူး။ I'm က ' က စတာလား ။ ဒါမွမဟုတ္ 'I က စတာလားဆိုတာ Confused ျဖစ္သြားပါၿပီ။ အဲဒိလိုဘဲ double quotation mark နဲ႔ စေပမယ္႔ အလားတူ Problem မ်ဳိး ေတြလည္းျဖစ္ႏုိင္ပါတယ္။ ေအာက္က နမူနာေလးကို ေလ႔လာၾကည့္ပါ။ echo "I'm a KoKo . "Hello world""; အဲဒိေတာ႔ လိုအပ္သလို ေပၚဖုိ႔ single quotation mark(') and double quotation rZÑdr pmay
  • 15. udkausmf 15 mark (") ေတြကို လိုအပ္သလို အသံုးျပဳရမွာပါ။ အထက္ပါ code ကို မွန္မွန္ကန္ကန္ Run ဖို႔ ေအာက္ပါအတုိင္း ေရးရင္ ရပါတယ္။ echo"I'm a KoKo . "Hello world""; သံုးထားတာကို သတိျပဳမိမွာပါ။ ဘာအတြက္ သံုးတာလဲဆိုရင္ ဒီမွာက Hello world ရဲ႕ေရွ႕နဲ႔ေနာက္က (") ကို plain character အျဖစ္ ယူလိုတဲ႔အတြက္ဘဲျဖစ္ပါတယ္။ အခုေန ရႈပ္ေနမယ္ဆုိတာ သိပါတယ္။ ေနာက္ အခန္းေတြ ေရာက္လာရင္ ခု ေလ႔က်င္႔ခန္းေတြက ထမင္းစားေရေသာက္ တာထက္ကို ပိုမို လြယ္ကူ သြားေစမယ္ဆုိတာ အာမခံပါတယ္။ Integrating HTML with PHP ေအာက္မွာ ျပထားတဲ႔ နမူနာေလးေတြကို ၾကည့္လိုက္ရင္ HTML ကို PHP ထဲ ထည့္သံုးရတာ ဘယ္ေလာက္ လြယ္ကူၿပီး လွပ တယ္ဆုိတာ ကိုယ္တုိင္ လုပ္ၾကည့္လိုက္ပါ။ <html> <head> <title>My first Program</title> </head> <body> <?php echo " <h1>I'm a KoKo.</h1>"; echo "<h2>I'm a KoKo . "Hello world"</h2>"; ?> </body> </html> Considerations with HTML inside PHP HTML ကို PHP ထဲမွာ ထည့္သံုးေတာ႔မယ္ဆုိရင္ ေအာက္မွာ ျပထားတဲ႔အခ်က္ေတြကို ေသခ်ာေလး ဂရုစိုက္ေစခ်င္ပါတယ္။ ၁။ double quotation mark ေတြကို သံုးရာမွာ ဂရုစိုက္ပါ။ back slash () ခံၿပီးသံုးပါ။ ဥပမာ- echo "<p style="font-size:80%;">"; ၂။ HTML နဲ႔သံုးမယ္ဆုိရင္ single quotation mark ကို အမ်ားဆံုးသံုးသင္႔ပါတယ္။ rZÑdr pmay
  • 16. 16 PHP avScg;xpfrsm; ဥပမာ echo '<p style="font-size:80%;">'; ၃။ PHP code ေတြထဲကို HTML code ေတြ တအားမ်ားေနၿပီဆုိရင္ သတိထားပါ။ code ေတြေရာေထြးၿပီး ရႈပ္ေထြး ေနတတ္ပါတယ္။ အဲဒိအခါမွာ ကိုယ္႔ရဲ႕ HTML code ေတြကို Strictly ျဖစ္ေအာင္ ျပန္စဥ္းစားၿပီး ျပန္ေရးပါ။ ေအာက္က ဥပမာ ၂ ခုကို ႏႈိင္းယွဥ္ၾကည့္ရင္ သိႏိုင္ပါတယ္။ Example(1) <?php echo ' <table style="font-family: Arial,sans-serif; font-size: 80%; '; echo 'width: 100%;">'; echo ' <tr> '; echo ' <td style="width: 50%;">'; echo 'First Name:'; echo ' </td > '; echo ' <td style="width: 50%">'; echo $_POST['fname']; echo ' </td > '; echo ' </tr > '; echo ' </table > '; ?> Example(2) <table style="font-family: Arial,sans-serif; font-size: 80%; width: 100%;"> <tr> <td style="width: 50%;"> First Name: </td > <td style="width: 50%" > <?php echo $_POST['fname'];?> </td> </tr> </table> rZÑdr pmay
  • 17. udkausmf 17 အထက္က ဥပမာ ၂ ခုကို ယွဥ္ၾကည့္မယ္ဆုိရင္ အဓိက ရည္ရြယ္ခ်က္က $_POST['fname'] ဆိုတဲ႔ ဟာကို ထုတ္ေပးဖုိ႔ဘဲျဖစ္တယ္ဆုိတာ ေတြ႕ရမယ္။ ဒီလိုပံုစံမ်ဳိးမွာ HTML code အားလံုးကို PHP ပံုစံ ထဲ ထည့္ေရးမယ္႔အစား(Example 1လို) Example 2 လို HTML ထဲမွာ လိုအပ္တဲ႔ PHP code ကိုဘဲ ထည့္ေရးရင္ ပိုၿပီးရိုးရွင္းပါတယ္။ ဆာဗာ အတြက္ကေတာ႔ အထက္က Example ၂ ခုထဲက ၾကိဳက္တဲ႔ဟာနဲ႔ ေရး ။ အေရးမႀကီးဘူး။ ပရိုဂရမ္မာေတြအတြက္ဘဲကိုယ္ေရးလိုက္တဲ႔ဟာ For- mat က်က် ေရးခ်င္တယ္၊ debugging လုပ္ဖို႔ လြယ္လြယ္ျဖစ္ခ်င္တယ္ဆုိရင္ example 2 လိုေရးဖို႔ အၾကံျပဳလိုပါတယ္။ Using Constants and Variables to add Functionality ခုဆုိရင္ echo function ဘယ္လို အလုပ္လုပ္သလဲဆုိတာ နားလည္သြားၿပီလို႔ယူဆပါတယ္။ echo function ဟာ HTML နဲ႔ တူတူပါဘဲ။ ခု ရွင္းျပမယ္႔ Constants and Variables ေတြကို ထည့္သံုး အသံုးျပဳတတ္မွ တကယ္႔ True power of PHP ကို ရရွိမွာျဖစ္ပါတယ္။ Overview of constants Constant ဆိုတဲ႔ သေဘာတရားကို ေက်ာင္းသားတုိင္း သိၾကမွာပါ။ သူ႔ကို အသံုးျပဳမယ္ဆုိရင္ (၁) မသံုးခင္မွာ သူ႕ရဲ႕ တန္ဖိုးကို ႀကိဳတင္သတ္မွတ္ဖို႔လိုပါတယ္။ (၂) Constant ေတြကို နာမည္ေပးတဲ႔အခါမွာ အစစာလံုးေတြကို letter (A to Z, a to z) or _(underscore) နဲ႔စရပါတယ္။ (၃) Constant နာမည္ေတြကို Number နဲ႔ စလို႔ မရပါဘူး။ (၄) Constant ေတြဟာ case- sensitive ျဖစ္ပါတယ္။ သိသာထင္ရွားေအာင္ စာလံုး အႀကီးေတြနဲ႔ ေရးေလ႔ရွိပါတယ္။ (၅) Constant ေတြကို PHP function တစ္ခုျဖစ္တဲ႔ define() နဲ႔ သတ္မွတ္ၿပီးေတာ႔ သတ္မွတ္ၿပီးသြားရင္ သူ႔ကို ျပန္ေျပာင္းလို႔မရပါဘူး နမူနာေလး ေလ႔က်င္႔ၾကည့္ရေအာင္။ ေအာက္မွာ ျပထားတဲ႔ code ေတြအတုိင္း text editor ထဲ ရိုက္ထည့္ပါ။ rZÑdr pmay
  • 18. 18 PHP avScg;xpfrsm; <html> <head> <title> My Movie Site </title> </head> <body> <?php define ('FAVMOVIE', 'ThaGyanMoe'); echo 'My favorite movie is '; echo FAVMOVIE; ?> </body> </html > အဲဒိ ပရိုဂရမ္ေလးကို ေလ႔လာမယ္ဆုိရင္ FAVMOVIE ဆိုတဲ႔ constant ကို သတ္မွတ္ၿပီး သူ႔ရဲ႕ တန္ဖိုးကို ThaGyanMoe လို႔ ထားလိုက္တာပါ။ အဲဒိေတာ႔ ဘယ္လိုျဖစ္သြားမလဲဆုိရင္ define('name','value') ျဖစ္သြားတာပါ။ ေအာက္က ပံုအတုိင္း Result ထြက္လာပါမယ္။ rZÑdr pmay
  • 19. udkausmf 19 Overview of Variables Constant ရဲ႕ ေျပာင္းျပန္က Variable ေပါ႔ ။ Variable ေတြရဲ႕ တန္ဖုိးဟာ ေျပာင္းႏိုင္တယ္။ Variable ေတြကို သံုးဖုိ႔ define သတ္မွတ္ေပးစရာမလိုသလို declare လုပ္ဖို႔လည္း မလိုပါဘူး။ Vari- able ေတြဟာ ဘာနဲ႔ တူသလဲဆုိရင္ information ေတြကို သိမ္းထားတဲ႔ container တစ္ခုပါဘဲ။ လိုတ႔ဲေနရာကေန ေခၚသံုးႏိုင္တယ္။ ၿပီးေတာ႔ အဲဒိ information ကိုလည္း ထပ္ေျပာင္းႏိုင္တယ္။ Vari- able ေတြကို ေရးေတာ႔မယ္ဆုိရင္ (၁) $ နဲ႔ စရမယ္။ (၂) Variable ေတြဟာ case-sensitive ျဖစ္ပါတယ္။ ($dateEntered နဲ႔ $Dateentered) တုိ႔ရဲ႕ တန္ဖုိးဟာ မတူပါဘူး (၃) Variable name ေတြရဲ႕ အစဟာလည္း letter(A to Z, a to z) or _ (underscore) ျဖစ္ရပါမယ္။ (၄) Variable name ေတြရဲ႕ အစဟာ number မျဖစ္ရပါဘူး (0-9)။ Using Variables ခုနက moviesite.php ကို အနည္းငယ္ ျပင္ေရးၾကည့္ပါမယ္။ Variables ေလး ထည့္သံုးၾကည့္မွာေပါ႔။ ျပင္ထားတဲ႔ စာေၾကာင္းေတြကို Highlight ျပထားပါတယ္။ <html> <head> <title> My Movie Site </title> </head> <body> <?php define ('FAVMOVIE', 'ThaGyanMoe'); echo 'My favorite movie is '; echo FAVMOVIE; echo '<br/>'; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; ?> </body> </html > rZÑdr pmay
  • 20. 20 PHP avScg;xpfrsm; How it works ပထမဆံုး $movierate ဆုိတဲ႔ variable ရဲ႕ တန္ဖုိးကို 5 လို႔ သတ္မွတ္လိုက္ပါတယ္။ Num- ber ေတြကို တန္ဖုိးသတ္မွတ္ ရင္ single quotation mark or double quotation mark မလိုပါဘူး။ တကယ္လို႔ သင္ဟာ ေအာက္ပါအတုိင္း ေရးမယ္ဆုိရင္ movierate တန္ဖုိးဟာ ဂဏန္း 5 မဟုတ္ဘဲ Character 5 ျဖစ္သြားမွာပါ။ $movierate='5'; ဒီေတာ႔ တန္ဖိုးေတြကို သတ္မွတ္ရင္ integer သတ္မွတ္ၿပီး ထားရင္ ေနာက္ပိုင္း mathematical calcu- lation လုပ္ရင္ ပိုမိုလြယ္ကူပါလိမ္႔မယ္။ ေအာက္မွာ ျပထားတဲ႔ နမူနာကို ၾကည့္လိုက္ရင္ သိသာပါတယ္။ <?php $mamamovierate = 5; $nyinyimovierate = 7; $fathermovierate = 2; $mothermovierate = 1; $avgmovierate = (($mamamovierate + $nyinyimovierate + $fathermovierate+ $mothermovierate) / 4); echo 'The average movie rating for this movie is: '; echo $avgmovierate; ?> rZÑdr pmay
  • 21. udkausmf 21 ဒီပရိုဂရမ္ေလးကို ေလ႔လာၾကည့္ရင္ ရိုးရုိးရွင္းရွင္းေလးပါဘဲ။ သခ်ၤာ ေဖာ္ျမဴလာအတုိင္း စုစုေပါင္းကို အေရအတြက္ နဲ႔ စားလုိက္ရင္ average value ကို ရတာဘဲေလ ။ မဟုတ္ဘူးလား။ တစ္ခု သတိထားရမွာက () ေတြကို ေရးရင္ျဖစ္ပါတယ္။ ( ဖြင္႔ၿပီးရင္ ျပန္ပိတ္ ) ရပါတယ္။ + -*/ ေတြပါလာၿပီဆုိေတာ႔ ဒီအေၾကာင္းကို ေနာက္ပိုင္းမွာ ဆက္ရွင္းျပပါမယ္။ ခု PHP ထဲမွာ ပါတဲ႔ built-in mathematical functions ေတြကို နည္းနည္းေလာက္ တီးေခါက္ ၾကည့္ရေအာင္။ rand([$min , $max]) : Returns a random number. ceil($value) : Returns the next highest integer by rounding the value up- wards. floor($value) : Returns the next lowest integer by rounding the value down- wards. number_format($number[,$decimal_places[,$decimal_point, $thousands_ sep]]) ေအာက္မွာ ျပထားတဲ႔ နမူေလးနဲ႔ ယွဥ္တြဲ ေလ႔လာၾကည့္ပါ။ ၿပီးရင္ ကိုယ္႔ဟာကို တစ္ျခား တန္ဖုိးေတြကို ေရးၿပီး ေလ႔က်င္႔ပါ။ Pratice makes perfect တဲ႔။ rand([$min , $max]) : Returns a random number. ceil($value) : Returns the next highest integer by rounding the value up- wards. floor($value) : Returns the next lowest integer by rounding the value down- wards. number_format($number[,$decimal_places[,$decimal_point, $thousands_ sep]]) $price = 12345.67 number_format($price); // returns 12,345.67 number_format($price,2,'.',''); // returns 12345.67 rZÑdr pmay
  • 22. 22 PHP avScg;xpfrsm; အခုက အျမည္းေလးေကၽြးထားတဲ႔သေဘာပါဘဲ။ ေနာက္ပိုင္းမွာ လက္ေတြ႕ေလ႔က်င္႔ခန္းေတြ လုပ္ရင္းနဲ႔ ပိုၿပီး နားလည္ လာပါမယ္။ သက္ဆုိင္ရာ ေနရာေရာက္ရင္ အေသးစိတ္ရွင္းျပမွာပါ။ Passing variables between pages တကယ္လို႔ သင္႔ရဲ႕ website ထဲကို user ေတြကို ၀င္ခြင္႔ေပးမယ္ဆုိရင္ login form လိုလာၿပီေပါ႔။ Login လုပ္ၿပီးသြားရင္ သင္႔အေနနဲ႔ ၀င္လာတဲ႔ user ကို ႏႈတ္ဆက္ခ်င္တယ္။ အဲဒိ ႏႈတ္ဆက္စာကိုလည္း user က ဘယ္ စာမ်က္ႏွာကိုဘဲ သြားသြား ေပၚေနေစခ်င္တယ္ဆိုရင္ ေပၚေစခ်င္တဲ႔ ဟာကို vari- able တစ္ခု သတ္မွတ္ၿပီး အဲဒိ variable ကို စာမ်က္ႏွာတစ္ခုကေန ေနာက္တစ္ခုကို passing လုပ္ဖုိ႔ လုပ္ရမွာဘဲျဖစ္တယ္။ အဲဒိလို pass လုပ္ဖုိ႔ အေျခခံ အားျဖင္႔ေပါ႔ ၄ မ်ဳိးရွိပါတယ္။ (1) Pass the variables in URL (2) Through a session (3) Via a cookie (4) with an HTML form အဲဒိ ထဲက ဘယ္ဟာကို သံုးမယ္ဆုိတာေတာ႔ ကိုယ္ ျပဳလုပ္တဲ႔ site ရဲ႕ လိုအပ္ခ်က္ေပၚမွာမူတည္ၿပီးဘဲ ဆံုး ျဖတ္ၾကပါတယ္။ Passing Variables through a URL ဥပမာေပါ႔ဗ်ာ - http://www.mydomain.com/news/articles/showart.php?id=12345 သူက variables ကို URL ထဲကေန ျဖတ္ၿပီးေဖာ္ျပတာပါ။ showart.php ကို ေခၚလိုက္ရင္ ar- ticles ထဲက id နံပါတ္ 12345 ကို ေခၚတင္လုိက္တာပါ။ အဲဒိလို variable ေတြကို URL ထဲမွာ ေဖာ္ျပတဲ႔အခါမွာ ႏွစ္ခု ကို တစ္ျပိဳင္တည္း လုပ္ခ်င္ရင္ ampersand(&) သေကၤတကို သံုးၿပီး ႏွစ္ခုကို ေပါင္းၿပီး ေဖာ္ျပလို႔ရတယ္။ ဥပမာ- http://www.mydomain.com/news/articles/showart.php?id=12345&lang=en rZÑdr pmay
  • 23. udkausmf 23 သူ႔ရဲ႕ သေဘာတရားကေတာ႔ id နံပါတ္ 12345 ျဖစ္ရမယ္႔ အျပင္ language ကလည္း en ဆိုတဲ႔ english ျဖစ္ရမယ္ေပါ႔ဗ်ာ။ ခုကေတာ႔ ဒီလို လုပ္လို႔ရတယ္ဆုိတာဘဲ မွတ္ထားဦးေနာ္။ ကိုယ္က ခုမွ စေလ႔လာတာဆိုေတာ႔ အေျခခံေလာက္ေတြဘဲ ေလ႔လာေနတာေလ။ ဒီလို variable ေတြကို URL ထဲမွာ ေဖာ္ျပတဲ႔ နည္းက တကယ္တမ္း ေတာ႔ Security အပိုင္းက စဥ္းစားရင္ တအားကို အားနည္းပါတယ္။ sensitive ျဖစ္တဲ႔ information ေတြကို ခုလိုသာ ျပေပးေနရင္ Security အတြက္ ဘယ္လိုလုပ္ စိတ္ခ်ႏိုင္ရေတာ႔မွာလဲ။ သူ႕ရဲ႕ အားနည္းခ်က္ေလးေတြကို ေလ႔လာၾကည့္ရေအာင္။ ၁။ ယူဇာအားလံုးက သင္သံုးထားတဲ႔ variables ေတြကို ျမင္ရမယ္။ ၂။ ယူဇာေတြဟာ URL ထဲက variable ေတြကို ေျပာင္းၿပီးေတာ႔ တစ္ျခား နည္းလမ္းေတြနဲ႔ သင္ မျပခ်င္တဲ႔ information ေတြကို ယူႏုိင္တယ္ ။ ဘာဘဲျဖစ္ျဖစ္ေပါ႔။ security ပိုင္း အားနည္းတယ္ဆိုေပမယ္႔ တစ္ျခား သံုးလို႔ရတဲ႔ ေနရာေလးေတြလည္း ရွိေသးတယ္ေလ။ ခုလိုမ်ဳိး variable ေတြကို PASS လုပ္ဖုိ႔ PHP မွာ ရွိပါတယ္။ $_GET array ျဖစ္ပါတယ္။ URL မွာ ေပၚမယ္႔ variable name ကို key အျဖစ္ ယူလိုက္မွာပါ။ URL မွာ variable က id ျဖစ္တယ္ဆုိရင္ $_GET['id'] ျဖစ္ၿပီးေတာ႔ ေနာက္ variable က lang ဆုိရင္ $_ GET['lang'] ေပါ႔။ ဒါဆုိရင္ ေလ႔က်င္႔ခန္း နမူနာေလး လုပ္ၾကည့္ရ ေအာင္ ။ ခုနက ေရးခဲ႔တဲ႔ moviesite. php ကို နည္းနည္းေလး ျပင္ေရးမယ္ဗ်ာ။ <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head > <body > <?php //delete this line: defi ne('FAVMOVIE', 'The Life of Brian'); echo 'My favorite movie is '; rZÑdr pmay
  • 24. 24 PHP avScg;xpfrsm; echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; ?> </body> </html> ျပင္ၿပီးသြားၿပီလား။ OK. ဒါဆုိရင္ ေနာက္ထပ္ document အသစ္တစ္ခုေရးမယ္။ text editor မွာ new pageေခၚၿပီးေတာ႔ ေအာက္ပါအတုိင္း ေရးပါ။ ၿပီးရင္ movie1.php ဆိုၿပီး save လုပ္ပါ။ <html> <head> <title> Find my Favorite Movie! </title> <head> <body> <?php echo ' <a href="moviesite.php?favmovie=Stripes"> '; echo 'Click here to see information about my favorite movie!'; echo ' </a> '; ?> </body> </html> ၿပီးရင္ browser ကေန movie1.php ကို ေခၚလိုက္ရင္ ေအာက္က ပံု အတိုင္းေပၚလာ ပါမယ္။ ကၽြန္ေတာ္ ဒီစာအုပ္မွာ HTML အေၾကာင္းကို အေသးစိတ္ရွင္း မေနပါဘူး။ PHP ကို ေလ႔လာေနၿပီဆုိေတာ႔ HTML ကိုလည္း အေတာ္ အသင္႔ နားလည္ ေနၿပီလို႔ ယူဆပါတယ္။ rZÑdr pmay
  • 25. udkausmf 25 ပံုမွာ ျမင္တဲ႔အတုိင္းဘဲ သူက click ပါတဲ႔။ အဲဒိေတာ႔ click လိုက္ေပါ႔။ ဒါဆုိရင္ ေအာက္ကပံုအတုိင္း ထြက္လာမယ္။ rZÑdr pmay
  • 26. 26 PHP avScg;xpfrsm; ပံုမွာျမင္ရတဲ႔အတုိင္းဘဲ $favmovie = TheGyanMoe ျဖစ္သြားတာပါ။ တစ္ခါတည္း browser ရဲ႕ Tab ရဲ႕ title ကိုလည္း ၾကည့္လိုက္ပါဦး My Movie Site - ThaGyanMoe ဆိုၿပီး ျမင္ရမွာပါ။ ဘာျဖစ္လို႔လဲဆုိေတာ႔ title tag မွာ $favmovie ဆိုတဲ႔ variable ကို ေခၚသံုးထားလိုက္လို႔ျဖစ္ပါတယ္။ Special characters in URLs URL မွာ variable ေတြမွာပါတတ္တဲ႔ special character ေတြျဖစ္တဲ႔ space, amper- sands(&) စတဲ႔ character မ်ား ကို ဒီအတုိင္း ေဖာ္ျပရာမွာ problem ရွိပါတယ္။ ဒီလို ဟာေတြကို PHP မွာ ေက်ာ္လႊားႏိုင္ပါတယ္။ သူ႕မွာပါတဲ႔ urlencode() ဆိုတဲ႔ function ကို သံုးၿပီး special character problem ကို ေျဖရွင္းႏိုင္ပါတယ္။ အခု နည္းနည္းေလာက္ ထပ္ေပါင္း ေလ႔က်င္႔ၾကည့္ရေအာင္။ mov- ie1.php ကို ေအာက္က ကုဒ္ေတြအတုိင္း ထပ္ ျပင္ေရးၾကည့္မယ္ေလ။ <html> <head> <title> Find my Favorite Movie! </title > </head> <body> <?php //add this line: $myfavmovie = urlencode('Enemy at the gate'); //change this line: echo "<a href="moviesite. php?favmovie=$myfavmovie">"; echo 'Click here to see information about my favorite movie!'; echo '</a>'; ?> </body > </html> rZÑdr pmay
  • 27. udkausmf 27 save လုပ္ၿပီး ျပန္ ဖြင့္ၾကည့္ရေအာင္။ ဒါဆုိရင္ ေအာက္ပါပံုအတုိင္းျမင္ရမယ္။ URL box ထဲကို ေသခ်ာၾကည့္ပါ။ ဒီပရိုဂရမ္ေလးမွာဆုိရင္ $myfavmovie = Enemy at the gate ဆိုၿပီး ေပးခဲ႔တာပါ။ word ေတြၾကားက space ေတြကို မရွိေစခ်င္တဲ႔အတြက္ urlencode() ဆိုတဲ႔ function ကို တစ္ခါတည္း တြဲေပးလိုက္တာပါဘဲ။ မခက္ပါဘူး။ ဟုတ္တယ္မလား။ ကဲ ..ေနာက္တစ္ခန္းကို ဆက္ကူး လိုက္ၾကရေအာင္။ Passing variables with SESSIONS ကၽြန္ေတာ္ အထက္မွာ ေျပာခဲ႔တဲ႔အတုိင္း variable ကို URL ကေန passing လုပ္တဲ႔အခါမွာ အေရးမႀကီးတဲ႔ ေဒတာေတြ ၊ saved လုပ္ထားတဲ႔ old information ေတြကို ယူသံုးလိုက္လို႔ ကိုယ္႔ site အတြက္ dangerous အေျခအေနကို မေရာက္ႏိုင္တဲ႔ အေျခအေနေတြမွာ သံုးလို႔ရပါတယ္။ တကယ္လို႔မ်ား user တစ္ေယာက္ရဲ႕ personal data ေတြကိုသာဆုိရင္ အထက္ပါနည္းနဲ႔ မသံုးသင္႔ပါဘူး။ ကိုယ္႔အေၾကာင္းကို ဘာျဖစ္လို႔ လူတုိင္းကို ေပးသိရမွာလဲ ? မဟုတ္ဘူးလား။ Person- al data ေတြဆုိတာ username, password, address, email, phone number, credit card number စတာေတြပါပါတယ္။ အဲဒါေတြကို private အေနနဲ႔ သံုးဖုိ႔ Cookies ကို သံုးရပါတယ္။ ေနာက္ပိုင္းမွာေတာ႔ cookies အေၾကာင္းကို ထပ္ၿပီး ျဖည့္စြက္ေဆြးေႏြးသြားပါမယ္။ rZÑdr pmay
  • 28. 28 PHP avScg;xpfrsm; what is a session? Session ဆိုတာ တကယ္ေတာ႔ variable ကို temporary သတ္မွတ္လိုက္တာဘဲျဖစ္ပါတယ္။ သူ႕ရဲ႕ သက္တမ္းက ဘယ္ေလာက္ခံလဲဆုိေတာ႔ Browser ကို shutdown ခ်လိုက္တဲ႔အထိပါဘဲ။ browser လည္း ပိတ္ သူလည္း ေပ်ာက္ ပါဘဲ။ Session မွာလည္း သူ႔ဟာသူ session id ပါပါတယ္။ ဒါမွ ကိုယ္လုပ္လိုက္တဲ႔ (browser ေပၚမွာ) အရာတစ္ခုကို သူက သူ႔နံပါတ္နဲ႔သူ မွတ္ထားတာျဖစ္ပါတယ္။ PHP program က လိုအပ္တဲ႔အခါမွာ အဲဒိ Session ေတြကို refer ျပန္လုပ္ပါတယ္။Session ေတြကို URL ထဲမွာ Pass လုပ္လို႔ရသလို cookie နဲ႔လည္း တြဲဖက္ၿပီး လုပ္လို႔ရပါတယ္။ PHP program မွာ session ကို ေခၚသံုးဖုိ႔ session_start() ဆုိတဲ႔ function ေလးကို ေခၚသံုးလိုက္ယံုပါဘဲ။ ဘယ္နားမွာ ေရးရလဲဆုိရင္ PHP program ရဲ႕ ထိပ္ဆံုးမွာ ေရးရပါတယ္။ တစ္ခုေတာ႔ရွိတယ္။ session ထဲမွာ သင္က ဘယ္ data ေတြကို သိမ္းမွာလဲဆုိတာေတာ႔ ပထမဆံုး စဥ္းစားထားဖုိ႔လိုပါတယ္။ အဓိကက ေတာ႔ username and login information ေတြကို သိမ္းတာမ်ားပါတယ္။ ကဲ ..ေျပာေနၾကာပါတယ္။ ကၽြန္ေတာ္တုိ႔ ပရိုဂရမ္ တစ္ပုဒ္ေလာက္ ခ်ေရးလိုက္မယ္။ movie1.php ကိုဘဲ နည္းနည္း ထပ္ေပါင္းေရးၾကည့္မယ္။ ေအာက္က အတုိင္းေပါ႔ - <?php session_start(); $_SESSION['username'] = 'MgMg12345'; $_SESSION['authuser'] = 1; ?> <html> <head> <title> Find my Favorite Movie! </title > </head> <body> <?php $myfavmovie = urlencode('Enemy at the gate'); echo " <a href="moviesite. php?favmovie=$myfavmovie"> "; rZÑdr pmay
  • 29. udkausmf 29 echo 'Click here to see information about my favorite mov- ie!'; echo ' </a> '; ?> </body> </html> ေနာက္ၿပီးေတာ႔ moviesite.php ကိုလည္း နည္းနည္းေတာ႔ျပင္ေရးရမယ္ေလ။ ဘာလို႔ဆုိေတာ႔ သူ႔ဆီက information ေတြ ယူရမွာကိုး ။ session သံုးၿပီဆုိေတာ႔ သူက ဒီအတုိင္း မေပးေတာ႔ဘူးေလ။ သတ္မွတ္ထားတဲ႔ data ေတြကို တူမတူ တိုက္စစ္မယ္။ တူရင္ေပးမယ္။ မတူရင္ မေပးဘူးေပါ႔။ အဲဒိလို စစ္ဖုိ႔အတြက္ moviesite.php ကို နည္းနည္းေလး ျပင္ေရးမယ္ေလ။ <?php session_start(); //check to see if user has logged in with a valid password if ($_SESSION['authuser'] != 1) { echo 'Sorry, but you don't have permission to view this page!'; exit(); } ?> <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head > <body> <?php echo 'Welcome to our site, '; echo $_SESSION['username']; echo '! <br/>'; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; rZÑdr pmay
  • 30. 30 PHP avScg;xpfrsm; ?> </body> </html> Save လုပ္ၿပီးေတာ႔ movie1.php ကို ဖြင္႔ၿပီး click လုပ္လိုက္ရင္ ေအာက္က ပံုအတိုင္းထြက္လာပါမယ္။ How it works အေရးႀကီးတာကို မေမ႔နဲ႔ေနာ္။ session ကို ေရးမယ္ဆုိရင္ ကိုယ္ေရးမယ္႔ script ရဲ႕ ထိပ္ဆံုးမွာ ေရးရတယ္။ ခု ဒီ ပရိုဂရမ္ မွာဆုိရင္ movie1.php ကေန request လုပ္လာတာကို moviesite.php ရဲ႕ ထိပ္ဆံုးက session က if နဲ႔ စစ္ပါတယ္။ if ရဲ႕ အလုပ္လုပ္ပံုက ေအာက္ပါအတုိင္းျဖစ္ပါတယ္။ သူ႕ရဲ႕ condition က if(conditional statement){statement} ျဖစ္ပါတယ္။ ဥပမာ ေလး တစ္ခု နဲ႔ လုပ္ၾကည့္မယ္ေလ။ အစဆိုေတာ႔ လြယ္လြယ္ကူကူေပါ႔ဗ်ာ။ rZÑdr pmay
  • 31. udkausmf 31 <?php if (1+3 ==4){ echo 'Summation is true.'; } ?> အဲဒါကို run လုိက္ရင္ browser ကေန Summation is true ဆိုတာကို ျပမွာပါ။ အလုပ္လုပ္ပံုက if ဆိုတဲ႔အတိုင္း ျဖစ္လွ်င္ေပါ႔ ဗ်ာ... 1+3==4 ျဖစ္လွ်င္ Summation is true ဆိုတာကို echo နဲ႔ output ထုတ္ထားတာပါ။ 1+3==5 ဆိုရင္ ဘာမွ ျပမွာမဟုတ္ပါဘူး ။ ဟုတ္မွမဟုတ္တာကိုး။ ဘာျဖစ္လို႔ == ႏွစ္ခါသံုးရတာလဲ ဆုိရင္ PHP မွာ သံုးရမယ္႔ Comparison operators ကို ရွင္း ျပပါမယ္။ Comparison operators == :Values are equal === : Values are identical != :Values are not equal !== :Values are not identical < :value 1 is less than value 2 > :value 1 is greater than value 2 <= :value 1 is less than or equal to value 2 >= :value 1 is greater than or equal to value 2 ဒီေနရာမွာ ေသခ်ာ မွတ္ထားရမွာက equal ဆိုတာနဲ႔ identical ဆုိတာ မတူပါဘူး။ identical မွာဆိုရင္ variable ရဲ႕ value ေရာ datatype ေရာ တူပါတယ္။ equal မွာကေတာ႔ value ဘဲတူတာပါ။ အခု moviesite.php မွာ ျပင္ေရးလိုက္တဲ႔ ဟာကို ျပန္ရွင္းပါမယ္။ rZÑdr pmay
  • 32. 32 PHP avScg;xpfrsm; if($_SESSION['authuser'] !=1) ဆိုတာက movie1.php file ကေန request လုပ္လာတာမွာ authuser =1 မဟုတ္ဘူးဆုိရင္ ဆိုတဲ႔ အဓိပၸာယ္ရပါတယ္။ လိုရင္းေျပာရရင္ 1 ျဖစ္မွ ရမယ္ဆိုေပါ႔ဗ်ာ။ 1 မဟုတ္ဘူးဆိုရင္ {} ကြင္းထဲကဟာကို ဆက္ Run မွာပါ။ အဲဒိမွာ သူက echo သံုးၿပီး သင္က 1 မဟုတ္တဲ႔အတြက္ ဒီ page ကို ၾကည့္ခြင္႔မရွိပါဘူး ဆိုၿပီး output ထုတ္ေပးတာပါ။ ၿပီးရင္ exit() func- tion သံုးၿပီး ျပန္ထြက္သြားပါတယ္။ တကယ္လို႔ 1 ျဖစ္ခဲ႔မယ္ဆုိရင္ က်န္တဲ႔ code ေတြကို ဆက္ run မွာပါ။ အခုက 1 ျဖစ္ေနေတာ႔ ပထမဆံုး welcome to our site လာမယ္။ ေနာက္ၿပီးရင္ echo $_SESSION['username'] ကို ကၽြန္ေတာ္တုိ႔က MgMg12345 လို႔သတ္မွတ္ခဲ႔တဲ႔အတြက္ MgMg12345 ဆိုၿပီးျပမယ္။ က်န္တာကေတာ႔ ေရွ႕က အတုိင္းဘဲ။ If , else if, while , do while, switch and break , For စတဲ႔ statement ေတြကို သူ႔ရဲ႕ သက္ဆုိင္ရာေနရာ ေရာက္မွ ကၽြန္ေတာ္ ရွင္းျပသြားပါမယ္။ Theory နဲ႔ Pratical ကို တစ္ခါတည္း လုပ္သြားတာေပါ႔။ ဒါမွမဟုတ္ရင္ ခင္ဗ်ား ပ်င္းသြားမွာေပါ႔။ rZÑdr pmay
  • 33. udkausmf 33 Passing variables with cookies Cookies ေတြမွာ ဘာေတြကို သိမ္းသလဲဆုိရင္ website ကို လာေရာက္တဲ႔သူရဲ႕ computer information အနည္းငယ္ကို သိမ္းပါတယ္။ Theory အရဆုိရင္ေတာ႔ Cookies ေတြဟာ အသံုးျပဳသူရဲ႕ IP , operating system ေတြကို intercept လုပ္ႏိုင္ပါတယ္။ ဒါေပမယ္႔ cookies ေတြက storing infor- mation ဘဲလုပ္ပါတယ္။ တစ္ခ်ဳိ႕သူေတြက ေတာ႔ ဒီ cookies technology နဲ႔ အသံုးျပဳသူရဲ႕ browsing habits ေတြ ကို track လုပ္ပါတယ္။ ၿပီးေတာ႔ ဒီ cookies ေတြကို commonly name directory ထဲမွာ သိမ္းထားတာျဖစ္တဲ႔အတြက္ hacker ေတြက hack လုပ္ၿပီးေတာ႔ ေသာ္လည္းေကာင္း တစ္ျခားသူက မိမိကြန္ပ်ဴတာထဲက cookies ေတြကို တစ္နည္းနည္းျဖင္႔လာယူသြားလွ်င္ေသာ္ လည္းေကာင္း သင္႔ရဲ႕ အေရးႀကီးေဒတာေတြ ပါသြားႏိုင္ပါတယ္။ ဒါေၾကာင္႔ တစ္ခ်ဳိ႕သူေတြကေတာ႔ Browser က cook- ies ကို disable ေပးထားေလ႔ရွိပါတယ္။ ဒီလိုမ်ဳိး ျဖစ္ပ်က္ႏိုင္တာေတြေၾကာင္႔ တကယ္႔ အေရးႀကီး ေဒတာေတြ (ဥပမာ - Credit card information ) စတာေတြကို ကြန္ပ်ဴတာထဲမွာ သိမ္းဆည္း မထားဖို႔ အႀကံေပးလိုပါတယ္။ Cookies နဲ႔ပါတ္သတ္ၿပီး ပိုသိခ်င္ရင္ security risk ေတြကို ပို သိခ်င္ရင္ ေအာက္က website ကို သြားေရာက္ ေလ႔လာႏိုင္ပါတယ္။ www.w3.org/Security/faq/wwwsf2.html#CLT-Q10 ဒီလိုဆုိရင္ ဘာျဖစ္လို႔ developer သမားေတြက cookies ကို သံုးေနၾကေသးလဲ။ cook- ies ကို သံုးျခင္းျဖင္႔ သတ္မွတ္ထားတဲ႔ အခ်ိန္ထိ information ကို သိမ္းထားလို႔ရပါတယ္။ Ses- sion ကို သာသံုးမယ္ဆုိရင္ Browser ကို ပိတ္လိုက္တာနဲ႔ သူ႕ရဲ႕ life ကလည္း ကုန္ၿပီေလ။ cookies ကေတာ႔ အဲလို မဟုတ္ပါဘူး။ Session ကိုသာ cookies နဲ႔ တြဲသံုးမယ္ဆုိရင္ browser life ထက္ ပို ၾကာရွည္ခံေအာင္သံုးႏိုင္ပါတယ္။ ဟုတ္ၿပီ။ ခု cookie ကို ဘယ္လို သတ္မွတ္မလဲ။ လြယ္ပါတယ္။ setcookie() ေပါ႔။ ဒါလည္း PHP function တစ္ခုပါဘဲ။ cookie တစ္ခု သတ္မွတ္မယ္ဆုိရင္ ေအာက္က အခ်က္ေတြကို အရင္ဆံုး စဥ္းစား ဖုိ႔လိုပါတယ္။ 1. Cookie name 2. Value of the cookie name (eg. username) 3. Cookie life time (in seconds) UNIX timestamp ေပၚမွာ အေျခခံထားပါတယ္။ rZÑdr pmay
  • 34. 34 PHP avScg;xpfrsm; ဒါေပမယ္႔ ခုလို ေရးလို႔ရပါ တယ္။ time()+60*60*24*365 ဒါဆုိရင္ သူ႔ရဲ႕ သက္တမ္းက ၁ ႏွစ္စာျဖစ္ပါတယ္။ 4. Path ( cookie ကို သိမ္းမယ္႔ေနရာ) 5. Domain ( ဒီ cookie ကို လက္ခံႏိုင္တဲ႔ domain) (ဒီဟာက optional ျဖစ္ပါတယ္။ မသတ္မွတ္လည္းရတယ္) 6. Cookie မွာ secure connection HTTPS ကို on ေပးထားရမယ္။ အဲဒိေတာ႔ ဒီလိုပံုစံျဖစ္မွာေပါ႔။ setcookie ($name[, $value[, $expire[, $path[, $domain[, $secure]]]]]) ခုလည္း $_COOKIE['cookiename'] ကို သံုးမွာပါဘဲ။ ခု လုပ္မယ္႔ ပရိုဂရမ္မွာဆုိရင္ MgMg12345 ဆုိတဲ႔ user ဟာ ဒီ site ကို လာတုိင္း သူ႔ရဲ႕ username ကို type လုပ္စရာမလိုဘဲ ေအာ္တို ျဖည့္ေပးမွာျဖစ္ပါတယ္။ movie1.php file ကိုဘဲ နည္းနည္းေလး ထပ္ ျပင္ ေရးၾကည့္တာေပါ႔။ <?php setcookie('username', 'MgMg', time() + 60); session_start(); //delete this line: $_SESSION['username'] = 'MgMg12345'; $_SESSION['authuser'] = 1; ?> <html> <head> <title> Find my Favorite Movie! </title> </head> <body> <?php $myfavmovie = urlencode('Enemy at the gate'); echo " <a href="moviesite.php?favmovie=$myfavmovie"> "; echo 'Click here to see information about my favorite movie!'; echo ' </a> '; ?> </body> </html> rZÑdr pmay
  • 35. udkausmf 35 ၿပီးေတာ႔ ထံုးစံအတိုင္း moviesite.php file ကို နည္းနည္းေလး ထပ္ျပင္ေရးမယ္ <?php session_start(); //check to see if user has logged in with a valid password if ($_SESSION['authuser'] != 1) { echo 'Sorry, but you don't have permission to view this page!'; exit(); } ?> <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head > <body > <?php echo 'Welcome to our site, '; echo $_COOKIE['username']; echo '! <br/> '; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate=5; echo 'My movie rating for this movie is: '; echo $movierate; ?> </body > </html> ဒီလိုဆိုရင္ ေအာက္ပါပံုေတြအတုိင္းျမင္ရမွာပါ။ rZÑdr pmay
  • 36. 36 PHP avScg;xpfrsm; အထက္က ပရိုဂရမ္ဟာ cookies life time ကို 60 seconds ဘဲ သတ္မွတ္ထားတာပါ။ ကိုယ္႔ဟာကို စိတ္ၾကိဳက္ ျပင္ၾကည့္ၿပီးေလ႔က်င္႔ၾကည့္ပါ။ rZÑdr pmay
  • 37. udkausmf 37 Passing information with Forms Form ပံုစံကို နည္းနည္းေလာက္ ေလ႔လာၾကည့္ရေအာင္ ။ သူ႔ကို စတင္ေတာ႔မယ္ဆုိရင္ (၁) <form> နဲ႔ စတင္ၿပီး action and method ဆိုတဲ႔ attribute ပါပါတယ္။ action အေနနဲ႔ URL တစ္ခုကို ေပးႏိုင္ၿပီး method အေနနဲ႔ GET or POST တစ္ခုခုကို သံုး ႏိုင္ပါတယ္။ (၂) input fields မ်ားပါပါတယ္။ အသံုးမ်ားတာေတြကေတာ႔ TEXT: min 2 characters to 2000 characters အထိ သံုးႏိုင္ပါတယ္။ ဒိထက္ ပိုမ်ားမ်ားသံုးခ်င္ရင္ေတာ႔ textarea ဆိုတဲ႔ ဟာကို သံုးရပါမယ္။ Check box : user ေတြကို Choice လုပ္ဖုိ႔ရန္အတြက္ျဖစ္ပါတယ္။ choice ကို တစ္ခုထက္မက ေရြးခ်ယ္ႏိုင္မွာျဖစ္ပါတယ္။ Radio: radio button ကလည္း list ထဲကေန ေရြးခ်ယ္ဖို႔ဘဲျဖစ္ပါတယ္။ ဒါေပမယ္႔ သူက တစ္ခုဘဲ ေရြးလို႔ရမွာျဖစ္ပါတယ္။ Select: ဒီေကာင္႔ကိုေတာ႔ ေတာ္ေတာ္မ်ားမ်ားက Drop down box အျဖစ္သိၾကပါတယ္။ Passwords: သူ႔ကိုေတာ႔ user က ဘာရိုက္တယ္ဆုိတာကို Hide လုပ္ထားရမွာျဖစ္ပါတယ္။ Using forms to get information movie1.php file ကိုဘဲ နည္းနည္းေလး ထပ္ၿပီး ျပင္ေရးၾကည့္မယ္ေလ။ ျပင္ရင္းျပင္ရင္း ေတာ္ေတာ္ေတာင္ မ်ားလာၿပီေနာ္။ ကၽြန္ေတာ္ေျပာခ်င္တာက မ်ားလာၿပီဆုိေတာ႔ Comment ေလးေတြ ေသခ်ာေရးဖုိ႔ ပါ။ ေအာက္မွာ ျပထားတဲ႔ Code ေလးေတြကို ေသခ်ာ ေလ႔လာၾကည့္ပါ။ rZÑdr pmay
  • 38. 38 PHP avScg;xpfrsm; <?php //delete this line: setcookie('username', 'MgMg', time() + 60); session_start(); $_SESSION['username'] = $_POST['user']; $_SESSION['userpass'] = $_POST['pass']; $_SESSION['authuser'] = 0; //Check username and password information if (($_SESSION['username'] == 'MgMg') and ($_SESSION['userpass'] == '12345')) { $_SESSION['authuser'] = 1; } else { echo 'Sorry, but you don't have permission to view this page!'; exit(); } ?> <html> <head > <title> Find my Favorite Movie! </title > </head > <body> <?php $myfavmovie = urlencode('Enemy at the gate'); echo " <a href="moviesite.php?favmovie=$myfavmovie"> "; echo "Click here to see information about my favorite movie!"; echo " </a> "; ?> </body> </html> ျပီးသြားရင္ moviesite.php ကို နည္းနည္း ထပ္ျပင္ေရးပါဦးမယ္။ <?php session_start(); //check to see if user has logged in with a valid password if ($_SESSION['authuser'] !=1 ) { echo 'Sorry, but you don't have permission to view this page!'; exit(); rZÑdr pmay
  • 39. udkausmf 39 } ?> <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head> <body> <?php echo 'Welcome to our site, '; //delete this line: echo $_COOKIE['username']; echo $_SESSION['username']; echo '!<br/>'; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; ?> </body> </html> ၿပီးသြားရင္ Login form တစ္ခု တည္ေဆာက္ပါမယ္။ text editor မွာ new document လုပ္ပါ။ File name ကို login.php လုိ႔ နာမည္ေပးပါမယ္။ <?php session_unset(); ?> <html> <head> <title>Please Log In</title> </head> <body> <form method="post" action="movie1.php"> <p> Enter your username: <input type="text" name="user"/> </p> <p> Enter your password: rZÑdr pmay
  • 40. 40 PHP avScg;xpfrsm; <input type="password" name="pass"/> </p> <p> <input type="submit" name="submit" value="Submit"/> </p> </form> </body> </html> ၿပီးသြားရင္ login.php file ကို ေခၚၾကည့္ပါမယ္။ ေအာက္ကပံုအတိုင္း ျမင္ရမွာပါ။ username ေနရာမွာ mgmg12345 password ကို 12345 ဆိုၿပီး၀င္ၾကည့္ပါ။ ၀င္လုိ႔ရမွာမဟုတ္ပါဘူး။ username မွားေနတဲ႔အတြက္ ျဖစ္ပါတယ္။ Authorization scripts အလုပ္လုပ္တယ္ေပါ႔ဗ်ာ။ rZÑdr pmay
  • 41. udkausmf 41 အခု login name "MgMg" and password "12345" နဲ႔၀င္ၾကည့္ပါ။ ၀င္လုိ႔ရသြားတာကို ေတြ႕ရပါမယ္။ How it works ပထမဆံုးအလုပ္လုပ္တာက login.php ေလ ။ ဟုတ္တယ္မလား။ သူ႔ထဲမွာ ဘယ္ page ကဘဲလာတဲ႔ session ေတြထဲက variables ေတြကို unset လုပ္လိုက္ပါတယ္။ အဲဒါကို session_un- set() ဆိုတဲ႔ function နဲ႔ လုပ္လိုက္တာပါ။ ၿပီးရင္ variables ၂ ခုျဖစ္တဲ႔ username and password (user and password respectively) ကို ေမးပါတယ္။ ၿပီးရင္ ရလာတဲ႔ variables ၂ ခုကို movie1. php ကို ပို႔ေပးပါတယ္။ အဲလို ပို႔တဲ႔ေနရာမွာ POST method ကို သံုးၿပီးပို႔ပါတယ္။ အဲဒါေၾကာင္႔ movie1. php မွာ $_POST syntax ကို ေတြ႕ရတာျဖစ္ပါတယ္။ ခု ဒီေလာက္ သိရင္ ရပါၿပီ။ ေနာက္ အခန္းေတြမွာ လက္ေတြ႕ေလ႔က်င္႔ခန္းေတြ လုပ္ရင္းနဲ႔ ပိုၿပီးနားလည္လာပါမယ္။ movie1.php fileက တကယ္ေတာ႔ ေအာက္ပါလုပ္ငန္းစဥ္မ်ားကို လုပ္ေဆာင္သြားပါတယ္ - (၁) Session ကို စတင္ေပးတယ္။ default အားျဖင္႔ login က ရလာတဲ႔ variables ေတြကို register လုပ္ေပးတယ္။ (၂) Usernameand password ကို accept လုပ္ႏိုင္လား မလုပ္ႏိုင္ဘူးလား စစ္ေပးတယ္။ (၃) တကယ္လို႔ username and password ၂ ခုလံုးကို လက္ခံတယ္ဆုိရင္ autheruser ကို 1 အျဖစ္ သတ္မွတ္ ေပးၿပီးေတာ႔ other pages ေတြကို access ေပးပါတယ္။ rZÑdr pmay
  • 42. 42 PHP avScg;xpfrsm; (like moviesite.php) (၄) တကယ္လို႔ username and password က မွားတယ္ဆုိရင္ error message ကို ျပေပးပါတယ္။ Using if / else arguments ခု if/elsearguments ကိုရွင္းပါမယ္။ ေရွ႕မွာတုန္းကေတာ႔ နည္းနည္း ရွင္းခဲ႔ေသး တယ္ေလ။ မွတ္မိမယ္ထင္တယ္။ if ကို ဘာျဖစ္လို႔ သံုးရတာလဲ။ ဟုတ္ကဲ႔ ဒီလိုပါ။ ကၽြန္ေတာ္တုိ႔ဟာ ခုဆုိရင္ val- ues အမ်ဳိးမ်ဳိးကို variables ေတြနဲ႔ ျပႏိုင္လာၿပီျဖစ္ပါတယ္။ တစ္ခ်ဳိ႕ variable ေတြကို specific action လုပ္ခ်င္တဲ႔အခါမ်ဳိးမွာ if ကို သံုးပါတယ္။ ဥပမာ $password ဆိုတဲ႔ variable ေပါ႔။ user ကို password ေတာင္းမယ္။ user က ထည့္မယ္။ မွန္ရင္ site ထဲကို ၀င္ခြင္႔ေပးမယ္။ မမွန္ဘူးဆုိရင္ user ကို kick out ဒါမွမဟုတ္ site ထဲကို ၀င္ခြင္႔မေပးဘူး။ if ကို else ထပ္ေပါင္း ေပးလိုက္မယ္ဆုိရင္ the whole range of possible actions ေတြကို ထိန္းႏိုင္မွာပါ။ Using if statements Basic if statement က ေအာက္ေဖာ္ျပပါ အတုိင္းျဖစ္ပါတယ္ if (condition) action to be taken if true. ဥပမာ အေနနဲ႔ - if ($stockmarket >1000) echo 'Wharr.... Time to Party'; တကယ္လို႔ simple statement ထက္ ပို ရွည္တယ္ဆုိရင္ေတာ႔ {} ကို သံုးရမွာပါ။ ဒီ အဖြင္႔ အပိတ္ေတြကို ေသခ်ာ ဂရုစိုက္ဖုိ႔လိုပါတယ္။ ေအာက္ေဖာ္ျပပါ နမူနာကို ၾကည့္ပါ။ if ($stockmarket > 10000) { echo 'Wharr .....Time to Party!'; $mood = 'happy'; $retirement = 'potentially obtainable'; } rZÑdr pmay
  • 43. udkausmf 43 အခု ကၽြန္ေတာ္တုိ႔ လက္ေတြ႕ေလ႔က်င္႔ဖုိ႔ လုပ္ပါမယ္။ text editor ကိုဖြင္႔ပါ။ new document လုပ္ပါ။ date.php လို႔ နာမည္ေပးပါ။ ၿပီးရင္ ေအာက္က code ေတြအတုိင္း လိုက္ေရးၾကည့္ပါ။ <html> <head> <title> How many days in this month? </title> </head> <body> <?php date_default_timezone_set('Asia/Yangon'); $month = date('n'); if ($month == 1) { echo '31'; } if ($month == 2) { echo '28 (unless it's a leap year)'; } if ($month == 3) { echo '31'; } if ($month == 4) { echo '30'; } if ($month == 5) { echo '31'; } if ($month == 6) { echo '30'; } if ($month == 7) { echo '31'; } if ($month == 8) { echo '31'; } if ($month == 9) { echo '30'; } if ($month == 10) { echo '31'; } if ($month == 11) { echo '30'; } if ($month == 12) { echo '31'; } ?> </body> </html> rZÑdr pmay
  • 44. 44 PHP avScg;xpfrsm; ကၽြန္ေတာ္ ဒီစာအုပ္ေရးေနတဲ႔ အခ်ိန္က စက္တင္ဘာလ ျဖစ္တဲ႔အတြက္ 30 လို႔ ျပေနတာပါ။ How it works အရင္ဆံုးdate_default_timezone_set ဆိုတဲ႔ date function တစ္ခု နဲ႔ ကိုယ္ေရာက္ရွိေနတဲ႔ ေဒသေပၚမူတည္ၿပီး time zone သတ္မွတ္တာပါ။ အေမရိကား နယူးေယာက္ မွာဆုိရင္ ('America/ New_York') လို႔ သတ္မွတ္ရမွာပါ။ ကၽြန္ေတာ္တုိ႔ ေရးလိုက္တဲ႔ script က $month ဆိုတဲ႔ variable ကို ယူပါတယ္။ ၿပီးေတာ႔ PHP date function ေတြထဲက တစ္ခုျဖစ္တဲ႔ date('n') ဆိုတဲ႔ value နဲ႔ assign လုပ္ေပးလို္က္ပါတယ္။ ဒီ script က ဆာဗာ ရဲ႕ အခ်ိန္ကို ၾကည့္ပါတယ္။ ဒီေနရာမွာ တစ္ခု ေျပာခ်င္တာက date function ကိုက 1 for january , 2 for february စသျဖင္႔ သိပါတယ္။ ေတာ္ေနၾကာ ဘယ္က ဘယ္လို သိတာလဲ ဦးေဏွာက္စားေနမွာစိုးလို႔ပါ။ date function ကိုလည္း ေနာက္ပိုင္း အခန္းေတြမွာ အက်ယ္တ၀န္႔ ရွင္းပါဦးမယ္။ ဒီ script မွာ if statement သံုးၿပီး မွန္တဲ႔ အထိ စစ္ပါတယ္။ ပထမဆံုး if statement က False ျဖစ္သြားတယ္ဆုိရင္ေနာက္ ထပ္ statement တစ္ခုကို ခ်က္ျခင္းစစ္ပါတယ္။ ဒီလိုနဲ႔ True ျဖစ္တဲ႔အထိ စစ္ပါတယ္။ Using if and else together သူ႕ရဲ႕ပံုစံေလးကေတာ႔ ေအာက္ပါအတုိင္းျဖစ္ပါတယ္။ အက်ယ္တ၀န္႔ေတာ႔ မရွင္းေတာ႔ဘူးေလ။ တစ္ခု မဟုတ္ရင္ တစ္ခု ဆုိတဲ႔ အဓိပၸာယ္ရပါတယ္။ <?php $test = 5; if($test < 15) { echo 'The condition was met'; } else { echo 'The condition was not met'; } ?> rZÑdr pmay
  • 45. udkausmf 45 အထက္က ပရိုဂရမ္ေလးကို ၾကည့္မယ္ဆုိရင္ $test ဆိုတဲ႔ variable တန္ဖုိးကို 5 လို႔ သတ္မွတ္လိုက္တယ္။ ၿပီးေတာ႔ if statement နဲ႔ စစ္ၾကည့္လိုက္တယ္။ စစ္ၾကည့္တယ္ဆိုတာ ကိုယ္ output လုပ္ခ်င္တဲ႔ data အတြက္ ျဖစ္ပါတယ္။ $test က 15 ထက္ငယ္တယ္ဆုိရင္ The condition was met ကို ထုတ္ေပးမွာပါ။ မငယ္ဘူးဆုိရင္ေတာ႔ The condition was not met ဆိုတဲ႔ စာေၾကာင္းကို ထုတ္ေပးမွာပါ။ $test = 20 လို႔သာေပးခဲ႔မယ္ဆုိရင္ ဒုတိယ output ကို ထုတ္ေပးမွာပါ။ တကယ္လို႔ ကုိယ္ေပးခ်င္တဲ႔ message က အေျခအေန ၂ ခုထက္ပိုရင္ ဘယ္လိုလုပ္မလဲ ။ ရပါတယ္။ အဲဒိအခါမွာ if ရယ္ else ရယ္ၾကားမွာ else if ကို ထည့္သြင္း အသံုးျပဳႏိုင္ပါေသးတယ္။ ေအာက္က နမူနာေလးကို ေလ႔လာၾကည့္ရေအာင္။ <?php $age = 20; if($age < 18) { echo "Not old enough to vote or drink! <br />"; } else if ($age < 21) { echo "Old enough to vote, but not to drink. <br />"; } else { // If we get here, $age is >= 21 echo "Old enough to vote and drink! <br />"; } ?> အေပၚက code ကိုေလ႔လာၾကည့္ရင္ အသက္ ၁၈ ႏွစ္ေအာက္ဆုိရင္ vote or drink ၂ ခုလံုး လုပ္လို႔မရဘူး။ တကယ္လို႔ ၂၁ ႏွစ္ေအာက္ဆုိရင္ေတာ႔ ( ၁၈ ႏွစ္ နဲ႔ ၂၁ ႏွစ္ၾကားျဖစ္သြားတာေပါ႔) ေသာက္လုိ႔မရဘူး။ ေအာက္ဆံုး တစ္ခုက ေတာ႔ ၂ ခုလံုးလုပ္လုိ႔ရၿပီေပါ႔။ $age=20 ဆိုတဲ႔ ေနရာမွာ အသက္ အမ်ဳိးမ်ဳိးကို ေျပာင္းလဲ ေလ႔က်င္႔ၾကည့္ပါ။ rZÑdr pmay
  • 46. 46 PHP avScg;xpfrsm; While and do-while while loop က ဘယ္လို လုပ္ေပးလဲဆုိရင္ code block တစ္ခုကို True မျဖစ္မခ်င္း repeat လုပ္ေပးပါတယ္။ နမူနာေလးနဲ႔တြဲေလ႔လာလိုက္ရင္ ပိုနားလည္သြားမွာပါ။ <?php $i = 0; while($i<3) { echo "Count is at $i. <br />"; ++$i; } ?> အထက္ကပံုစံမွာဆုိရင္ ကၽြန္ေတာ္တုိ႔က counter variable $i ကို သံုးထားပါတယ္။ သူ႕ရဲ႕ ကနဦးတန္ဖုိးကို သုည 0 ေပးထားလိုက္ပါတယ္။ ေနာက္ၿပီးေတာ႔ while loop ထဲထည့္ သံုးလိုက္ပါတယ္။ ဘယ္ အေျခအေနထိ ဒီကုဒ္ ကို Run မွာလဲဆုိေတာ႔ <3 ထိ ပါ။ ဘယ္က စမွာလဲဆုိေတာ႔ သုည ကပါ။ while နဲ႔စစ္မယ္။ ပထမဆံုးက သုည ..အုိေက မွန္တယ္ ဘာျဖစ္လို႔လဲဆုိေတာ႔ 3 ထက္ငယ္တယ္ေလ။ ဒီေတာ႔ ပထမဆံုး output အေနနဲ႔ Count is at 0. ျဖစ္မယ္။ ဒုတိယအေနနဲ႔ 1 တတိယအေနနဲ႔ 2 အထိမွန္တယ္။ စတုတၳအေနနဲ႔ 3 ၾကေတာ႔ မမွန္ေတာ႔ဘူး။ ဘာျဖစ္လုိ႔လဲဆိုေတာ႔ <3 ဆိုတာ 3 နဲ႔ ညီလို႔မရဘူး။ ငယ္ကိုငယ္ရမွာ။ ဒီလိုမ်ဳိး ပထမက 0 ဒုတိယက 1 တတိယက 2 ဆိုတာ ဘယ္လို လုပ္ ကြန္ပ်ဴတာက သိလဲ။ ဟုတ္ကဲ႔... ++$i ဆိုတဲ႔ဟာနဲ႔ ေဖာ္ျပတာပါ။ ထြက္လာတဲ႔ တန္ဖုိးကုိ 1 ေပါင္း ေပးတာပါ။ ဒီ script ကို run လိုက္ရင္ Browser မွာ ဒီလို ေပၚမွာပါ။ Count is at 0. Count is at 1. Count is at 2 မွတ္ခ်က္။ သင္႔ အေနနဲ႔ မွတ္ထားရမွာက condition က မကိုက္ညီႏိုင္ဘူးဆုိရင္ loop က ex- cute လုပ္ေပးမွာ မဟုတ္ပါဘူး။ $i=4 ဆိုရင္ ဘာ output မွ ထြက္လာမွာမဟုတ္ပါဘူး။ rZÑdr pmay
  • 47. udkausmf 47 do-while loop <?php $i=10; do{ echo "The count is at $i."; ++$i; }while(i<5); ?> ဒီပံုစံမွာဆုိရင္ do ဆုိေတာ႔ လုပ္ပါေပါ႔။ ဘာလုပ္ခိုင္းလဲဆုိရင္ output အေနနဲ႔ $i value ကို ထုတ္ခိုင္းတယ္။ ၿပီးေတာ႔ while loop ကို ဆက္ဆင္းတယ္။ အဲဒိမွာၾကေတာ႔ ဘာ output မွ မထြက္ေတာ႔ဘူးေလ။ initial value ကိုက 10 ျဖစ္ေနၿပီ။ while မွာေပးထားတဲ႔ condition က < 5 ဆိုေတာ႔ ဘာ မွ ထြက္လာမွာမဟုတ္ဘူး။ Output အေနနဲ႔ The count is 10. ဆိုၿပီး ေပၚလာမွာပါ။ FOR loop for loop ဆိုတာ PHP program ရဲ႕ အသံုးမ်ားဆံုး statement ေတြထဲက တစ္ခု အပါ၀င္ျဖစ္ပါတယ္။ သူ႔ အေနနဲ႔ expression ၃ ခု ကို လက္ခံႏိုင္ပါတယ္။ Expression 1 အေနနဲ႔ loop ရဲ႕ အစ တန္ဖုိးကို ေဖာ္ျပတာျဖစ္ၿပီး Expression 2 အေနနဲ႔ကေတာ႔ expression 1 အေပၚအေျခခံကာ iteration method သံုးၿပီး တြက္ခ်က္မွာ ျဖစ္ပါတယ္။ True value ေတြကိုဘဲ တြက္မွာျဖစ္ၿပီး False ျဖစ္သြားတဲ႔အခါမွာ ရပ္သြားမွာျဖစ္ပါတယ္။ Expression 3 အေနနဲ႔ကေတာ႔ iteration တစ္ခုစီရဲ႕ end of iteration ျဖစ္ပါတယ္။ ဒီလိုေျပာေနေတာ႔ နည္းနည္း ရႈပ္သြားသလို ခံစားရမယ္။ မရႈပ္ဘူးေနာ္။ ေအာက္က နမူနာပံုစံေလးကိုၾကည့္လိုက္။ လြယ္မွလြယ္။ ေျပာဖုိ႔က်န္သြားတယ္။ Expression တစ္ခုစီမွာ အစိတ္အပိုင္း တစ္ခု ထက္မက ပါႏိုင္ပါတယ္။ ပါလာခဲ႔ရင္ comma (,) နဲ႔ ခံေပးရပါမယ္။ Expression တစ္ခုနဲ႔တစ္ခုၾကားမွာေတာ႔ semicolon (;) နဲ႔ ခံေရးေပးရပါတယ္။ rZÑdr pmay