امروز قصد دارم یک کلاس حرفه ای برای مدیریت و ایجاد محدودیت بر روی لینک فایل به شما معرفی کنم اگر شما هم مدیر سایت یا وبلاگی هستید که با لینک های دانلود و ایجاد محدودیت روی آن ها برای کسب درآمد و غیره مشکل دارید حتما با من همراه شوید تا با این کلاس حرفه ای آشنا شوید . این کلاس با اتصال به دیتابیس عمل می کند به این شکل که ابتدا یک کلید برای لینک فایل شما در دیتابیس می سازد و سپس توسط فایل دیگری که کلید را چک می کند اجازه دانلود می دهد.
خوب به معرفی دقیق این کلاس می پردازیم ابتدا فایل های پیوست پست را دانلود کنید و سپس یک دیتابیس ایجاد کنید و یا اطلاعات دیتابیس سایت خود را بدهید چون فقط یک تیبل در دیتابیس ایجاد می شود حال فایل config.php را باز کنید و در آن اطلاعات را قرار دهید . سپس فایل database-install.php را در مرورگر اجرا کنید تا دیتابیس بروز شود . حال برای شروع می توانید یک فایل index.php بسازید و در ابتدای آن کد زیر را قرار دهید :
include_once( '../Files/config.php' ); include_once( '../Files/class-secure-file-download.php' );
اکنون فایل های اصلی فراخوانی شد در مرحله دوم باید کلید دانلود فایل ساخته شود . کد زیر نمونه ای برای ساخت کلید می باشد :
$download = new Secure_File_Download( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST ); // Creates a key to download this file expiring after 1 day. $dl_key = $download->create_key( 'FILE NAME', 60*60*24 ); echo ( $dl_key ) ? $dl_key : 'An error occured while creating the download key.';
حال چند نکته در قسمتی که نوشته شده است FILE NAME باید لینک مستقیم فایل را قرار دهید و در قسمتی که نوشته 24*60*60 منظور مدت زمانی است که کلید از همان لحظه به بعد باید فعال باشد برای مثال اگر 60*60 را بنویسید به منظور 1 ساعت هست چون از طرف چپ به ترتیب به معنای ثانیه-دقیقه-ساعت هست پس 60 اول یعنی 60 ثانیه و 60 دوم به معنای 60 دقیقه یک ساعت هست پس نتیجه این شد که اگر 60*60 نوشته شود تاریخ انقضا تا 1 ساعت بعد خواهد بود ولی اگر گزینه ساعت هم اضافه کنیم مثلا 24 ساعت مانند 24*60*60 تاریخ انقضا از یک ساعت به یک روز تبدیل می شود چون هر شبانه روز 24 ساعت هست و ما یک ساعت رو حساب کردیم و ضربدر 24 ساعت کردیم . خوب در قسمتی که نوشته An error ... اگر کلید ساخته نشد خطا نمایش می دهد . تا اینجا ما کلید برای دانلود ساختیم توجه داشته باشیم این کلاس به گونه ای می باشد که بعد تکمیل دانلود کلید خودکار حذف می شود . خوب حال در ادامه می توان کد دانلود فایل را با توجه به کد ساخته شده قرار داد به کد زیر توجه کنید :
// دانلود با سرعت نا محدود و قابلیت توقف در دانلود //$error = $download->download( $dl_key ); // دانلود با سرعت نا محدود و بدون قابلیت توقف در دانلود //$error = $download->download( $dl_key, false ); // دانلود با سرعت محدود شده 50 کیلوبایت بر ثانیه و بدون قابلیت توقف در دانلود //$error = $download->download( $dl_key, false, 50 ); // دانلود با سرعت محدود شده 30 کیلوبایت برثانیه و با قابلیت توقف در دانلود //$error = $download->download( $dl_key, true, 30 ); if( is_string( $error ) ): // خطا های سیستم if( $error == 'Error: download is expired.' ) header( 'location: expired.php' ); if( $error == 'Error: file does not exist.' ) header( 'location: no-file.php' ); // ... etc ... echo $error; endif;
خوب در این قسمت این کد بالا کد ساخته شده در دیتابیس رو بررسی می کنه و اگر صحیح بود و فایل وجود داشت و منقضی نبود دانلود را شروع می کند قابلیتی که در سیستم وجود داره که به دیتابیس وصله به شما کمک می کند که کد های ساخت کلید و دانلود را از هم جدا کنید و بدون هیچ گونه محدودیتی کدینگ مورد نظر خود را انجام دهید . حال در این کد می بینیم که 4 حالت برای دانلود وجود دارد که برای فعال سازی باید // اول خط آن را برداشت مثلا من می خواهم کاربرانم با محدودیت 150 کیلوبایت بر ثانیه و قابلیت توقف در دانلود فایل را دریافت کنند پس از کد زیر استفاده می کنم :
$error = $download->download( $dl_key, true, 150 );
// پارامتر اول باید کلید دانلود باشد
// پارامتر دوم قابلیت توقف را فعال و غیر فعال می کند
// پارامتر سوم سرعت دانلود را بر حسب کیلوبایت بر ثانیه تایین می کند
حال می توانیم نگاهی به کدینگ کلی فایل بیندازیم : (هر چند در فایل دریافتی 2 فایل جدا برای ساخت کلید و دانلود وجود دارد)
include_once( '../Files/config.php' ); include_once( '../Files/class-secure-file-download.php' ); $download = new Secure_File_Download( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST ); // Creates a key to download this file expiring after 1 day. $dl_key = $download->create_key( 'FILE NAME', 60*60*24 );
if($dl_key != false) { // دانلود با سرعت نا محدود و قابلیت توقف در دانلود //$error = $download->download( $dl_key ); // دانلود با سرعت نا محدود و بدون قابلیت توقف در دانلود //$error = $download->download( $dl_key, false ); // دانلود با سرعت محدود شده 50 کیلوبایت بر ثانیه و بدون قابلیت توقف در دانلود //$error = $download->download( $dl_key, false, 50 ); // دانلود با سرعت محدود شده 30 کیلوبایت برثانیه و با قابلیت توقف در دانلود $error = $download->download( $dl_key, true, 150 ); if( is_string( $error ) ): // خطا های سیستم if( $error == 'Error: download is expired.' ) header( 'location: expired.php' ); if( $error == 'Error: file does not exist.' ) header( 'location: no-file.php' ); // ... etc ... echo $error; endif; }
جالب و خیلی کاربردی بود !
تشکر (: