မှတ်တမ်းခွဲခြမ်းစိတ်ဖြာခြင်းကိုဖျော်ဖြေတင်ဆက်သည့်အခါများသောအားဖြင့် IP လိပ်စာများ၏ဖြစ်ပျက်မှုနှုန်းကိုရေတွက်ရန်လိုအပ်သည်။ PHP သည်ထိုကဲ့သို့သောလုပ်ငန်းများကိုကိုင်တွယ်ရန်ကူညီရန်အစွမ်းထက်သော built-in functions များစွာကိုထောက်ပံ့ပေးသည်။ ယနေ့ကျွန်ုပ်တို့ IP တစ်ခုချင်းစီ၏ဖြစ်ပျက်မှုနှုန်းကိုရေတွက်ရန် array_count_values function ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးပါမည်။ ဤတွင် function ကိုမည်သို့အသုံးပြုရမည်ကိုဖေါ်ပြသည့်နမူနာကုဒ်ဖြစ်သည်။
ပထမ ဦး စွာမှတ်တမ်း၏ဖွဲ့စည်းပုံကိုကြည့်ကြပါစို့။ ကျွန်ုပ်တို့တွင် log file တစ်ခုရှိသည်ဆိုပါစို့, လိုင်းတစ်ခုစီသည်လက်လှမ်းမီမှုတောင်းဆိုမှုကိုအောက်ပါအတိုင်းဖော်ပြထားသည်။
2025-04-17 12:34:56 192.168.1.1 /home
2025-04-17 12:35:00 192.168.1.2 /about
2025-04-17 12:36:01 192.168.1.1 /contact
2025-04-17 12:37:02 192.168.1.3 /home
2025-04-17 12:38:05 192.168.1.1 /blog
အထက်ပါမှတ်တမ်းသည် visit ည့်သည်တစ် ဦး စီ၏ IP လိပ်စာနှင့်ဝင်ရောက်ရန်စာမျက်နှာလမ်းကြောင်းကိုမှတ်တမ်းတင်ထားသည်။ ကျွန်ုပ်တို့၏ရည်မှန်းချက်မှာ LOG တွင် IP လိပ်စာတစ်ခုစီသည်မည်မျှမကြာခဏပေါ်လာသည်ကိုရေတွက်ရန်ဖြစ်သည်။
ကျွန်ုပ်တို့သည် log file ၏အကြောင်းအရာကို PHP သို့ပထမဆုံးဖတ်ရန်လိုအပ်သည်။ ၎င်းသည် File functions (သို့) file_get_contents များကို သုံး. အကောင်အထည်ဖော်နိုင်သည်။
<?php
// မှတ်တမ်းဖိုင်များကိုဖတ်ပါ
$log = file('path_to_log_file.log');
?>
ထို့နောက်ကျွန်ုပ်တို့သည်လိုင်းတစ်ခုစီမှ IP လိပ်စာကိုထုတ်ယူရန်လိုအပ်သည်။ Row တစ်ခုစီ၏ IP address ကိုမှတ်တမ်းတင်ထားသောဒုတိယနေရာတွင်မှတ်တမ်းတင်ထားကြောင်းယူဆရသည့်အတိုင်းအတန်းတစ်ခုစီ၏အကြောင်းအရာများကို exploit function မှတဆင့်ဝေမျှနိုင်သည်။ ထို့နောက် IP address ကိုထုတ်ယူပါ။
<?php
// အချည်းနှီးသောခင်းကျင်းစတိုးကိုအစပြုပါ IP စကားပေြာဟော
$ips = [];
foreach ($log as $line) {
// နေရာတစ်ခုစီကိုနေရာများနှင့်ခွဲပါ,ယူဆချက် IP ဒုတိယလယ်ကွင်းပါ
$parts = explode(' ', $line);
// သေတမ်းစာ IP စကားပေြာဟော添加到数组中
$ips[] = $parts[1];
}
?>
IP address များအားလုံးကို Extract ပြီးတာနဲ့ PHP ၏ Array_Count_Valuates function ကိုသုံးနိုင်သည်။
<?php
// စာရင်းအင်း IP စကားပေြာဟော出现的频率
$ip_counts = array_count_values($ips);
// ရလဒ်ရလဒ်
foreach ($ip_counts as $ip => $count) {
echo "IP: $ip - Count: $count\n";
}
?>
အောက်ပါမှတ်တမ်းရှိလျှင်
2025-04-17 12:34:56 192.168.1.1 /home
2025-04-17 12:35:00 192.168.1.2 /about
2025-04-17 12:36:01 192.168.1.1 /contact
2025-04-17 12:37:02 192.168.1.3 /home
2025-04-17 12:38:05 192.168.1.1 /blog
အထက်ပါ PHP ကုဒ်ကိုအသုံးပြုပြီးနောက် output သည် -
IP: 192.168.1.1 - Count: 3
IP: 192.168.1.2 - Count: 1
IP: 192.168.1.3 - Count: 1
ကျွန်ုပ်တို့၏မှတ်တမ်းတွင် URLs များပါ 0 င်ပါဟုဆိုပါစို့။ ဤ URL ၏ဒိုမိန်းများ၏အမည်များကို M66.net ဖြင့်အစားထိုးရန်လိုအပ်သည်။ ၎င်းကိုအကောင်အထည်ဖော်ရန် strow_replace function ကိုသုံးနိုင်သည်။