PDA

View Full Version : روش ساخت لینک های زمان دار



saman_kiker
چهارشنبه 10 اردیبهشت 1393, 20:37 عصر
با سلام
من دارم برای یک CMS ماژول دانلود Vip درست میکنم 2 تا مشکل دارم:
1) فایل هارو چجوری باید آپلود کرد که از طریق برنامه هایی که سایت رو اسکن میکنن فایل قابل شناسایی نباشه.
2) دنبال یه آموزش برای ساخت لینک های موقت (زمان دار) هستم که با md5 ساخته میشه.

ممنون میشم راهنمایی کنید..

mohammad hoseini
چهارشنبه 10 اردیبهشت 1393, 21:14 عصر
سلام دوست عزیز . سوال اولتون میتونید از htaccess و از روش allow کردن آن فقط برای هاست خودتون و استفاده از Hidden دانلود ها که کلاس شو براتون آپلود میکنم استفاده کنید .

سوال دومتون میتونید لینک های مورد نظر رو به یک صفحه مانند direct.php?hash= ارجاع بدید و در دیتابیس با دریافت کد hash و بدست آوردن زمان از بین رفتن لینک در دیتابیس ( یعنی حداقل سه ستون یکی برای hash و دیگری برای expiretime و یکی نیز برای آدرس redirect نیاز دارید ) آن را کنترل کنید برای مثال :

در دیتابیس یک ریکورد به شکل زیر داریم :

hash = mdsdhasd... و expiretime = 1524525 و redirect = http://google.com

اگر expiretime رو از time() بگیریم اگر time>expiretime بود پیام از بین رفتن لینک رو بده در غیر اینصورت به آدرس redirect کاربر رو redirect کنه .

saman_kiker
چهارشنبه 10 اردیبهشت 1393, 21:36 عصر
ممنون بابت پاسختون.
فقط مسئله ای که پیش میاد برای سایتی که روزی تا 1000 تا دانلود داره به هاست فشار نمیاد که برای هر دانلود یه سطر تو دیتابیس ایجاد کنه ....

mohammad hoseini
چهارشنبه 10 اردیبهشت 1393, 21:45 عصر
دوست عزیز نیاز نیست که هر دانلود یک ریکورد ساخت اگر کاربر vip بود دانلود کنه اگر نبود دانلود نکنه و به صفحه ی خاصی ریدایرکت شود میتوانید نام فایل هم رو از طریق آدرس و ک الگوریتم بگیرید

saman_kiker
چهارشنبه 10 اردیبهشت 1393, 21:51 عصر
بحث vip بودنش به کنار ولی باید time درخواست لینک مشخص باشه (یعنی لحظه ای که کاربر vip روی لینک کلیک کرد) که بعد از یه مدت لینک expired بشه..
من بیشتر منظورم از لینک های زمان دار لینک هایی به شکل زیره که لینک در واقع مستقیمه ولی بعد یه مدت Expired میشه

http://Site-Adress/dl/c25cc165a028c518c5107d7429dcdf7a/53613767/FilmName.mkv

mohammad hoseini
چهارشنبه 10 اردیبهشت 1393, 22:35 عصر
این لینک مستقیم نیست دقیقا کاریه که من گفتم انشالله فردا کد htaccess رو بهتون میدم

saman_kiker
چهارشنبه 10 اردیبهشت 1393, 23:34 عصر
منظورتونو ازخوندن زمان از دیتابیس متوجه نشدم
چون برای هر کس در همون لحظه که میخواد باید لینک و زمان ساخته بشه و مثلا یک روز بعد از درخواست دانلود لینک حذف بشه نمیشه یه زمان تنظیم کرد برای تمام افراد
یعنی برای هر درخواست زاید یه سطر جدید ساخته بشه....

mohammad hoseini
پنج شنبه 11 اردیبهشت 1393, 10:58 صبح
RewriteEngine On
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]


این کد .htaccess رو اگر شما در پوشه اصلی سایتتون قرار بدهید آدرس هایی مانند http://www.test.com/index.php/files/download/file1.zip رو بصورت http://www.test.com/files/download/file1.zip نشان میدهد پس اگر از MVC استفاده کنید files میتواند یک کنترلر و download یک تابع و file1.zip آرگومان 1 تابع باشد . در حالی فکر میکنید پوشه های files و download وجود دارند

saman_kiker
پنج شنبه 11 اردیبهشت 1393, 11:10 صبح
من فقط یه مشکلی تو ارجا به دیتابیس دارم.
منظورتون از سطر زمان expired شدن لینک چیه.
چون باید نسبت به زمانی که طرف درخواست میده بگیم مثلا 2روز بعد از درخواست لینک expired بشه نمیشه یه زمان کلی براش تعیین کرد اگرم بخواییم برای هرکس یه سطر جدید اضافه کنیم به هاست فشار میاد..

mohammad hoseini
پنج شنبه 11 اردیبهشت 1393, 17:49 عصر
دوست عزیز در یک چت روم معمولی در سه ثانیه یک ریکورد جدید ثبت میشه و هر 5 - 10 ثانیه یک آپدیت اگر حساب کنید این مقداری که میگید خیلی هم زیاد نیست شما میتونید برای ماژول تون یک قابلیت بگذارید که لینک های تاریخ گذشته رو حذف کنه . بعد اگر یک سایت روزی 1000 تا دانلود داشته باشه یعنی روزی حدود 10000 بازدید داره که کلا باید هاست قوی داشته باشه

saman_kiker
پنج شنبه 11 اردیبهشت 1393, 23:28 عصر
مسئله اخری که می مونه اینه که نمیشه لینک هارو به شکلی که در مثال هاب بالا گفتم نمایش داده بشه.
من وقتی کلاسی که شما دادید رو فراخوانی می کنم اصلا هیچ ادرسی نشون داده نمیشه این خوبه ولی قابلیت Resume برای سایت های دانلود فیلم خیلی مهمه و اگر لینک ها به صورت .mkv باشه خیلی خوب تر میشه..

mohammad hoseini
جمعه 12 اردیبهشت 1393, 06:23 صبح
درسته این کلاس یک صفحه ی خالی و بدون html رو به یک stream تبدیل میکنه .

saman_kiker
سه شنبه 13 خرداد 1393, 00:25 صبح
این کلاسی که شما دادین خیلی خوبه فقط 2تا مشکل داره :
1- لینک ها قابل resume شدن نیستن
2- حجم نشون نمیده میشه این 2تا مشکل رفع کرد..