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

امنیت، خطایابی و کد قابل اعتماد

ورودی، خروجی، خطا و لاگ را درست مدیریت می‌کنی و تفاوت پیام مناسب کاربر با اطلاعات فنی توسعه‌دهنده را می‌فهمی.

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

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

  • خطا را بازتولید و کوچک کنی
  • ورودی و خروجی را امن مدیریت کنی
  • اطلاعات حساس را وارد لاگ نکنی
به زبان زندگی واقعی

خطایابی مثل پیدا کردن قطعی برق است

به‌جای تعویض همه سیم‌ها، مسیر را بخش‌بخش بررسی می‌کنیم: ورودی رسید؟ شرط درست بود؟ خروجی ساخته شد؟ کوچک‌کردن مسئله سریع‌تر از حدس‌زدن است.

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

Validate: بررسی کن داده با انتظار برنامه سازگار است؛ مثلاً ایمیل معتبر و ظرفیت عدد مثبت باشد.

چرا مهم است؟ بررسی کن داده با انتظار برنامه سازگار است؛ مثلاً ایمیل معتبر و ظرفیت عدد مثبت باشد.

اولین تمرین تو: فاصله‌ها را بیشتر کن، اجرا بزن و بعد متن خروجی را تغییر بده.

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

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

Validate

بررسی کن داده با انتظار برنامه سازگار است؛ مثلاً ایمیل معتبر و ظرفیت عدد مثبت باشد.

Escape

هنگام قراردادن داده در HTML، SQL یا URL از روش مخصوص همان مقصد استفاده کن.

Log

شناسه رخداد و اطلاعات لازم برای عیب‌یابی را ثبت کن، نه رمز، توکن یا اطلاعات خصوصی.

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

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

کاربر ممکن است ناخواسته قبل و بعد نام فاصله بگذارد. trim داده را قبل از پردازش مرتب می‌کند.

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

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

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

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

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

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

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

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

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

    فاصله‌ها را بیشتر کن، اجرا بزن و بعد متن خروجی را تغییر بده.

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

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

    جزئیات فنی را در محیط امن لاگ می‌کنیم و به کاربر یک پیام روشن و غیرحساس نشان می‌دهیم.

    PHP · Server example
    try {
        $service->register($data);
    } catch (DomainException $error) {
        error_log("registration_failed: " . $error->getMessage());
        echo "ثبت‌نام انجام نشد؛ دوباره تلاش کن.";
    }
    دام‌های رایج

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

    1

    فعال‌گذاشتن display_errors در سایت اصلی

    2

    ثبت رمز و توکن داخل لاگ

    3

    استفاده از @ برای پنهان‌کردن خطا به‌جای حل آن

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

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

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

    پرسش 1 از 5

    کدام پیام برای کاربر سایت اصلی مناسب‌تر است؟

    پرسش 2 از 5

    تابع trim در مثال نام کاربر چه می‌کند؟

    پرسش 3 از 5

    کدام مورد نباید داخل لاگ ثبت شود؟

    پرسش 4 از 5

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

    پرسش 5 از 5

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

    پایان درس 7

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

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