بعد از این درس دقیقاً چه بلدی؟
- چرخه اتصال تا دریافت نتیجه را توضیح بدهی
- از prepared statement استفاده کنی
- خطای پایگاهداده را بدون افشای اطلاعات مدیریت کنی
دستور آماده مثل فرم بانکی استاندارد است
ساختار فرم از قبل ثابت است و فقط مقدارهای مجاز داخل جای مشخص قرار میگیرند. با چسباندن متن کاربر به SQL، عملاً اجازه میدهیم او شکل دستور را هم تغییر دهد.
اتصال PDO: رشته DSN، نام کاربری و رمز را خارج از کد عمومی نگه دار و حالت خطا را روی Exception تنظیم کن.
چرا مهم است؟ رشته DSN، نام کاربری و رمز را خارج از کد عمومی نگه دار و حالت خطا را روی Exception تنظیم کن.
اولین تمرین تو: نام خودت را به آرایه اضافه کن و تغییر تعداد را ببین.
اول بفهم، بعد کد بنویس
اتصال PDO
رشته DSN، نام کاربری و رمز را خارج از کد عمومی نگه دار و حالت خطا را روی Exception تنظیم کن.
prepare + execute
SQL را با جاینگهدار بنویس و مقدارها را جداگانه بفرست. این کار جلوی SQL Injection را میگیرد.
fetch
نتیجه را با حالت مناسب مانند PDO::FETCH_ASSOC بگیر و قبل از نمایش Escape کن.
مثال واقعی: شمارش ثبتنامهای امروز
برای فهم خروجی، ابتدا چند رکورد را در آرایه شبیهسازی میکنیم. بعد نسخه واقعی PDO را میبینی.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
کد را تغییر بده و نتیجه واقعی را ببین
این مفسر آموزشی امن، بخش پایه PHP شامل متغیر، محاسبه، رشته، آرایه، تابعهای ساده و if/else را در مرورگر اجرا میکند. کد به سرویس دیگری ارسال نمیشود.
برای دیدن نتیجه، «اجرای کد» را بزن.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
نام خودت را به آرایه اضافه کن و تغییر تعداد را ببین.
این بخش روی سرور چگونه نوشته میشود؟
این قطعه به پایگاهداده واقعی نیاز دارد و در شبیهساز مرورگر اجرا نمیشود؛ الگوی مهم، جدا نگهداشتن SQL و داده کاربر است.
<?php
$pdo = new PDO($dsn, $user, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$stmt = $pdo->prepare(
"INSERT INTO registrations (name, email) VALUES (:name, :email)"
);
$stmt->execute(["name" => $name, "email" => $email]);این سه اشتباه را انجام نده
ساخت SQL با چسباندن مستقیم ورودی کاربر
نمایش پیام کامل خطای دیتابیس به کاربر نهایی
قرار دادن رمز پایگاهداده داخل مخزن عمومی
5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفتهای
برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همانجا میبینی.
امنترین روش قراردادن ایمیل کاربر در Query چیست؟
چرا مقدار کاربر را به متن SQL نمیچسبانیم؟
اطلاعات اتصال پایگاهداده بهتر است کجا نگهداری شود؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
درس را فقط وقتی تمام کن که کد را تغییر دادهای
دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیشبینی کن و بعد اجرا بزن.