بعد از این درس دقیقاً چه بلدی؟
- میتوانی «نسخه کوچک کامل» را با مثال همین درس توضیح بدهی.
- میدانی «مالکیت داده» کجای مسئله به کار میآید.
- تغییر پیشنهادی درس را اجرا میکنی و از روی نتیجه، اشتباه را پیدا میکنی.
اول یک دفترچه قابل استفاده، بعد امکانات بیشتر
نسخه اول باید یک مسیر کامل و قابل آزمون داشته باشد. جستوجو و برچسب زمانی ارزش دارند که ثبت، نمایش، ویرایش و حذف واقعاً درست کار کنند.
حالا یک برنامه کامل کوچک میسازیم: کاربر کار تازه ثبت میکند، فهرست خودش را میبیند، وضعیت را تغییر میدهد و یک کار را حذف میکند.
چرا مهم است؟ فرم POST میشود، عنوان اعتبارسنجی و با دستور آماده ذخیره میشود؛ سپس با الگوی Post/Redirect/Get به فهرست برمیگردیم.
اولین تمرین تو: فرم POST میشود، عنوان اعتبارسنجی و با دستور آماده ذخیره میشود؛ سپس با الگوی Post/Redirect/Get به فهرست برمیگردیم.
اول بفهم، بعد کد بنویس
نسخه کوچک کامل
ثبت، نمایش، تکمیل و حذف را از رابط تا دیتابیس پوشش میدهد.
مالکیت داده
هر Query با user_id محدود میشود تا کاربر فقط کارهای خودش را ببیند.
مسیر خطا
عنوان خالی، شناسه ناموجود و خطای دیتابیس پاسخ روشن و امن دارند.
ثبت یک کار و بازگشت به فهرست
فرم POST میشود، عنوان اعتبارسنجی و با دستور آماده ذخیره میشود؛ سپس با الگوی Post/Redirect/Get به فهرست برمیگردیم.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
کد را کامل کن و ساختار آن را بررسی کن
این درس وارد قابلیتهای سروری یا حرفهای شده است. برای امنیت سایت، کد دلخواه روی سرور اجرا نمیشود؛ بررسیگر، وجود اجزای ضروری و منطق مورد انتظار را کنترل میکند و راهنمای اصلاح میدهد.
کد را کامل کن و «بررسی ساختار» را بزن.
این مثال خطبهخط چه میگوید؟
فعلاً حفظ نکن؛ هر خط را به یک جمله ساده تبدیل کن.
- 1
<?phpاز اینجا مفسر PHP شروع به خواندن کد میکند.
- 2
$title = trim($_POST["title"] ?? "");یک مقدار با نام $title نگهداری میشود تا در خطهای بعد دوباره استفاده شود.
- 3
if ($title === "") {یک پرسش درست/نادرست بررسی میشود و مسیر اجرای بعدی را تعیین میکند.
- 4
$error = "عنوان کار را بنویس";یک مقدار با نام $error نگهداری میشود تا در خطهای بعد دوباره استفاده شود.
- 5
} else {این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 6
$stmt = $pdo->prepare("INSERT INTO tasks (user_id, title) VALUES (:user_id, :title)");یک مقدار با نام $stmt نگهداری میشود تا در خطهای بعد دوباره استفاده شود.
- 7
$stmt->execute(["user_id" => $userId, "title" => $title]);این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 8
header("Location: /tasks");این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 9
exit;این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 10
}مرز یک بلوک یا فراخوانی در اینجا باز یا بسته میشود.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
اول فقط مسیر ایجاد را کامل کن. سپس عنوان خالی، عنوان فارسی و ارسال دوباره همان فرم را آزمایش کن.
از ساده به چالشی، بدون پرش
یکی از مقدارهای مثال را عوض کن، خروجی را روی کاغذ حدس بزن و سپس بررسی کن.
اول فقط مسیر ایجاد را کامل کن. سپس عنوان خالی، عنوان فارسی و ارسال دوباره همان فرم را آزمایش کن.
سناریوی «ثبت یک کار و بازگشت به فهرست» را با نامهای واضحتر و یک حالت تازه گسترش بده.
این سه اشتباه را انجام نده
همه امکانات را همزمان شروع میکنی.
در UPDATE و DELETE مالکیت user_id را بررسی نمیکنی.
پس از POST مستقیم HTML نشان میدهی و با Refresh ثبت تکراری میسازی.
5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفتهای
برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همانجا میبینی.
چرا Query تغییر کار باید user_id را هم بررسی کند؟
کدام توضیح، «نسخه کوچک کامل» را دقیقتر بیان میکند؟
بهترین قدم بعد از خواندن مثال این درس چیست؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
درس را فقط وقتی تمام کن که کد را تغییر دادهای
دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیشبینی کن و بعد اجرا بزن.