PHP တွင် Hash_final () တွင် hash_init () နှင့် hash_update () နှင့်အသုံးပြုသောအခြေအနေများအပြီးတွင်အသုံးပြုသော function ကိုအသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်း၏ function သည် Data Stream ဆေးထည့်ပြီးနောက်နောက်ဆုံး hash တန်ဖိုးကိုထုတ်လုပ်ရန်ဖြစ်သည်။ သို့သော်၎င်း၏ခေါ်ဆိုမှုနည်းလမ်းနှင့်အသုံးပြုမှုမြင်ကွင်းသည်အတော်အတန်ရှုပ်ထွေးသောကြောင့် developer များသည်၎င်းကိုအသုံးပြုသောအခါအမှားအယွင်းများကိုမကြာခဏကြုံတွေ့ရတတ်ကြသည်။ ဤဆောင်းပါးသည် hash_final () အတွက် အသုံးများသောအမှားများနှင့်ဖြေရှင်းနည်းများကိုမိတ်ဆက်ပေးလိမ့်မည်။
$context = hash_init('sha256');
hash_update($context, 'example data');
echo hash_final($context);
echo hash_final($context); // အမှား!
အမှားအယွင်း - hash_final () ကိုခေါ်ပြီးနောက် Hash Conlext ကိုပိတ်ထားလို့မရဘူး။ ဤအခြေအနေကိုထပ်မံအသုံးပြုရန်ကြိုးစားခြင်းသည်အမှားတစ်ခုပြုလုပ်လိမ့်မည်။
ဖြေရှင်းချက် - အကယ်. သင် hash ရလဒ်ကိုအကြိမ်ကြိမ်ရရန်လိုအပ်ပါကသင်သည်ရှေ့နောက်စကားကိုကူးယူသင့်သည်။
$context = hash_init('sha256');
hash_update($context, 'example data');
$context_copy = hash_copy($context);
echo hash_final($context); // ပထမ ဦး ဆုံးအကြိမ်အသုံးပြုပါ
echo hash_final($context_copy); // မိတ္တူအခြေအနေကိုသုံးပါ
$context = hash_init('md5');
// အချို့သောအလယ်အလတ်ကုဒ်...
echo hash_final($wrong_context); // အမှား变量
အမှားအယွင်း - မမှန်ကန်ပါသို့မဟုတ်အရေးယူထားသောအခြေအနေအမျိုးမျိုးကိုအသုံးပြုခဲ့သည်။
ဖြေရှင်းချက် - hash_final () တွင်ဖြတ်သန်းသွားသော variable ကို () ကို hash_init () ဖြင့်ပြန်လည်ရောက်ရှိကြောင်းသေချာပါစေ။
$context = hash_init('sha1');
echo hash_final($context);
hash_update($context, 'some data'); // အားမရှိသော
အမှားအယွင်း - hash_final () ဟုခေါ်သောအခါ, အခြေအနေတွင်ဘဝသံသရာအဆုံးသတ်ခြင်းနှင့် Hash_update () ကို အသုံးမပြုနိုင်တော့ပါ။
ဖြေရှင်းချက် - hash_final () ကိုမခေါ်မီဒေတာအသစ်ပြောင်းခြင်းအားလုံးကိုပြီးစီးကြောင်းသေချာအောင်လုပ်ပါ။
api သို့မဟုတ် form ကဲ့သို့သောပြင်ပဒေတာများမှ ELH_INIT () သို့မဟုတ် hash_update () တွင်အမှားတစ်ခုရှိပါက hash_final () တွင်အမှားရှိပါကလည်းပျက်ကွက်သည်။
$context = @hash_init('nonexistent-algo'); // မအောင်မြင်ပေမယ့်မစစ်ဆေးပါ
hash_update($context, 'data');
echo hash_final($context); // 会触发警告或အမှား
ဖြေရှင်းချက် - Hash_ * function ကိုမသုံးမီနှင့်အပြီးတွင်သင့်တော်သောအမှားစစ်ဆေးခြင်းကိုထည့်ပါ။
$algo = 'sha256';
if (in_array($algo, hash_algos())) {
$context = hash_init($algo);
hash_update($context, 'data');
echo hash_final($context);
} else {
echo 'unsupported algorithms';
}
အချို့သော hashing algorithms အချို့ PHP ဗားရှင်းသို့မဟုတ်ဆာဗာ configurations များတွင်မရရှိနိုင်ပါ။
ဖြေရှင်းချက် - Hash_algos () ကို အသုံးပြု. algorithms စာရင်းကိုအမြဲတမ်းစစ်ဆေးပြီးသဟဇာတမဖြစ်နိုင်သည့် hard-coded တန်ဖိုးများကိုရှောင်ကြဉ်ပါ။ PHP ဗားရှင်းသို့မဟုတ် extensions များကိုအသစ်ပြောင်းခြင်းလည်းလိုအပ်သည်။
ဥပမာအားဖြင့်, ကျွန်ုပ်တို့သည်ဖိုင်အချို့တင်ပို့မှုကြီးများကိုလုပ်ဆောင်နေသည့်အခါ၎င်း၏သမာဓိကိုစစ်ဆေးရန်အတွက်ကျွန်ုပ်တို့သည်ဒေတာများကိုအတုံးများဖြင့်ဖတ်ရှုနိုင်ပြီး hash ကိုထုတ်လုပ်နိုင်သည်။
$context = hash_init('sha256');
$handle = fopen('/path/to/largefile.zip', 'rb');
while (!feof($handle)) {
$chunk = fread($handle, 8192);
hash_update($context, $chunk);
}
fclose($handle);
$hash = hash_final($context);
file_put_contents('https://gitbox.net/hashes.txt', $hash);
ဤကိစ္စတွင်မှန်ကန်တဲ့အမိန့်နှင့်အခြေအနေနှင့်ဆက်စပ်လုပ်ဆောင်မှုသည်အရေးပါသည်။