⊗ppPmAuHFP 426 of 447 menu

ფუნქცია password_hash

სინამდვილეში ფუნქცია md5 და პაროლის მარილდენა მისი გამოყენებით მოძველებულად ითვლება. ჩვენ მას ვსწავლობდით იმისთვის, რომ თქვენ გაგეგოთ შემდგომი მასალა, და ასევე იმიტომ, რომ თქვენ შეიძლება ამას შეხვდეთ სხვა პროექტებთან მუშაობისას.

არსებობს უფრო სრულყოფილი გზა მარილდებული პაროლის მისაღებად. ამისთვის გამოიყენება ფუნქცია password_hash. პირველ პარამეტრად ის იღებს სტრიქონს, ხოლო მეორედ - დაშიფვრის ალგორითმს (ამაზე შემდგომ), და აბრუნებს ამ სტრიქონის ჰეშს მარილთან ერთად.

სცადეთ რამდენჯერმე გაუშვათ ეს კოდი:

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

თქვენ ყოველ ჯერზე მიიღებთ განსხვავებულ შედეგს და ამ შედეგში პირველი ნაწილი იქნება მარილი, ხოლო მეორე ნაწილი - მარილდებული პაროლი.

დავუშვათ, გვაქვს ჰეში, მიღებული ფუნქციიდან password_hash და რაღაც პაროლი. რათა შევამოწმოთ, ეს არის ამ პაროლის ჰეში თუ არა, უნდა გამოვიყენოთ ფუნქცია password_verify - პირველ პარამეტრად ის იღებს პაროლს, ხოლო მეორედ - ჰეშს, და აბრუნებს true ან false.

შევხედოთ მაგალითს:

<?php $password = '12345'; // პაროლი $hash = '$2y$10$xoYFX1mFPxBSyxaRe3iIRutxkIWhxGShzEhjYUVd3qpCUKfJE1k7a'; // ჰეში if (password_verify($password, $hash)) { // ჰეში ამ პაროლისგან } else { // ჰეში არაა ამ პაროლისგან } ?>

რას გვაძლევს ეს პრაქტიკაში: ჩვენ შეგვიძლია არ შევქმნათ ბაზაში ცალკე ველი მარილის შესანახად, არ ვიღაზათ მარილის გენერირებით - PHP ყველაფერს გააკეთებს ჩვენთვის!

ანუ გამოვა, რომ მონაცემთა ბაზაში ველში password ჩვენ ვინახავთ მარილდებულ პაროლს მის მარილთან ერთად. ამ შემთხვევაში ჰეშირებულ პაროლს ექნება მეტი სიგრძე. ამიტომ მონაცემთა ბაზაში ჩვენ უნდა შევასწოროთ ზომა პაროლის ველის და დავაყენოთ ის 60 სიმბოლოზე.

ახლა მოდით შევასწოროთ რეგისტრაციის კოდი. აი, რა გვაქვს ამჟამად:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // მარილის სიგრძე for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // სიმბოლო ASCII-table-დან } return $salt; } $salt = generateSalt(); // მარილი $password = md5($salt . $_POST['password']); // პაროლის გადაქცევა მარილდებულ ჰეშად ?>

password_hash-ის გამოყენებით ჩვენ ამას შევამცირებთ:

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

ანალოგიურად შესწორდება ავტორიზაციის კოდი:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; // მომხმარებლის მიღება ლოგინით $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $hash = $user['password']; // მარილდებული პაროლი ბაზიდან // ვამოწმებთ ჰეშის შესაბამისობას ბაზიდან შეყვანილ პაროლთან if (password_verify($_POST['password'], $hash)) { // ყველაფერი კარგადაა, ავტორიზაცია... } else { // პაროლი არ შეუსაბამო, გამოვიტანოთ შეტყობინება } } else { // ასეთი ლოგინის მომხმარებელი არ არის, გამოვიტანოთ შეტყობინება } ?>

გადააკეთეთ თქვენი ავტორიზაცია და რეგისტრაცია ახალ შესწავლილ ფუნქციებზე.

ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČ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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა