PDA

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



navidkhalilian
پنج شنبه 06 آبان 1389, 19:21 عصر
سلام دوستان من یه فایل روی هاست دارم اما نمی خوام کسی بتونه اونو دانلود کنه می خوام بگم کسی که با نام کاربری وارد سایت شده بتونه دانلود کنه.اما نمی دونم چطوری باید این کارو انجام بدم.لطفاً دوستان کمک کنند.فوووووووووووووووری.مر سی:تشویق:

binyaft
پنج شنبه 06 آبان 1389, 19:42 عصر
زمانی که کاربر لاگین کرد یک سشن ایجاد کنید به صورت زیر


$_SESSION['login']=true;
برای نمایش لینک دانلود چک کنید ببینید که کاربر لاگین کرده یا نه


if($_SESSION['login']){echo 'Download link!';}

موفق باشید

پ.ن : چه ربطی به لینک مدت دار داشت؟

funpatogh
پنج شنبه 06 آبان 1389, 21:54 عصر
یک نمون براتون میزارم استفاده کنید البته کمی هم دانش در این زمینه لازم هست
توی فایل index.html لیست فایل هاتون رو بگزارید با id هر فایل
توی دیتابیس هم 2 تا جدول داریم که توی user نام کاربری ذخیره کن که رمز عبور هم md5 کن و با لاگین هم کاربر باید وارد بشه تا اجازه دانلود داشته باشه

navidkhalilian
جمعه 07 آبان 1389, 00:04 صبح
ببخشید الان این فایلی که گزاشتید لینکش مدت دار هست؟؟؟؟

funpatogh
جمعه 07 آبان 1389, 00:13 صبح
نه مدت دار یعنی چی؟

$ M 3 H R D A D $
جمعه 07 آبان 1389, 00:58 صبح
منظورت اینه که سشن یا کوکی بعد یک مدت که لاگین میشه expire بشه ؟ یا خود لینک پاک بشه ؟
اگه دومیه یهو همی الن زد به سرم که تغییر نام بدیم لینک و به اسم سشن که میتونه زمان باشه یا بازه ای از زمان

binyaft
جمعه 07 آبان 1389, 09:22 صبح
شاید منظور ایشون اینه که کاربر بعد از یک مدتی که به دانلود ادامه نداد ( با دانلود منیجر ) سرور اجازه ادامه دانلود رو نده و کاربر دوباره اون فایل رو از اول دانلود کنه!

funpatogh
جمعه 07 آبان 1389, 13:44 عصر
خوب کلا سیستم های که با سشن کار میکنند بعد از یک مدتی که با سیستم کار نکنیم برای ادامه کار دوباره باید لاگین کرد

peachcms
جمعه 07 آبان 1389, 13:57 عصر
خوب کلا سیستم های که با سشن کار میکنند بعد از یک مدتی که با سیستم کار نکنیم برای ادامه کار دوباره باید لاگین کرد


بله این زمان هم میشه تنظیم کرد




<?php

/* set the cache limiter to 'private' */

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

/* set the cache expire to 30 minutes */
session_cache_expire(30);
$cache_expire = session_cache_expire();
?>

و یا برای مدت زمان کمتر




<?php
if (!isset($_SESSION['timeout_idle'])) {
$_SESSION['timeout_idle'] = time() + MAX_IDLE_TIME;
} else {
if ($_SESSION['timeout_idle'] < time()) {
//destroy session
} else {
$_SESSION['timeout_idle'] = time() + MAX_IDLE_TIME;
}
}
?>

navidkhalilian
جمعه 07 آبان 1389, 14:19 عصر
شاید منظور ایشون اینه که کاربر بعد از یک مدتی که به دانلود ادامه نداد ( با دانلود منیجر ) سرور اجازه ادامه دانلود رو نده و کاربر دوباره اون فایل رو از اول دانلود کنه!
دقیقا منظوریم همینه که این دوستمون گفتند.می خوام اگر بعد از مثلا 2 دقیقه دانلود را آغاز نکرد لینک از بین بره یعنی expire بشه.

peachcms
جمعه 07 آبان 1389, 14:32 عصر
دقیقا منظوریم همینه که این دوستمون گفتند.می خوام اگر بعد از مثلا 2 دقیقه دانلود را آغاز نکرد لینک از بین بره یعنی expire بشه.

با سلام

خوب شما باید با تاریخ و جلسه کار کنین

به این صورت که میگید وقتی وارد این صفحه برای دانلود شدم یه جلسه رو با مقدار زمان فعلی ذخیره کن و یه متغیر هم باید ایجاد کنی که زمان ذخیره شده در جلسه رو + زمانی که می خواهی بکنه بعد لینک دانلود هاتو غیر مستقیم بکنی و برای دانلود توکن بفرستی و اعتبار سنجی کنی اگه برای ان زمان معتبر بود که شورع به دانلود کردن بکه اگر نه که هدایت کنه به جای دیگه بعد برای نمایش ندادن لینک هم از اون متغیر که گفتی زمان فعلی رو + زمانی که می خواهی بکنی استفاده کن به این صورت که میگی که اگه مهر تاریخ الان از اون متغیر بزرگتر بود لینک رو نشون نده در غیر این صورت نشون بده

خودمم نفهمیدم چی گفتم :D از بس زیاد بود

امید وارم به مفید باشه

ممنون

navidkhalilian
جمعه 07 آبان 1389, 16:12 عصر
دوست عزیز میشه یه مثل بزارید.ممنون

peachcms
جمعه 07 آبان 1389, 16:44 عصر
دوست عزیز میشه یه مثل بزارید.ممنون

اینم یه مثال ساده حالا برای دانلود غیر مستقیم هم میتونی همچین کاری بکنی یا توکن سازی کنی



<?php
session_start();

function MakeTime($day = 1,$hour = 0,$minute = 0)
{
$days = ($day * 24 * 60 * 60);
$hours = ($hour * 60 * 60);
$min = ($minute * 60);
$PlusNumber = ($days + $hours + $min);
$GeneratedDate = (time() + $PlusNumber);

return $GeneratedDate;
}

if(!isset($_SESSION['NowTime']) || $_SESSION['NowTime'] < time())
{
$_SESSION['NowTime'] = MakeTime(0,0,10);
}

if(isset($_SESSION['NowTime']) && $_SESSION['NowTime'] > time())
{
echo "Download Link";
}
else
{
echo "none";
}

?>

navidkhalilian
یک شنبه 09 آبان 1389, 16:22 عصر
دوست عزیز این قسمت که نوشته echo "Download Link"; چی باید نوشت؟؟؟؟

binyaft
یک شنبه 09 آبان 1389, 16:48 عصر
لینک دانلود

navidkhalilian
یک شنبه 09 آبان 1389, 17:45 عصر
خوب اینجوری طرف لینک رو که دید دفعه بعد میاد مستقیما لینک رو کپی می کنه تو آدرس بار و دانلودش می کنه.من می خوام مثل راپیدشیر باشه.کد شما فقط لینک را تو یه بازه زمانی نمایش میده اما من می خوام کاربر نتونه فایل رو با لینک مستقیم دانلود کنه می خوام مثل راپید شیر باشه که هر دفعه لینک همون فایل عوض میشه.

peachcms
یک شنبه 09 آبان 1389, 18:33 عصر
خوب اینجوری طرف لینک رو که دید دفعه بعد میاد مستقیما لینک رو کپی می کنه تو آدرس بار و دانلودش می کنه.من می خوام مثل راپیدشیر باشه.کد شما فقط لینک را تو یه بازه زمانی نمایش میده اما من می خوام کاربر نتونه فایل رو با لینک مستقیم دانلود کنه می خوام مثل راپید شیر باشه که هر دفعه لینک همون فایل عوض میشه.
با سلام

خوب من هم به خاظر این گفتم توکن سازی کنین، و از لینک دانلود غیر مستقیم استفاده کنین

برای آپلود هم اگر خیلی محرمانه و .. هستند که در دیتابیس ذخیره کنین در غیر این صورت می تونین از الگوریتم پیاده سازی لینک دانلود یک بار مصرف استفاده کنین که اگر خودتون یه چند دقیقه روش فکر کنین نتیجه میگیرید.

با سپاس

abdollah110110
دوشنبه 10 آبان 1389, 18:23 عصر
سلام
منظور از لینک های مدت دار چیست؟
متشکرم