⊗ppPmAuHFP 426 of 447 menu

password_hash funksiyasi

Əslində md5 funksiyası və onun köməyi ilə parolun duzlanması köhnəlib sayılır. Biz onu öyrəndik ki, sonrakı materialı başa düşəsiniz, həmçinin ona görə ki, başqalarının layihələri ilə işləyərkən bununla qarşılaşa bilərsiniz.

Duzlu parol əldə etmək üçün daha mükəmməl bir üsul var. Bunun üçün password_hash funksiyası istifadə olunur. İlk parametr kimi o, sətiri qəbul edir, ikinci parametr isə şifrələmə alqoritmidir (bu barədə sonra), və həmin sətrin hash-ini duzla birlikdə qaytarır.

Bu kodu bir neçə dəfə işə salmağa çalışın:

<?php echo password_hash('12345', PASSWORD_DEFAULT); ?>

Hər dəfə fərqli nəticə alacaqsınız və bu nəticədə sətrin birinci hissəsi duz, ikinci hissəsi isə duzlu parol olacaq.

Tutaq ki, bizdə password_hash funksiyasından alınmış bir hash və hansısa bir parol var. Bunun həmin parolun hash-i olub-olmadığını yoxlamaq üçün password_verify funksiyasından istifadə etmək lazımdır - ilk parametr kimi o, parolu qəbul edir, ikinci parametr isə hash-dir, və true ya da false qaytarır.

Gəlin nümunəyə baxaq:

<?php $password = '12345'; // parol $hash = '$2y$10$xoYFX1mFPxBSyxaRe3iIRutxkIWhxGShzEhjYUVd3qpCUKfJE1k7a'; // hash if (password_verify($password, $hash)) { // bu parolun hash-i } else { // hash bu paroldan deyil } ?>

Bu, praktikada bizə nə verir: biz verilənlər bazasında duzu saxlamaq üçün ayrıca bir sahə yaratmaya, bu duzu yaratmaqla məşğul olmaya ehtiyac duymuruq - PHP hər şeyi bizim üçün edəcək!

Yəni belə çıxır ki, verilənlər bazasında password sahəsində biz duzlu parolu onun duzu ilə birlikdə saxlayacayıq. Eyni zamanda, hash-lənmiş parol daha böyük uzunluğa malik olacaq. Ona görə də verilənlər bazasında parol sahəsinin ölçüsünü düzəltməli və onu 60 simvol təyin etməliyik.

İndi gəlin qeydiyyat kodunu düzəldək. Budur, hazırda olan:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // duzun uzunluğu for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // ASCII cədvəlindən simvol } return $salt; } $salt = generateSalt(); // duz $password = md5($salt . $_POST['password']); // parolu duzlu hash-ə çeviririk ?>

password_hash köməyi ilə biz bunu buna qədər qısaldarıq:

<?php $password = password_hash($_POST['password'], PASSWORD_DEFAULT); ?>

Eyni şəkildə avtorizasiya kodu da düzəldiləcək:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; // istifadəçini logina görə alırıq $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $hash = $user['password']; // VB-dən duzlu parol // Bazadan olan hash-in daxil edilmiş parola uyğunluğunu yoxlayırıq if (password_verify($_POST['password'], $hash)) { // hər şey qaydasında, avtorizasiya edirik... } else { // parol uyğun gəlmədi, mesaj çıxardarıq } } else { // belə bir login ilə istifadəçi yoxdur, mesaj çıxardarıq } ?>

Avtorizasiya və qeydiyyatınızı yeni öyrənilmiş funksiyalara uyğun olaraq dəyişdirin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et