</>مدرسه زیب‌موجیاد بگیر، تمرین کن، بساز
مدرسهPHPدرس 6
درس 6 از 8 · ۵۰ دقیقه

پایگاه‌داده با PDO و Query امن

اتصال PDO، دستور آماده، درج و خواندن داده را می‌شناسی و می‌فهمی چرا ورودی نباید به متن SQL چسبانده شود.

۰امتیاز شما
نقشه این درس

بعد از این درس دقیقاً چه بلدی؟

  • چرخه اتصال تا دریافت نتیجه را توضیح بدهی
  • از prepared statement استفاده کنی
  • خطای پایگاه‌داده را بدون افشای اطلاعات مدیریت کنی
به زبان زندگی واقعی

دستور آماده مثل فرم بانکی استاندارد است

ساختار فرم از قبل ثابت است و فقط مقدارهای مجاز داخل جای مشخص قرار می‌گیرند. با چسباندن متن کاربر به SQL، عملاً اجازه می‌دهیم او شکل دستور را هم تغییر دهد.

نکته مهم برای شروع PHP

اتصال PDO: رشته DSN، نام کاربری و رمز را خارج از کد عمومی نگه دار و حالت خطا را روی Exception تنظیم کن.

چرا مهم است؟ رشته DSN، نام کاربری و رمز را خارج از کد عمومی نگه دار و حالت خطا را روی Exception تنظیم کن.

اولین تمرین تو: نام خودت را به آرایه اضافه کن و تغییر تعداد را ببین.

مفهوم‌های اصلی

اول بفهم، بعد کد بنویس

اتصال PDO

رشته DSN، نام کاربری و رمز را خارج از کد عمومی نگه دار و حالت خطا را روی Exception تنظیم کن.

prepare + execute

SQL را با جای‌نگهدار بنویس و مقدارها را جداگانه بفرست. این کار جلوی SQL Injection را می‌گیرد.

fetch

نتیجه را با حالت مناسب مانند PDO::FETCH_ASSOC بگیر و قبل از نمایش Escape کن.

سناریوی واقعی

مثال واقعی: شمارش ثبت‌نام‌های امروز

برای فهم خروجی، ابتدا چند رکورد را در آرایه شبیه‌سازی می‌کنیم. بعد نسخه واقعی PDO را می‌بینی.

ورودی روشنقانون قابل توضیحخروجی قابل بررسی
بازی ساختن کد

قطعه‌ها را به ترتیب درست بچین

روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمه‌های جابه‌جایی هم می‌توانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.

مرحله ۲ از ۳ · مرتب‌کردن کد
بانک قطعه‌هاقطعه مناسب را انتخاب کن
ترتیب پاسخ تواز بالا به پایین اجرا می‌شود

    هنوز پاسخی بررسی نشده است.

    کارگاه تعاملی

    کد را تغییر بده و نتیجه واقعی را ببین

    این مفسر آموزشی امن، بخش پایه PHP شامل متغیر، محاسبه، رشته، آرایه، تابع‌های ساده و if/else را در مرورگر اجرا می‌کند. کد به سرویس دیگری ارسال نمی‌شود.

    lesson-6.php
    خروجی برنامهمفسر آماده است
    برای دیدن نتیجه، «اجرای کد» را بزن.
    خروجی با تغییر کد دوباره محاسبه می‌شود.
    حالا نوبت توست

    نام خودت را به آرایه اضافه کن و تغییر تعداد را ببین.

    نسخهٔ پروژه واقعی

    این بخش روی سرور چگونه نوشته می‌شود؟

    این قطعه به پایگاه‌داده واقعی نیاز دارد و در شبیه‌ساز مرورگر اجرا نمی‌شود؛ الگوی مهم، جدا نگه‌داشتن SQL و داده کاربر است.

    PHP · Server example
    <?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]);
    دام‌های رایج

    این سه اشتباه را انجام نده

    1

    ساخت SQL با چسباندن مستقیم ورودی کاربر

    2

    نمایش پیام کامل خطای دیتابیس به کاربر نهایی

    3

    قرار دادن رمز پایگاه‌داده داخل مخزن عمومی

    آزمون پایان درس

    5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفته‌ای

    برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همان‌جا می‌بینی.

    پرسش 1 از 5

    امن‌ترین روش قراردادن ایمیل کاربر در Query چیست؟

    پرسش 2 از 5

    چرا مقدار کاربر را به متن SQL نمی‌چسبانیم؟

    پرسش 3 از 5

    اطلاعات اتصال پایگاه‌داده بهتر است کجا نگهداری شود؟

    پرسش 4 از 5

    کدام روش نشان می‌دهد این درس را واقعاً فهمیده‌ای؟

    پرسش 5 از 5

    کدام رفتار احتمال خطا را در همین موضوع بیشتر می‌کند؟

    پایان درس 6

    درس را فقط وقتی تمام کن که کد را تغییر داده‌ای

    دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیش‌بینی کن و بعد اجرا بزن.