ساخت لینک دانلود مدت دار ( انقضا لینک ) در 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 ثانیه بعد معتبر است این مقدار می تواند فرق داشته باشد .
لیست نظرات
ممنونم من تازه کارم یه جدول دیتابیس ساختم با یه ستون کلید و یه ستون زمان اگر یوزر کلید رو به این شکل وارد کنه example.com?key=mykey time()+7200 توی سطری که کلید mykey داره ثبت میشه حالا میخوام توی فایل index.php تعیین کنم که وقتی یوزر اون لینک رو داد تا دو ساعت بتونه وارد یه صفحه خاص بشه و بعد از اون دو ساعت کلید دیگه کار نکنه اما هرچقدر که باهاش سر و کله میرم همش نتایج عجیب و غریب میگیرم
درود ، من معمولا این کار رو برای هر کی انجام نمی دم اما از اقبال شما تو تایم آزاد بودم . ابتدا فایل داخل پوشه database را در mysql وارد ( import ) کنید سپس وارد فایل index.php بشید اطلاعات دیتابیس رو بدید که خط 5 index.php هست و به ترتیب host,user,password,database سورس مورد نیاز
بابت توجه و کمکتون واقعا ممنونم
سلام چطور میشه این کار رو برای یک صفحه از سایت هم استفاده کرد؟ شبیه صفحه پرداخت که تایم داره و مرتبه بعد که مراجعه میشه ارور ۴۰۴ میده
درود ، برای این کار می تونید با استفاده از تابع time زمان انقضا برای صفحه تون در نظر بگیرید که در دیتابیس ذخیره بشه مثلا
صفحه مورد نظر تا 30 ثانیه دیگر معتبر و می تونید چک کنید که اگر زمان حال از زمان انقضا بیشتر شده بود به کاربر پیغام صفحه منقضی شده یا 404 بده .سلام وقت بخیر چطور میشه از طریق url دانلود کرد؟ ینی از پوشه خود هاست دانلود نکنه از url سایت های دگه هم بتونیم فایل دانلود کنیم
درود این آموزش کمک تون می کنه ویدیوی پایین مطلب رو ببینید .
با سلام خدمت مهندس باقری من کد شما را دانلود و اجرا کردم. ولی فقط فایل txt را اجرا میکند و فایل تصویری درون فولدر دانلود و یا فایل هایی که خودم درون آن گذاشتم را نشان نمی دهد. (xampp) لطفا راهنمایی بفرمایید. با تشکر از شما
درود می تونید با استفاده از پروتکل http از داخل مرورگر فایل و فولدر ها رو مشاهده کنید البته اگر دسترسی داده باشید که معمولا توی xampp فعال هست . بصورت : http://localhost/myproject/files