⊗ppPmAuHFP 426 of 447 menu

Funksioni password_hash

Në fakt, funksioni md5 dhe kripja e fjalëkalimit me ndihmën e tij konsiderohet i vjetëruar. E kemi studiuar atë në mënyrë që ju të kuptoni materialin e mëtejshëm, dhe gjithashtu sepse mund të hasni në të duke punuar me projekte të huaja.

Ekziston një mënyrë më e përsosur për të marrë një fjalëkalim të kripur. Për këtë përdoret funksioni password_hash. Si parametër të parë ai pranon një varg, dhe si të dytë - algoritmin e enkriptimit (për të më vonë), dhe kthen hash-in e atij vargu së bashku me kripën.

Provoni ta ekzekutoni këtë kod disa herë:

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

Çdo herë do të merrni një rezultat të ndryshëm dhe në këtë rezultat pjesa e parë e vargut do të jetë kripja, kurse pjesa e dytë - fjalëkalimi i kripur.

Le të themi se kemi një hash, të marrë nga funksioni password_hash dhe një fjalëkalim. Për të kontrolluar nëse ky është hash i atij fjalëkalimi apo jo, duhet përdorur funksioni password_verify - si parametër të parë ai merr fjalëkalimin, kurse si të dytë - hash-in, dhe kthen true ose false.

Le të shohim një shembull:

<?php $password = '12345'; // fjalëkalimi $hash = '$2y$10$xoYFX1mFPxBSyxaRe3iIRutxkIWhxGShzEhjYUVd3qpCUKfJE1k7a'; // hash-i if (password_verify($password, $hash)) { // hash nga ky fjalëkalim } else { // hash jo nga ky fjalëkalim } ?>

Çfarë na jep kjo në praktikë: ne mund të mos krijojmë në bazën e të dhënave një fushë të veçantë për ruajtjen e kripës, të mos shqetësohemi me gjenerimin e asaj kripe - PHP do të bëjë gjithçka për ne!

Kjo do të thotë se në bazën e të dhënave në fushën password ne do të ruajmë fjalëkalimin e kripur së bashku me kripën e tij. Në këtë rast, fjalëkalimi i hash-uar do të ketë një gjatësi më të madhe. Prandaj në bazën e të dhënave duhet të korrigjojmë madhësinë e fushës së fjalëkalimit dhe ta vendosim atë në 60 karaktere.

Tani le të korrigjojmë kodin e regjistrimit. Ja çfarë kemi tani:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // gjatësia e kripës for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // karakter nga ASCII-table } return $salt; } $salt = generateSalt(); // kripja $password = md5($salt . $_POST['password']); // e shndërrojmë fjalëkalimin në hash të kripur ?>

Me ndihmën e password_hash ne do ta zvogëlojmë këtë në:

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

Në mënyrë të ngjashme do të korrigjohet edhe kodi i autorizimit:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; // marrim përdoruesin sipas emrit të përdoruesit $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $hash = $user['password']; // fjalëkalimi i kripur nga DB // Kontrollojmë përputhjen e hash-it nga bazë me fjalëkalimin e futur if (password_verify($_POST['password'], $hash)) { // gjithçka në rregull, autorizojmë... } else { // fjalëkalimi nuk përputhet, do të shfaqim një mesazh } } else { // nuk ka përdorues me këtë emër përdoruesi, do të shfaqim një mesazh } ?>

Riktheni autorizimin dhe regjistrimin tuaj me funksionet e reja të studiuara.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo