學過 PHP 的人應該都知道不能把密碼直接存到資料庫裡,會需要透過一個 hash 再存進去,當然最多人知道(也是很不安全的作法)就是使用 md5,那現在我們就來用另一種方法:password_hash 與 password_verify 來作加密以及驗證,就會是比較好的方法。
首先把使用者輸入的密碼透過 password_hash 的方式加密:
$hash = password_hash('your_password', PASSWORD_DEFAULT);
處理完後會產生一組很像亂碼的東西,如果是輸入 12345 則會產生這個內容:
$2y$10$JOO/SKu8G96OCM1qcPLUPut/L/SMVoy3XBZNJ.BFP1/VCFTosf5GS
這個每次產生都不一樣,那我們如果要檢查密碼是否正確,則要透過 password_verify 的方式
$hash = 經過password_hash加密過的字串; if (password_verify('your_password', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; }
實作上就是把存到資料庫的那個字串丟進去,再和使用者輸入的密碼做比對,如果比對成功就代表密碼是正確的。
詳細文件說明: