ဖိုင်ပေါင်းစည်းမှုကိုသေချာစေရန်သေချာသည် (software ဖြန့်ဖြူးရေးပစ္စည်းများ, စာရွက်စာတမ်းများ, မီဒီယာများ, မီဒီယာအရင်းအမြစ်များစသည်) ။ ထိရောက်သောနည်းလမ်းမှာဖိုင်တစ်ခုစီအတွက် MD5 လက်မှတ်ကိုထုတ်လုပ်ပြီးနောက်ဆက်တွဲ checksum ပြောင်းလဲမှုရှာဖွေတွေ့ရှိမှုအတွက်ဒေတာဘေ့စ်တွင်သိမ်းဆည်းရန်ဖြစ်သည်။ PHP သည် MD5_File () သည် MD5_File () သည်ဖိုင်တစ်ခု၏ MD5 checksum ကိုတိုက်ရိုက်ပြန်ပို့နိုင်သည့် MD5_File () ကိုထောက်ပံ့ပေးသည်။
ဤဆောင်းပါးသည် MD5_File () ကို အသုံးပြုနည်း () ကို local file များအတွက်လက်မှတ်များထုတ်လုပ်ရန်နှင့်ပြီးပြည့်စုံသောဖိုင်အတည်ပြုသည့်ဒေတာဘေ့စ်ကိုတည်ဆောက်ရန်မိတ်ဆက်ပေးလိမ့်မည်။
သင်မစတင်မှီသင်၏ဆာဗာသို့မဟုတ်ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်သည် PHP တပ်ဆင်ထားပြီးဖိုင်စနစ်ဝင်ရောက်ခွင့်ရှိကြောင်းသေချာအောင်လုပ်ပါ။ ကျွန်ုပ်တို့သည်ရိုးရှင်းသော PHP script ကို directory ရှိဖိုင်များအားလုံးကိုရှာဖွေရန်ဥပမာတစ်ခုအဖြစ်အသုံးပြုပါမည်။
အောက်ဖော်ပြပါသည် SQLite ဒေတာဘေ့စ်သို့စာရေးရန် PDO ကိုအသုံးပြုသောအပြည့်အဝနမူနာဇာတ်ညွှန်းဖြစ်သည်။ ၎င်းကို MySQL, Postgresql နှင့်အခြားဒေတာဘေ့စ်များနှင့်လည်းအစားထိုးနိုင်သည်။
<?php
$directory = __DIR__ . '/files';
$dbFile = __DIR__ . '/checksum.db';
$pdo = new PDO('sqlite:' . $dbFile);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// ဒေတာဘေ့စ်ကိုစတင်ပါ
$pdo->exec("CREATE TABLE IF NOT EXISTS file_checksums (
id INTEGER PRIMARY KEY AUTOINCREMENT,
path TEXT UNIQUE,
md5 TEXT,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
)");
// directory ကိုစကင်ဖတ်စစ်ဆေးပြီးဖိုင်ကိုလုပ်ဆောင်ပါ
function scanFiles($dir, $pdo) {
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
foreach ($files as $file) {
if ($file->isFile()) {
$path = $file->getRealPath();
$md5 = md5_file($path);
$stmt = $pdo->prepare("INSERT INTO file_checksums (path, md5)
VALUES (:path, :md5)
ON CONFLICT(path) DO UPDATE SET md5 = :md5, updated_at = CURRENT_TIMESTAMP");
$stmt->execute([
':path' => $path,
':md5' => $md5,
]);
echo "လုပ်ဆောင်နေသည်:$path\n";
}
}
}
scanFiles($directory, $pdo);
echo "File Signature မျိုးဆက်ပြီးစီးခဲ့သည်。\n";
ထို့နောက်သင် script ကိုထပ်မံလည်ပတ်နိုင်ပြီး၎င်းသည်ဒေတာဘေ့စ်တွင်ရှိပြီးသားဖိုင်မှတ်တမ်းများကိုအလိုအလျောက်မွမ်းမံပါလိမ့်မည်။ လက်ရှိဖိုင်၏ MD5 ၏ MD5 သည်ဒေတာဘေ့စ်တွင်မှတ်တမ်းတင်ထားသော MD5 တန်ဖိုးနှင့်ကိုက်ညီမှုရှိမရှိကိုနှိုင်းယှဉ်ရန်လွတ်လပ်သောစိစစ်ဇာတ်ညွှန်းကိုလည်းသင်ဖန်တီးနိုင်သည်။
<?php
$directory = __DIR__ . '/files';
$dbFile = __DIR__ . '/checksum.db';
$pdo = new PDO('sqlite:' . $dbFile);
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
foreach ($files as $file) {
if ($file->isFile()) {
$path = $file->getRealPath();
$currentMd5 = md5_file($path);
$stmt = $pdo->prepare("SELECT md5 FROM file_checksums WHERE path = :path");
$stmt->execute([':path' => $path]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row) {
if ($row['md5'] !== $currentMd5) {
echo "ဖိုင်ကိုပြုပြင်ပြီးပြီ:$path\n";
}
} else {
echo "ဖိုင်အသစ်:$path\n";
}
}
}
ခွင့်ပြုချက်ထိန်းချုပ်မှု - ဖိုင်များနှင့်ဒေတာဘေ့စ်များ၏ဖတ်ရန်နှင့်ရေးရန်ခွင့်ပြုချက်များကိုမှန်ကန်စွာပြုပြင်ရန်သေချာစေပါ။
Periodic run : လက်မှတ်ထိုးအပ်သော UPDATE သို့မဟုတ်စိစစ်အတည်ပြုထားသော scripts များကို Cron Timing Tasks မှတဆင့်ပုံမှန်လည်ပတ်နိုင်သည်။
Remote Verification : ဖိုင်သမာဓိကိုအဝေးမှအတည်ပြုရန်လိုအပ်ပါက, <code> httpps: //m66.net/api/api/api/api/api/api/api/api/api/api/api/apipoad_md5 ကဲ့သို့သော interface မှတဆင့်ဆာဗာသို့ထုတ်လုပ်သောလက်မှတ်ကိုတင်နိုင်သည်။
MD5_File () နှင့်ဒေတာဘေ့စသိုလှောင်မှုကိုပေါင်းစပ်ခြင်းအားဖြင့်သင်သည်ထိရောက်သောတည်ငြိမ်သောဖိုင်သမာဓိစစ်ဆေးမှုယန္တရားကိုအလွယ်တကူတည်ဆောက်နိုင်သည်။ ဤနည်းလမ်းသည် local file monitoring, system လုံခြုံရေးစာရင်းစစ်ဆေးခြင်း, ဖြန့်ကျက်သည့်အလိုအလျောက်တိုးတက်စေရန်အတွက်သင့်တော်သည်။