/
  • ایجاد محدودیت دانلود فایل

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی ایجاد محدودیت دانلود فایل
    نویسنده پیام
    behradrvb آفلاین
    عضو جدید
    **

    ارسال‌ها: 5
    تاریخ عضویت: ۱۳۹۷ فروردين ۱۴
    اعتبار: 0
    تشکرها : 6
    ( 0 تشکر در 0 ارسال )
    ارسال: #1
    ایجاد محدودیت دانلود فایل
    با عرض سلام خدمت تمام برنامه نویس های محترم من تازه عضو این انجمن شدم امیدوارم بتونم از دانش بیکران جمیع دوستان استفاده کنم و همچنین دانش اندکم رو با دوستان به اشتراک بذارم WinkWink

    سوالم رو سعی میکنم دقیق بپرسم Smile
    حقیقتا ما یک سایت دانلود فایل داریم که قراره دانلود فایل ها محدود بشن.راه کاری به ذهن من رسید این بود که مثلا از یک فایل php به عنوان واسط استفاده کنیم که اوشون مسیولیت دانلود فایل رو داشته باشه.
    تا اینجاش حله مشکل زیادی بر نخوردم!اما داستان اصلی اینجاس که اگه یک نفر مثلا اسم اون فایل من رو داشته باشه،خب میتونه با زدن آدرس و رفتن به اون پوشه (البته طبق دسترسی ها بستم که لیست نکنه فایل رو) فایل رو دانلود کنه.حالا،ایا راهی هست که من محدود کنم اینو که هیچکس نتونه به اون شکل فایل رو دریافت کنه؟و فقط اون فایل رابط بهش دسترسی داشته باشه؟
    این رو هم بگم که وب سرور من آپاچی هست که با نرم افزار Xampp روی ویندوز سرور 2008 ران شده.
    ۱۳۹۷ فروردين ۱۴ ۰۷:۱۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    MiladWorkShop آفلاین
    تحریم شده

    ارسال‌ها: 18
    تاریخ عضویت: ۱۳۹۶ اسفند ۶
    تشکرها : 0
    ( 11 تشکر در 11 ارسال )
    ارسال: #2
    RE: ایجاد محدودیت دانلود فایل
    سلام

    کافیه با استفاده از htaccess دسترسی همه فایل های پوشه دانلود به جز اون فایل php که دانلود ها رو انجام میده رو Deny کنید
    ۱۳۹۷ فروردين ۱۵ ۱۰:۳۹ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : behradrvb
    behradrvb آفلاین
    عضو جدید
    **

    ارسال‌ها: 5
    تاریخ عضویت: ۱۳۹۷ فروردين ۱۴
    اعتبار: 0
    تشکرها : 6
    ( 0 تشکر در 0 ارسال )
    ارسال: #3
    RE: ایجاد محدودیت دانلود فایل
    (۱۳۹۷ فروردين ۱۵ ۱۰:۳۹ عصر)MiladWorkShop نوشته شده توسط:  سلام

    کافیه با استفاده از htaccess دسترسی همه فایل های پوشه دانلود به جز اون فایل php که دانلود ها رو انجام میده رو Deny کنید

    سلام متشکرم.من الان یک فایل .htaccess ساختم و با دوتا دستور Order Deny,Allow
    Deny from all بستم دسترسی رو.ولی هنوز اگه اسم فایل باشه بهش میشه دست پیدا کرد و راحت دانلود میشه.
    (آخرین ویرایش در این ارسال: ۱۳۹۷ فروردين ۱۶ ۰۵:۴۹ عصر، توسط behradrvb.)
    ۱۳۹۷ فروردين ۱۶ ۰۴:۲۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    MiladWorkShop آفلاین
    تحریم شده

    ارسال‌ها: 18
    تاریخ عضویت: ۱۳۹۶ اسفند ۶
    تشکرها : 0
    ( 11 تشکر در 11 ارسال )
    ارسال: #4
    RE: ایجاد محدودیت دانلود فایل
    وب سرور هاستتون چیه ؟

    اگه از سرور ویندوزی یا وب سرور انجینکس استفاده می کنید نمیتونید از htaccess استفاده کنید

    نمونه کد htaccess که برای اعمال چنین محدودیتی استفاده میشه :

    کد PHP:
    Order allow,deny
    Deny from All

    <FilesMatch "^(index\.php)?$">
        
    Allow from All
    </FilesMatch
    ۱۳۹۷ فروردين ۱۶ ۰۷:۵۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : behradrvb
    behradrvb آفلاین
    عضو جدید
    **

    ارسال‌ها: 5
    تاریخ عضویت: ۱۳۹۷ فروردين ۱۴
    اعتبار: 0
    تشکرها : 6
    ( 0 تشکر در 0 ارسال )
    ارسال: #5
    RE: ایجاد محدودیت دانلود فایل
    (۱۳۹۷ فروردين ۱۶ ۰۷:۵۶ عصر)MiladWorkShop نوشته شده توسط:  وب سرور هاستتون چیه ؟

    اگه از سرور ویندوزی یا وب سرور انجینکس استفاده می کنید نمیتونید از htaccess استفاده کنید

    نمونه کد htaccess که برای اعمال چنین محدودیتی استفاده میشه :

    کد PHP:
    Order allow,deny
    Deny from All

    <FilesMatch "^(index\.php)?$">
        
    Allow from All
    </FilesMatch

    اقا با تشکر درست شد.الان دیگه فایله به صورت مستقیم نمیشه دانلود کرد.
    راستی وب سرورم آپاچی و سیستم عامل ویندوزه،ولی میشه با یه روش با rename از cmd،فایل htaccess بسازیم.الان هم من این کد شمارو قرار دادم واوکی شد.حالا یه سوال،اگر بخواهم اون فایل php دسترسی داشته باشه چه کدی رو باید اضافه کنم؟
    ۱۳۹۷ فروردين ۱۶ ۱۰:۰۱ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    MiladWorkShop آفلاین
    تحریم شده

    ارسال‌ها: 18
    تاریخ عضویت: ۱۳۹۶ اسفند ۶
    تشکرها : 0
    ( 11 تشکر در 11 ارسال )
    ارسال: #6
    RE: ایجاد محدودیت دانلود فایل
    این بخش از کد :

    کد PHP:
    <FilesMatch "^(index\.php)?$">
        
    Allow from All
    </FilesMatch

    مشخص کردم که فایل index.php دسترسی داشته باشه, اگه اسم فایل php چیز دیگه هست کافیه index رو به اسم فایلتون تغییر بدید
    ۱۳۹۷ فروردين ۱۶ ۱۱:۲۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : behradrvb
    behradrvb آفلاین
    عضو جدید
    **

    ارسال‌ها: 5
    تاریخ عضویت: ۱۳۹۷ فروردين ۱۴
    اعتبار: 0
    تشکرها : 6
    ( 0 تشکر در 0 ارسال )
    ارسال: #7
    RE: ایجاد محدودیت دانلود فایل
    (۱۳۹۷ فروردين ۱۶ ۱۱:۲۲ عصر)MiladWorkShop نوشته شده توسط:  این بخش از کد :

    کد PHP:
    <FilesMatch "^(index\.php)?$">
        
    Allow from All
    </FilesMatch

    مشخص کردم که فایل index.php دسترسی داشته باشه, اگه اسم فایل php چیز دیگه هست کافیه index رو به اسم فایلتون تغییر بدید

    اقا به شدددددددددت متشکرم از راهنماییتون.ولی یه سوال دیگه هم دارم ببخشید البته Smile
    من با کد زیر به راحتی راه انداختم چیزی که میخواستمو
    <Files "b.php">
    Allow from All
    </Files>

    حالا اگه اون فایل b.php ما مثلا تو پوشه بالاتر (قبلی) باشه چیکار باید کرد؟؟
    <Files "../b.php">
    Allow from All
    </Files>
    رو هم گذاشتم ولی جواب نداد متاسفانه
    ۱۳۹۷ فروردين ۱۷ ۰۵:۳۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    PhpPlus آفلاین
    عضو جدید
    **

    ارسال‌ها: 8
    تاریخ عضویت: ۱۳۹۷ فروردين ۱۸
    اعتبار: 0
    تشکرها : 0
    ( 2 تشکر در 2 ارسال )
    ارسال: #8
    RE: ایجاد محدودیت دانلود فایل
    (۱۳۹۷ فروردين ۱۷ ۰۵:۳۴ عصر)behradrvb نوشته شده توسط:  
    (۱۳۹۷ فروردين ۱۶ ۱۱:۲۲ عصر)MiladWorkShop نوشته شده توسط:  این بخش از کد :

    کد PHP:
    <FilesMatch "^(index\.php)?$">
        
    Allow from All
    </FilesMatch

    مشخص کردم که فایل index.php دسترسی داشته باشه, اگه اسم فایل php چیز دیگه هست کافیه index رو به اسم فایلتون تغییر بدید

    اقا به شدددددددددت متشکرم از راهنماییتون.ولی یه سوال دیگه هم دارم ببخشید البته Smile
    من با کد زیر به راحتی راه انداختم چیزی که میخواستمو
    <Files "b.php">
    Allow from All
    </Files>

    حالا اگه اون فایل b.php ما مثلا تو پوشه بالاتر (قبلی) باشه چیکار باید کرد؟؟
    <Files "../b.php">
    Allow from All
    </Files>
    رو هم گذاشتم ولی جواب نداد متاسفانه

    درود بر شما دوست عزیز
    شما میتوانید یک پوشه مثلا با نام files بسازید و یک فایل .htaccess با محتویات زیر در داخل پوشه بسازید
    Order allow,deny
    Deny from All

    <FilesMatch "^(index\.php)?$">
    Allow from All
    </FilesMatch>

    حال اگر آدرس پوشه شما این است domain.ir/files
    در پوشه بالایی یعنی در روت هاست شما یک فایل با نام b.php یا download.php باشد دسترسی آن محدود نمیشود و نیازی به تغییر کد اچ تی اکسس نیست.
    دقت کنید که فایل های داخل پوشه files دسترسی مستقیم ندارند و شما برای دانلود فایل میتوانید پس از چک کردن محدودیت های دانلود در فایل پی اچ پی خود content-type را برابر با mime type فایل مورد نظر قرار داده و فایل را include کنید و یا میتوانید از readfile استفاده کنید
    من برای سیستم مدیریت محتوای خودم از تابع زیر استفاده میکنم.
    ↓↓↓↓

    function smartReadFile($location, $filename, $mimeType = 'application/octet-stream')

    {

    if (!file_exists($location))

    {

    header("HTTP/1.0 404 Not Found");

    return;

    }



    $size = filesize($location);

    $time = date('r', filemtime($location));



    $fm = @fopen($location, 'rb');

    if (!$fm)

    {

    header("HTTP/1.0 505 Internal server error");

    return;

    }



    $begin = 0;

    $end = $size;



    if (isset($_SERVER['HTTP_RANGE']))

    {

    if (preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches))

    {

    $begin = intval($matches[0]);

    if (!empty($matches[1]))

    $end = intval($matches[1]);

    }

    }



    if ($begin > 0 || $end < $size)

    header('HTTP/1.0 206 Partial Content');

    else

    header('HTTP/1.0 200 OK');



    header("Content-Type: $mimeType");

    header('Cache-Control: public, must-revalidate, max-age=0');

    header('Pragma: no-cache');

    header('Accept-Ranges: bytes');

    header('Content-Length:' . ($end - $begin));

    header("Content-Range: bytes $begin-$end/$size");

    header("Content-Disposition: inline; filename=$filename");

    header("Content-Transfer-Encoding: binary\n");

    header("Last-Modified: $time");

    header('Connection: close');



    $cur = $begin;

    fseek($fm, $begin, 0);



    while (!feof($fm) && $cur < $end && (connection_status() == 0))

    {

    print fread($fm, min(1024 * 16, $end - $cur));

    $cur += 1024 * 16;

    }

    }




    پ.ن :
    $location : آدرس فایل در هاست
    $filename : نام فایل برای دانلود (نامی که فایل با آن در کامپیوتر و یا تلفن کاربر ذخیره میشود)
    $mimetype : mimeType فایل
    در صورتی که mimeType فایل مورد نظر را نمیدانید این argument را وارد نکنید
    mimeType به صورت پیشفرض "application/octet-stream" میباشد که مرورگر این نوع contentType ها را مستقیما دانلود میکند.

    اگر سوالی بود در خدمتم
    ۱۳۹۷ فروردين ۱۸ ۰۶:۳۲ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : behradrvb
    MiladWorkShop آفلاین
    تحریم شده

    ارسال‌ها: 18
    تاریخ عضویت: ۱۳۹۶ اسفند ۶
    تشکرها : 0
    ( 11 تشکر در 11 ارسال )
    ارسال: #9
    RE: ایجاد محدودیت دانلود فایل
    (۱۳۹۷ فروردين ۱۷ ۰۵:۳۴ عصر)behradrvb نوشته شده توسط:  
    (۱۳۹۷ فروردين ۱۶ ۱۱:۲۲ عصر)MiladWorkShop نوشته شده توسط:  این بخش از کد :

    کد PHP:
    <FilesMatch "^(index\.php)?$">
        
    Allow from All
    </FilesMatch

    مشخص کردم که فایل index.php دسترسی داشته باشه, اگه اسم فایل php چیز دیگه هست کافیه index رو به اسم فایلتون تغییر بدید

    اقا به شدددددددددت متشکرم از راهنماییتون.ولی یه سوال دیگه هم دارم ببخشید البته Smile
    من با کد زیر به راحتی راه انداختم چیزی که میخواستمو
    <Files "b.php">
    Allow from All
    </Files>

    حالا اگه اون فایل b.php ما مثلا تو پوشه بالاتر (قبلی) باشه چیکار باید کرد؟؟
    <Files "../b.php">
    Allow from All
    </Files>
    رو هم گذاشتم ولی جواب نداد متاسفانه

    اگه فایل PHP که عملیات دانلود رو انجام میده توی پوشه دیگه ای هست و با آدرس دیگه ای فراخوانی میشه دیگه نیاز به قرار دادن کد زیر نیست :

    کد PHP:
    <FilesMatch "^(index\.php)?$">
        
    Allow from All
    </FilesMatch
    ۱۳۹۷ فروردين ۲۰ ۱۲:۱۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : behradrvb
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS