ساخت لینک دانلود مدت دار ( انقضا لینک ) در PHP

ساخت لینک دانلود مدت دار ( انقضا لینک ) در PHP

لینک دانلود مدت دار در PHP – حتما خیلی از لینک های دانلود را دیده اید که تاریخ انقضا دارند یعنی بعد از یک زمان تعیین شده مثلا 12 ساعت بعد از ساخت لینک منقضی شده و امکان دانلود وجود نخواهد داشت .

در این آموزش می خواهیم همین امکان را با PHP فراهم می کنیم .

کاری که قرار است انجام دهیم این است که باید با توجه به زمان که کاربر وارد می کند آن را بررسی کنیم در صورتی که از زمان حال سرورو بیشتر بود لینک دانلود معتبر بدهد در غیر اینصورت آن را منقضی نمایش دهد

از timestamp برای زمان استفاده می کنیم .

کدنویسی لینک دانلود مدت دار

<?php

############################
############################
############################
############################
####### RapidCode.iR #######
############################
############################
############################
############################

if (!empty($_GET['filename']) && !empty($_GET['expire'])) {

	$filename = "download/{$_GET['filename']}";

	if (file_exists($filename)) {

		$u_time = time();

		if ($u_time < intval($_GET['expire'])) {

			$filesize = filesize($filename) ? filesize($filename) : 1;
			$filetype = mime_content_type($filename);

			header("Content-Type: {$filetype}" , true);

			header("Content-Length: {$filesize}" , true);

			header("Content-Disposition: inline; filename=\"{$_GET['filename']}\"" , true);

			# header("Content-Disposition: attachment; filename=\"{$_GET['filename']}\"" , true); // force download 

			readfile($filename);

		} else {
			header("HTTP/1.1 403 Forbidden" , true);
			echo "زمان دسترسی به فایل منقضی شده";
		}

	} else {
		header("HTTP/1.1 404 Not Found" , true);
		echo "فایل مورد نظر یافت نشد";
	}

} else {
	header("HTTP/1.1 403 Forbidden" , true);
	echo "2 پارامتر اصلی داده نشده";
}

?>


فایل time.php برای ساخت timestamp زمان حال

<?php

echo time();

?>


دموی لینک دانلود مدت دار

در این دمو زمان حال را به اضافه 15 می کنیم ، یعنی لینک دانلود فقط تا 15 ثانیه بعد معتبر است این مقدار می تواند فرق داشته باشد .

لینک دانلود مدت دار در PHP

دانلود پروژه لینک دانلود مدت دار در PHP

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

لیست نظرات

  1. داوود
    داوود

    ممنونم من تازه کارم یه جدول دیتابیس ساختم با یه ستون کلید و یه ستون زمان اگر یوزر کلید رو به این شکل وارد کنه example.com?key=mykey time()+7200 توی سطری که کلید mykey داره ثبت میشه حالا میخوام توی فایل index.php تعیین کنم که وقتی یوزر اون لینک رو داد تا دو ساعت بتونه وارد یه صفحه خاص بشه و بعد از اون دو ساعت کلید دیگه کار نکنه اما هرچقدر که باهاش سر و کله میرم همش نتایج عجیب و غریب میگیرم

    02 دی 1401 | 15:59:55
  • حسین باقری
    حسین باقری

    درود ، من معمولا این کار رو برای هر کی انجام نمی دم اما از اقبال شما تو تایم آزاد بودم . ابتدا فایل داخل پوشه database را در mysql وارد ( import ) کنید سپس وارد فایل index.php بشید اطلاعات دیتابیس رو بدید که خط 5 index.php هست و به ترتیب host,user,password,database سورس مورد نیاز

    02 دی 1401 | 17:51:18
    • داوود
      داوود

      بابت توجه و کمکتون واقعا ممنونم

      02 دی 1401 | 18:00:39
  • داوود
    داوود

    سلام چطور میشه این کار رو برای یک صفحه از سایت هم استفاده کرد؟ شبیه صفحه پرداخت که تایم داره و مرتبه بعد که مراجعه میشه ارور ۴۰۴ میده

    01 دی 1401 | 08:05:48
    • حسین باقری
      حسین باقری

      درود ، برای این کار می تونید با استفاده از تابع time زمان انقضا برای صفحه تون در نظر بگیرید که در دیتابیس ذخیره بشه مثلا

      time() + 30
      صفحه مورد نظر تا 30 ثانیه دیگر معتبر و می تونید چک کنید که اگر زمان حال از زمان انقضا بیشتر شده بود به کاربر پیغام صفحه منقضی شده یا 404 بده .
      01 دی 1401 | 13:33:14
  • علیرضا
    علیرضا

    سلام وقت بخیر چطور میشه از طریق url دانلود کرد؟ ینی از پوشه خود هاست دانلود نکنه از url سایت های دگه هم بتونیم فایل دانلود کنیم

    29 مهر 1400 | 16:18:20
    • حسین باقری
      حسین باقری

      درود این آموزش کمک تون می کنه ویدیوی پایین مطلب رو ببینید .

      29 مهر 1400 | 16:22:59
  • ali saham
    ali saham

    با سلام خدمت مهندس باقری من کد شما را دانلود و اجرا کردم. ولی فقط فایل txt را اجرا میکند و فایل تصویری درون فولدر دانلود و یا فایل هایی که خودم درون آن گذاشتم را نشان نمی دهد. (xampp) لطفا راهنمایی بفرمایید. با تشکر از شما

    06 مهر 1400 | 20:35:08
    • حسین باقری
      حسین باقری

      درود می تونید با استفاده از پروتکل http از داخل مرورگر فایل و فولدر ها رو مشاهده کنید البته اگر دسترسی داده باشید که معمولا توی xampp فعال هست . بصورت : http://localhost/myproject/files

      19 مهر 1400 | 14:36:08
    contact us