مجوز دسترسی و عدم دسترسی به صفحات و فایل های پی اچ پی

شروع موضوع توسط webarts ‏1 مارس 2012 در انجمن برنامه‌نویسی با PHP

کلمات کلیدی:
  1. webarts

    webarts Member

    ارسال‌ها:
    33
    تشکر شده:
    3
    امتیاز دستاورد:
    6
    دوستان ممنون میشم راهنمایی بفرمایید:

    مثلا یک CMS پی اچ پی داریم.

    1) بعضی فایلهای php نباید مستقیم توسط هیچ یوزری اجرا شود
    2) بعضی فایلهای php تنها توسط کاربران رجیستر شده که لاگین کردن باید قابل دسترسی باشد.

    به Sission و cookie آشنایی دارم. منتها نمیدانم بهترین شیوه برای اینکه فایلهای مورد 1 و 2 را قابل دسترسی و غیر قابل دسترسی کنم چیست؟ میشه چند کد مثال بزنین؟
    مرسی
     
    نوشته شده توسط webarts در ‏1 مارس 2012
  2. phpweb

    phpweb Active Member

    ارسال‌ها:
    1,092
    تشکر شده:
    135
    امتیاز دستاورد:
    36
    برای این کار باید این کد رو در ایتدای هر اسکریپت قرار بدید:
    PHP:

    if($_SESSION['userid']){
    // code
    }
    else{
    //login
    }
     
     
    نوشته شده توسط phpweb در ‏2 مارس 2012
    webarts از این پست تشکر کرده است.
  3. peyman136

    peyman136 کاربر متخصص مولتی مدیا بیلدر

    ارسال‌ها:
    773
    تشکر شده:
    1,466
    امتیاز دستاورد:
    93
    استفاده از define و کنترل کردن اون با defined هم پیشنهاد میشه
     
    نوشته شده توسط peyman136 در ‏2 مارس 2012
    webarts از این پست تشکر کرده است.
  4. webarts

    webarts Member

    ارسال‌ها:
    33
    تشکر شده:
    3
    امتیاز دستاورد:
    6
    و برای اینکه یک فایل بطور کل دسترسی مستقیم نداشته باشه چکار باید بکنم؟
     
    نوشته شده توسط webarts در ‏2 مارس 2012
  5. phpweb

    phpweb Active Member

    ارسال‌ها:
    1,092
    تشکر شده:
    135
    امتیاز دستاورد:
    36
    برای این کار با htaccess دسترسی به پوشه فایلها رو محدود می کنید.
    بعد با استفاده از php چک می کنید که کاربر مجوز لازم رو داره یا نه. اگر داشت فایل رو نمایش می دید.

    توجه کنید که چون نمی شه با استفاده از htaccess دسترسی php رو محدود کرد می تونید از این روش استفاده کنید.
     
    نوشته شده توسط phpweb در ‏2 مارس 2012
    webarts از این پست تشکر کرده است.
  6. webarts

    webarts Member

    ارسال‌ها:
    33
    تشکر شده:
    3
    امتیاز دستاورد:
    6
    مثل اینکه این روش شما کاربردی تره. تو جوملا2.5 اول فایلهایی که کاربران نباید دسترسی داشته باشند نوشته:

    PHP:
    defined('_JEXEC') or die;
    ممکنه کلا درباره مجوز با define توضیح بدین؟
     
    نوشته شده توسط webarts در ‏3 مارس 2012
  7. phpweb

    phpweb Active Member

    ارسال‌ها:
    1,092
    تشکر شده:
    135
    امتیاز دستاورد:
    36
    define اصلا قابلیت تعیین مجوز نداره.

    احتمالا جوملا توی صفحاتی که باید اینکلود بشن و نباید بصورت مستقیم قابل دستیابی باشن از این روش استفاده کرده.
     
    نوشته شده توسط phpweb در ‏3 مارس 2012
    peyman136 و webarts از این پست تشکر کرده اند.
  8. peyman136

    peyman136 کاربر متخصص مولتی مدیا بیلدر

    ارسال‌ها:
    773
    تشکر شده:
    1,466
    امتیاز دستاورد:
    93
    این موضوع کاملن درسته
    این روش صرفن برای این هستش که کاربران نتون به صورت مستقیم به فایل هایی که اینکلود میشن دسترسی داشته باشن اما اگه مغییرتون بعد از تعیین هویت کاربر تعریف بشه اینطوری علاوه بر جلوگیری از دسترسی مسقیم جلوی کاربرایی که مجاز نیستن رو میگیرید
     
    نوشته شده توسط peyman136 در ‏3 مارس 2012
  9. phpweb

    phpweb Active Member

    ارسال‌ها:
    1,092
    تشکر شده:
    135
    امتیاز دستاورد:
    36
    برای اینکه جلوی دسترسی کاربرانی که لاگین نکردن رو بگیرن معمولا از سسشن ها استفاده می کنن تا بتونن توی همه اسکریپتها به سسشن دسترسی داشته باشن.

    فرض کنید یه تعداد کاربر بخصوص مجوز دسترسی به اسکریپت رو داشته باشن، در این صورت باید آی دی هر کاربر رو توی سسشن ذخیره کنیم و قبل از اجرای اسکریپت چک کنیم که آی دی مورد نظر مجوز لازم رو داره یا نه.

    برای چنین مواردی اصلا نمی شه از ثابت ها استفاده کرد.
     
    نوشته شده توسط phpweb در ‏4 مارس 2012

به اشتراک بگذارید