آژانس هواپیماییexchanging

include

شروع موضوع توسط sasan_66 ‏6 آگوست 2007 در انجمن PHP

  1. sasan_66

    sasan_66 کاربر تازه وارد

    تاریخ عضویت:
    ‏18 جولای 2006
    نوشته ها:
    450
    تشکر شده:
    0
    يه جايي خوندم كه نوشتن كدهايي مثل كد زير اشتباهه
    PHP:
    <?php
    if (expression)
    include (
    'filename');
    else
    include (
    'another_filename');
    ?>
    و شكل درسته اون اين طوريه
    PHP:
    <?php
    if (expression) {
    include (
    'filename');
    } else {
    include (
    'another_filename');
    }
    ?>
    يعني عبارت هاي include بايد داخل{} قرار بگيرن چرا؟؟
     
  2. CyberIT

    CyberIT Registered User

    تاریخ عضویت:
    ‏25 جولای 2003
    نوشته ها:
    35
    تشکر شده:
    0
    محل سکونت:
    CyberIT
    شاید به دلیل متمایز کردن با سایر کدها باشه!
     
  3. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    این اجبار فقط به مفسر PHP برمیگرده و مشکلاتی که اگر include رو در داخل بلوک شرطی نذارید، مفسر در ترجمه دستورات دجار مشکل میشه. احتمالاً یا درست کردنش خیلی مشکل بوده یا اگر میخواستند راه حلی پیدا کنند سایر قسمتها دچار مشکل میشده.
     
  4. Xiv

    Xiv کاربر تازه وارد

    تاریخ عضویت:
    ‏17 می 2007
    نوشته ها:
    246
    تشکر شده:
    1
    محل سکونت:
    Internet
    من توی کتاب PHP 5 تالیف دکتر وحید رضا میرزائیان خوندم که بهتره از تابع Include استفاده نشه چون باگ امنیتی درست می کنه.
     
  5. Shahed

    Shahed کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    31
    محل سکونت:
    mt.cgi
    نه. تو اون کتاب هم نوشتن حتما ! شما بقیه شو نخوندی !
    تحت یه شرایطی هست که این تابع میتونه مشکل ایجاد کنه.
     
  6. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    این مشکل امنیتی اینکلود به iq برنامه نویس برمیگرده [​IMG]
     
  7. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,351
    تشکر شده:
    1,332
    محل سکونت:
    یه خورده اونورتر
    مثلا چجوری مشکل ساز بشه؟ include_once و require هم مشکل دارن؟
     
  8. Shahed

    Shahed کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    31
    محل سکونت:
    mt.cgi
    اوه دقیقا این چیزی بود که برای گفتنش دنبال کلمه میگشتم پیدا نمیکردم !! :D
     
  9. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    من این کتاب رو ندیدم ولی بحث خطر استفاده از include اینه که ورودی کاربر (از طریق URL یا فرم) نباید مستقیماً در include استفاده بشه مثلاً :
    PHP:
    include($_GET[page] . '.php');
    البته به راحتی میشه جلوشو گرفت (اینقدر ساده است که دیگه شرح نمیخواد). این مسأله فقط مربوط به include نمیشه و خیلی توابع هستند که استفاده مستقیم از ورودی کاربر توشون بسیار مخربتر و خطرناک تر از include هست.
     
  10. sasan_66

    sasan_66 کاربر تازه وارد

    تاریخ عضویت:
    ‏18 جولای 2006
    نوشته ها:
    450
    تشکر شده:
    0
    ممكنه اين قسمت رو بيشتر توضيح بدين؟
    چرا ممكنه اگه include داخل بلوك شرطي نباشه مفسر دچار اشتباه شه؟
     
  11. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    من اطلاع دقیق ندارم. اگر هم داشتم توضیحش اینجا نمیگنجید. نوشتن یك مفسر زبان برنامه نویسی كار بسیار مشكلی هست و از مراحل مختلفی مثل تجزیه (parsing)‌عبارتها و اختصاص یك token به هر كلمه شروع میشه تا تخصیص حافظه و اجرای دستورات و ... . تو این روند یك باگ یا محدودیت میتونه باعث بشه برنامه نویس(ان) مفسر به این نتیجه برسند كه با وضع یك قانون اضافی میتونند مشكلاتشون رو كمتر كنند. این هم یكی از همون قانونهاست.
     
  12. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    کلا اگر متغییری رو به صورت get یا post بگرید
    و از فیلتر هایی که باید رد کنید رد نکنید خطری به صورت بسیار زیاد میشود
    و باگ معروف RFI را ایجاد می کند در صورت وجود register_global

    و به قول دوستمون کاملا به توانایی هوشی و دانش برنامه نویس بر می گرده
     
  13. avajang.com .leftavajang.com.right
  14. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    راهش هم خیلی ساده هست , ولی برا اینکه نپرسن دوباره :
    PHP:
    include("/modules/".$_GET[page] . '.php'); 
    اینطوری اینکلود محدود میشه به یه پوشه و اگه آدرس داده بشه فایل رو پیدا نمیکنه و ارور میده (فکر میکنم یدونه اسلش هم کافی باشه) .
     
  15. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    این هم باگ lfi بهش می گند که باش باز هم کارهایی میشه کرد
    اون هم با استفاده از null بایت

    باید فانکسن بنویسی واقعا فیلتر و تصحیح و حذف کنی توش
     
  16. parvaneh_s

    parvaneh_s کاربر تازه وارد

    تاریخ عضویت:
    ‏29 جولای 2006
    نوشته ها:
    18
    تشکر شده:
    0
    نکته توی پرانتز:
    برای اینکه مطمئن بشید که فایل include شده حتما روی سرور خودتون وجود داره باید از دستور زیر استفاده کنید:​

    کد:
    <?php if (file_exists('myfile.php')) { include('myfile.php') ; }
     
  17. Xiv

    Xiv کاربر تازه وارد

    تاریخ عضویت:
    ‏17 می 2007
    نوشته ها:
    246
    تشکر شده:
    1
    محل سکونت:
    Internet
    لطفا یه دونه از این فانکشن ها رو اگه سراغ دارید بگید.