بعد از این درس دقیقاً چه بلدی؟
- میتوانی «password_hash» را با مثال همین درس توضیح بدهی.
- میدانی «password_verify» کجای مسئله به کار میآید.
- تغییر پیشنهادی درس را اجرا میکنی و از روی نتیجه، اشتباه را پیدا میکنی.
اثر انگشت بهجای خود کلید
برای بررسی لازم نیست نسخهای از کلید کاربر را نگه داریم. یک اثر غیرقابل برگشت نگه میداریم و دفعه بعد سازگاری کلید را با آن میسنجیم.
پایگاه داده نباید خود رمز عبور را نگه دارد. هنگام ثبتنام از رمز یک hash یکطرفه میسازیم و هنگام ورود با password_verify آن را بررسی میکنیم.
چرا مهم است؟ hash از دیتابیس خوانده شده است. رمز فرم را با آن میسنجیم و فقط در حالت موفق Session کاربر را میسازیم.
اولین تمرین تو: hash از دیتابیس خوانده شده است. رمز فرم را با آن میسنجیم و فقط در حالت موفق Session کاربر را میسازیم.
اول بفهم، بعد کد بنویس
password_hash
از رمز و الگوریتم مناسب یک رشته امن برای ذخیره میسازد.
password_verify
رمز واردشده را با hash ذخیرهشده مقایسه میکند.
Session پس از ورود
پس از موفقیت شناسه کاربر را در Session میگذاریم و شناسه نشست را تازه میکنیم.
بررسی رمز هنگام ورود
hash از دیتابیس خوانده شده است. رمز فرم را با آن میسنجیم و فقط در حالت موفق Session کاربر را میسازیم.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
کد را کامل کن و ساختار آن را بررسی کن
این درس وارد قابلیتهای سروری یا حرفهای شده است. برای امنیت سایت، کد دلخواه روی سرور اجرا نمیشود؛ بررسیگر، وجود اجزای ضروری و منطق مورد انتظار را کنترل میکند و راهنمای اصلاح میدهد.
کد را کامل کن و «بررسی ساختار» را بزن.
این مثال خطبهخط چه میگوید؟
فعلاً حفظ نکن؛ هر خط را به یک جمله ساده تبدیل کن.
- 1
<?phpاز اینجا مفسر PHP شروع به خواندن کد میکند.
- 2
$hash = password_hash("Secret123!", PASSWORD_DEFAULT);یک مقدار با نام $hash نگهداری میشود تا در خطهای بعد دوباره استفاده شود.
- 3
if (password_verify("Secret123!", $hash)) {یک پرسش درست/نادرست بررسی میشود و مسیر اجرای بعدی را تعیین میکند.
- 4
echo "ورود موفق بود";نتیجه این عبارت به خروجی پاسخ فرستاده میشود.
- 5
} else {این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 6
echo "ایمیل یا رمز اشتباه است";نتیجه این عبارت به خروجی پاسخ فرستاده میشود.
- 7
}مرز یک بلوک یا فراخوانی در اینجا باز یا بسته میشود.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
رمز داخل password_verify را اشتباه کن. دقت کن پیام خطا نباید لو بدهد ایمیل درست بوده یا رمز.
از ساده به چالشی، بدون پرش
یکی از مقدارهای مثال را عوض کن، خروجی را روی کاغذ حدس بزن و سپس بررسی کن.
رمز داخل password_verify را اشتباه کن. دقت کن پیام خطا نباید لو بدهد ایمیل درست بوده یا رمز.
سناریوی «بررسی رمز هنگام ورود» را با نامهای واضحتر و یک حالت تازه گسترش بده.
این سه اشتباه را انجام نده
رمز را ساده یا با MD5 ذخیره میکنی.
در خطای ورود مشخص میکنی کدام ایمیل در سایت عضو است.
بعد از ورود session_regenerate_id را اجرا نمیکنی.
5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفتهای
برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همانجا میبینی.
کدام مقدار باید در دیتابیس ذخیره شود؟
کدام توضیح، «password_hash» را دقیقتر بیان میکند؟
بهترین قدم بعد از خواندن مثال این درس چیست؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
درس را فقط وقتی تمام کن که کد را تغییر دادهای
دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیشبینی کن و بعد اجرا بزن.