Tuesday, June 12, 2012

object ေတြကို javascript သံုးျပီးဖန္တီးမယ္

ဆိုက္ေတြတည္ေဆာက္ရတာေကာင္းပါတယ္ဒါေပမယ္႔ admin panel လိုမ်ိဳးကို အျခားလူေတြကိုျမင္ေစခ်င္မွာမဟုတ္ပါဘူး
ဒါေၾကာင္႔ ဒီ tutorial မွာ site ကို password protect လုပ္နည္းေလးကိုေဖာ္ျပေပးသြားမွာပါ
ဒီလိုအသံုးျပဳဖို႔နည္းလမ္းနွစ္ခုရွိပါတယ္
ပထမ နည္းလမ္းကေတာ႔ ဆိုက္ကို access လုပ္တဲ႔ user ေတြကို database ကိုအသံုးျပဳခြင္႔ေပးတာပါ
အျခားနည္းတစ္ခုကေတာ႔ variable ေတြကို pre-define လုပ္ျပီး ေပးထားတဲ႔ value ေတြနဲတူမတူစစ္တာပါပဲ႔
ဒီ tutorial မွာေတာ႔အေျခခံေလးေတြကိုပဲေရးထားတာပါ ကၽြန္ေတာ္လည္းသိပ္ျပီးမကၽြမ္းပါဘူးဟီး
သင္႔ရဲ႕ site configuration မွာ variable ေတြကို store လုပ္ျပီးအသံုးျပဳရန္
တနည္းအားျဖင္႔ config လို႔ေခၚပါတယ္
ဥပမာ config.php

<?php           //config.php
$users[0]['name']='cyberoot';
$users[0]['password']='hacker625';
$users[1]['name']='root';
$users[1]['password']='hacker625';
?>
 
 ဒီဆိုက္က သူတို႔ရဲ႕ password ကိုအသံုးျပဳျပီး users array ကိုသံုးထားတာ သင္သတိျပဳမိသလား
ျပီးေတာ႔ ကၽြန္ေတာ္တို႔ html form တစ္ခုလုပ္ဖို႔လိုေနပါျပီ
<form method="post" action="index.php">
Username:<input type="text" name="user"/>
Password:<input type="password" name="password"/> 
<input type="submit" value="Login " name="login"/>
 
အေပၚကကုတ္ကေတာ႔ရိုးရွင္းတဲ႔ ့html form ပံုစံပါ
ဒါကို login script အတြက္ အသံုးမ်ားပါတယ္
ကိုယ္ေပးထားတဲ႔ username and password ကိုအသံုးျပဳျပီး
site ထဲကို login ၀င္လို႔ရပါတယ္
php site အတြက္ဆိုရင္ အလုပ္လုပ္ဖို႔ php code အနည္းငယ္ကိုထပ္ထည္႔ရဦးမွာပါ
ဒီလိုေလးဆက္ေရးရေအာင္

<?php //index.phpဖိုင္ပါ
session_start();        // php session တစ္ခုကိုစတင္လိုက္တာပါ
$error='';      //error ဆိုတဲ႔ variable တစ္ခုကိုေၾကျငာလိုက္တာပါ
require('config.php');   //config.php ဆိုတာကို require funciton သံုးျပီး ေခၚသံုးတာပါ
if(isset($_POST) && !empty($_POST)){
function post($value){
$value=is_array($value) ? array_map('post',$value):stripslashes($value);
return $value;
}
if(get_magic_quotes_gpc()){
$_POST=post($_POST);
}
}
/*user validation upon login*/
if(isset($_POST['login'])){
for($i=0;$i<count($users);$i++){
if($_POST['user']==$users[$i]['name'] && $_POST['password']==$users[$i]['password']){
$_SESSION['user']=$_POST['user'];
break;
}
}
if(!isset($_SESSION['user'])){
$error='Access denied. Please Try Again';
}
}
                 /* display login or success screen */
if(!isset($_SESSION['user']))
{
echo <<< DATA<form method="post" action="">
Username:<input type="text" name="user"/>
Password:<input type="password" name="password"/>
<input type="submit" value="login" name="login"/>
DATA;
echo "\n" .$errorr;       //error ျပရန္
}
else
{
echo 'you ar login in ' .$_SESSION['user'];
unset($_SESSION['user']);       // log out
}
 Ok! scirpt အၾကီးၾကီးတစ္ခုက အလုပ္ေသးေသးေလးလုပ္နိုင္တယ္ဆိုေပမယ္႔ password 
ကို သံုးျပီး  php file ကိုအသံုးျပဳတဲ႔ login script 
အတြက္ေတာ႔ယူဆခ်က္ကေတာ႔အတူတူပါပဲ႔
require('config.php') ဆိုတဲ႔ဟာကို  ဖိုင္ရဲ႕ အေပၚနားမွာသတိထားမိမွာပါ
ဒါက require ဆိုပဲ႔  function ကိုသံုးျပီး config.php ကိုျပန္ေခၚထားတာပါ
ေနာက္တစ္ခန္းကေတာ႔ magic quotes ေရးထားပါ
developer အမ်ားစုကေတာ႔ အဲဒီအပိုင္းကို မေရးၾကပါဘူး ဒီလိုေရးရတဲ႕ရည္ရြယ္ခ်က္ကေတာ႔ php မွာ bug လုပ္လို႔အဆင္ေျပေအာင္ပါ
megic quotes ကဘာျဖစ္လဲဆိုေတာ႔ သင္က variable ကို php သို႔ method="post" 
သံုးျပီး Post လုပ္တဲ႔အခါ \' and \"  backslash နဲ႔အတူ  ' and " ဆိုတဲ႔ 
symbols ဆိုတဲ႔ ဟာကို process လုုပ္မွာပါ
ဒါေၾကာင္႔ကၽြန္ေတာ္တို႔  slashes ဆိုတာကို remove လုပ္ဖို႔ slashes function ကို strip အျဖစ္အသံုးျပဳဖို႔လိုပါတယ္
သို႔ေသာ္လည္းပဲ႔ web server host အခ်ိဳ႕မွာေတာ႔ magic quotes ကိုသင္႔အတြက္ 
disable လုပ္ထားတတ္ပါတယ္ျပီးေတာ႔ အျခား php versions သံုးတဲ႔ host 
အခ်ိဳ႔မွာလည္းအဲဒီ magic quotes ကို ပိုျပီး ရွပ္ေထြးခက္ခဲ႔ေစတဲ႔အတြက္ 
support မလုပ္ပါဘူး
ဒါေၾကာင္႔ if statement ကို slashes ရွိလားမရွိဘူးလားဆိုတာစစ္ဖို႔ အသံုးျပဳရမွာပါ
အခုဆိုရင္ validation အတြက္ပါ. form ကို submit လုပ္ခဲ႔မယ္ဆိုရင္ ပထမဆံုး 
vaildation ကိုမလုပ္မီ ကၽြန္ေတာ္တို ႔ check လုပ္ဖို႔လိုအပ္ပါတယ္
ဒီလိုလုပ္ဖိုအတြက္ html form ထဲက submit button မွာ name="name"  or  
name="login" ဆိုျပီး ရိုးရိုးေလးနာမည္ေပးခဲ႔တာပါျပီးေတာ႔ ဒါက form ကို 
submit လုပ္ခဲ႔တာကို ၾကည္႔ဖို႔ if statement ကို ျဖတ္ျပီး Process 
လုပ္မွာပါဒါေၾကာင္႔ post မလုပ္ခဲ႔ဘူးဆိုရင္ ေနာက္တစ္ခုကိုဆက္လုပ္ဖို႔ 
မျဖစ္နိုင္ပါဘူး
အကယ္ရွ္ $_POST['login'] ဆိုတဲ႔  form ကို posted လုပ္ခဲ႔မယ္ဆိုရင္  variable ရွိလားဆိုတာ isset() function က စစ္မွာပါ
if statement ျပီးတဲ႔ေနာက္ for loop ကို validate ဆက္လုပ္မွာပါ
for loop ကိုကၽြန္ေတာ္တို႔ေလ႔လာရင္ လြယ္ပါတယ္ဒါေပမယ္႔  လူအမ်ားစုကေတာ လိုအပ္တာထက္ပိုျပီးေလ႔လာဖို႔ ခက္ေနတတ္ပါတယ္
for loop လို အလြယ္ကူဆံုးနည္းလမ္းတစ္ခု ျဖစ္တဲ႔  while loop ကလည္း နံပါတ္ေတြနဲ႔အလုပ္လုပ္တဲ႔အခါ cup consumption ကိုေလွ်ာ႔နည္းေစပါတယ္
ဟုတ္ျပီ ဒါဆိုရင္ for loop အစား while loop ကို ေအာက္ပါအတိုင္းစမ္းၾကည္႔ရေအာင္
 
 $i=0;
while($i<coun($users)){
if($_POST['user']==$users[$i]['name']&&$_POST['password']==$users[$i]['password']){
$_SESSION['user']=$_POST['user'];
break;
}
$i++;
}
ကဲ႔ ကြာျခားခ်က္ေလးကိုသိျပီမဟုတ္လား
     
     
 

No comments:

Post a Comment

Thanks for your comments
Welcome from cyberoot