شرح صفوف ومحتوى الفقرة
لمصادقة المستخدم، اجلب السجل المطابق للبريد الموحد عبر استعلام PDO محضر، ومرر التجزئة المخزنة إلى الدالة password_verify($inputPassword, $user["password_hash"]).
- لا تضع كلمة المرور أبداً داخل شرط
WHEREفي SQL؛ بل اجلب السجل بالبريد أولاً ثم تحقق من التجزئة في PHP. - تستخرج دالة
password_verify()الملح وخوارزمية التجزئة من النص المخزن تلقائياً. - افحص
password_needs_rehash()بعد نجاح الدخول لترقية معامل التكلفة القديم تلقائياً.
ترجع password_verify() القيمة true عندما تتطابق كلمة المرور المدخلة مع التجزئة المخزنة.
PHP
<?php
$storedUser = [
'id' => 42,
'email' => '[email protected]',
'password_hash' => password_hash('Correct#Pass9', PASSWORD_DEFAULT),
];
$inputPass = 'Correct#Pass9';
if ($storedUser && password_verify($inputPass, $storedUser['password_hash'])) {
echo "Authenticated User ID: {$storedUser['id']}\n";
}