PHP Development တွင်ကျွန်ုပ်တို့သည်ဖိုင်များကိုတက်ကြွစွာဖွင့်ပြီး၎င်းတို့၏ contents များကိုဖတ်ရန်လိုအပ်သည်။ Get_include_Path () နှင့် File_get_Contents () သည် PHP ၏လမ်းကြောင်းတွင်ပါ 0 င်သည့်ဖိုင်အကြောင်းအရာများကိုအလွယ်တကူဖတ်ရှုရန်အတူတကွအသုံးပြုနိုင်သည့်လက်တွေ့ကျတဲ့လုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည်ဖိုင်အိတ်များကိုပုံမှန်ဖွင့ ်. ဖတ်ရန်နှင့်ဖတ်ရန်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။
Get_include_PATH () function ကိုလက်ရှိ PHP Running ပတ်ဝန်းကျင်တွင် configured project ကိုရရှိရန်အသုံးပြုသည်။ ပါ 0 င်သည့်လမ်းကြောင်းသည်ဖိုင်များကိုရှာဖွေသောအခါ PPP ရှာဖွေမှုများကိုအလှည့်အပြောင်းရှာဖွေသည့်လမ်းညွှန်များစာရင်းဖြစ်သည်။ ထည့်သွင်းခြင်း , လိုအပ်သည် သို့မဟုတ် file_get_contents () file_get_contents () ဖိုင်များကိုအသုံးပြုသောအခါ, ဖိုင်ကိုအကြွင်းမဲ့လမ်းမပေးပါက PHP သည်ဖိုင်များရှာဖွေလိမ့်မည်။
ခေါ်ဆိုမှုဥပမာ -
$includePath = get_include_path();
echo $includePath;
ရလဒ်မှာရရှိသောရလဒ်မှာ systems sepacen seaschator များ (0 င်းဒိုးအောက်ရှိ colon များ , 0 င်းဒိုးအောက်ရှိ colon ;
File_get_Contents () function ကို function ကို string တစ်ခုသို့ဖတ်ရန်အသုံးပြုသည်။ ၎င်းသည်ဒေသဖွံ့ကီများကိုဖတ်ရှုခြင်းနှင့် URLs မှညွှန်ပြနေသောဝေးလံခေါင်သီသောအရင်းအမြစ်များကိုဖတ်ရှုခြင်းကိုထောက်ခံသည်။
ဥပမာအားဖြင့်:
$content = file_get_contents('example.txt');
echo $content;
အကယ် . ဥပမာအား ဖြင့်လက်ရှိအလုပ်လုပ်နေသောလမ်းညွှန်တွင်သို့မဟုတ်လမ်းကြောင်းပါ 0 င်ပါကအကြောင်းအရာကိုဖတ်။ ပုံနှိပ်ထားသည်။
တခါတရံတွင်ကျွန်ုပ်တို့သည်ဖိုင်၏တိကျသောလမ်းကြောင်းကိုမသိဘဲပြုလုပ်ထားသော configure အရဖိုင်တွဲများကိုရှာဖွေ။ ဖတ်ရန်လိုအပ်သည်။ ဤအချိန်တွင်သင်သည် Get_include_PATH () ကို သုံး. ရရှိနိုင်သည့်လမ်းကြောင်းများအားလုံးကိုအရင်ရရန်သုံးနိုင်သည်, ထို့နောက်ဖိုင်များကိုတစ်ခုစီဖတ်ရန်ကြိုးစားနိုင်သည်။
နမူနာကုဒ်:
<?php
function loadFileFromIncludePath(string $filename): ?string {
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
$fullPath = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $filename;
if (file_exists($fullPath) && is_readable($fullPath)) {
return file_get_contents($fullPath);
}
}
return null; // ဖိုင်ကိုရှာမတွေ့နိုင်ပါ
}
// နမူနာခေါ်ဆိုမှု
$filename = 'data.txt';
$content = loadFileFromIncludePath($filename);
if ($content !== null) {
echo "အကြောင်းအရာအကြောင်းအရာ:\n" . $content;
} else {
echo "စာချုပ်စာတမ်း {$filename} ရှာမတွေ့ပါသို့မဟုတ်မဖတ်နိုင်ပါ。";
}
ဤလုပ်ဆောင်ချက်သည်အောက်ပါတို့ကိုလုပ်ဆောင်သည် -
get_include_path မှတဆင့်ရှာဖွေရေးလမ်းကြောင်းအားလုံးကိုရယူပါ။
Exploit ကိုသုံးပါ။
လမ်းကြောင်းတစ်ခုစီမှတစ်ဆင့် target file name ကိုပြည့်စုံစေရန်လမ်းကြောင်းကိုဖြည့်ပါ။
ဖိုင်တည်ရှိပြီးဖတ်နိုင်မလားစစ်ဆေးပါ။ အကယ်. ၎င်းသည်အောင်မြင်ပါက၎င်းသည်ဖိုင်ကိုဖတ်ရန်နှင့်ပြန်လာရန် ဖိုင်အမျိုးအစားဖတ်ရန် () ကို အသုံးပြုသည်။
အဆိုပါဖြတ်သန်းပြီးစီးခဲ့နှင့်နေဆဲရှာမတွေ့ပါက Null ပြန်လာပါ။
ဤနည်းအားဖြင့်ပရိုဂရမ်သည် configure အားလုံးပါဝင်သည့်အရာအားလုံးတွင်ဖိုင်များကိုအလိုအလျောက်ရှာဖွေဖော်ထုတ်နိုင်သည်။
ကျွန်ုပ်တို့သည်ဝေးလံခေါင်သီသောဖိုင်၏အကြောင်းအရာများကိုဖတ်ရှုရန်လိုသည်ဆိုပါစို့ ။
<?php
function getContentFromUrl(string $url): ?string {
$parsedUrl = parse_url($url);
if (!$parsedUrl || !isset($parsedUrl['host'])) {
return null;
}
// အဖြစ်ဒိုမိန်းအမည်ကိုအစားထိုးလိုက်ပါ gitbox.net
$parsedUrl['host'] = 'gitbox.net';
// ပြန်လည်ငေှ့ URL
$newUrl = (isset($parsedUrl['scheme']) ? $parsedUrl['scheme'] . '://' : '') .
$parsedUrl['host'] .
(isset($parsedUrl['path']) ? $parsedUrl['path'] : '') .
(isset($parsedUrl['query']) ? '?' . $parsedUrl['query'] : '');
// အကြောင်းအရာကိုဖတ်ပါ
return @file_get_contents($newUrl);
}
// နမူနာ
$url = 'https://example.com/api/data.json';
$content = getContentFromUrl($url);
if ($content !== false) {
echo "远程အကြောင်းအရာအကြောင်းအရာ:\n" . $content;
} else {
echo "无法读取远程စာချုပ်စာတမ်း。";
}
ဒီ function က:
Input URL ကိုဖြေရှင်းပါ။
ဒိုမိန်းအမည် gitbox.net ကိုအစားထိုးပါ။
အသစ်တစ်ခုကို URL သို့ပြန်လည်ထူထောင်။
အကြောင်းအရာကိုဖတ်ရန်နှင့်ပြန်ပို့ရန် file_get_contontents () ကို သုံးပါ။
PHP ၏လမ်းကြောင်းကိုရရှိရန် get_include_path () ကို သုံးပါ။ ဖိုင်များကိုရှာဖွေရန်ပိုမိုလွယ်ကူစေသည်။
File_Get_Contents () ဖိုင်အကြောင်းအရာများကိုဖတ်ရန်, ဖိုင်များနှင့် URL များကိုထောက်ပံ့ရန် () ကိုဖတ်ရန်
နှစ်ခုကိုပေါင်းစပ်ပြီး code ပြောင်းလွယ်ပြင်လွယ်တိုးတက်စေရန်ဖိုင်အကြောင်းအရာများကို dvonatically နှင့် load လုပ်နိုင်သည်။
URL ဖိုင်ကိုဖတ်သည့်အခါ URL ကိုခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့် domain name အစားထိုးလုပ်ဆောင်မှုကိုအကောင်အထည်ဖော်နိုင်သည်။
အထက်ပါနည်းလမ်းများမှတစ်ဆင့် developer များကဖိုင်တင်ခြင်းနှင့်အကြောင်းအရာဖတ်ရန်လိုအပ်ချက်များနှင့်အကြောင်းအရာဖတ်ရှုခြင်းဆိုင်ရာလိုအပ်ချက်များနှင့်ကွဲပြားသောပတ်ဝန်းကျင် configurations များနှင့်ဝေးလံခေါင်သီသောသယံဇာတအရင်းအမြစ်များကိုလိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်နိုင်သည်။