PDA

View Full Version : سوال: امکان دانلود فایل فقط برای کاربران سایت



crafcrab
سه شنبه 14 آبان 1392, 00:38 صبح
سلام
من میخواستم یه کد بزنم که وقتی کاربر وارد اکانت خود شد لینک دانلود فایل ها رو بتونه ببینه
تا اینجا مشکلی نیست

ولی شما فکر کن این لینک رو کاربر همزمان بده به یکی از دوستاش که عضو سایت نیست
آن وقت آن شخص با این که عضو سایت نیست میتونه آن فایل دانلود کنه چطوری مانع این کار شم

توجه :
اگه امکان داره
نمیخوام که فایل زمان انقضا برای دانلود داشته باشه یعنی بعد چند هفته هم بتونه از همون لینک دانلود کنه

saeidpsl
سه شنبه 14 آبان 1392, 03:27 صبح
بفرما (https://www.google.com/webhp?hl=en#hl=en&q=php+allow+a+user+to+download+a+file&safe=active):چشمک:

saeidpsl
سه شنبه 14 آبان 1392, 09:28 صبح
http://forums.phpfreaks.com/topic/152452-how-to-allow-download-of-files-only-if-logged-in/

crafcrab
سه شنبه 14 آبان 1392, 09:53 صبح
ممنون
یه سوال این تابع header چیکار میکنه ؟



header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public", false);
header("Content-Description: File Transfer");
header("Content-Type: " . $type);
header("Accept-Ranges: bytes");
header("Content-Disposition: attachment; filename=\"" . $header_file . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file_real));

crafcrab
سه شنبه 14 آبان 1392, 10:01 صبح
header("Expires: 0");


تا اونجایی که دیدم برای مدیریت تاریخ انقضا فایل هست


Pragma: public
منظور از public چی هست اینجا واسه محدود کردن کاربران هست ؟

crafcrab
سه شنبه 14 آبان 1392, 10:36 صبح
یکجا هم دیدم علاوه بر استفاده از همین header باید با .htaccess محدود کنیم تا همه نتونن دانلود کنن مثلا تو .htaccess چیباید نوشت تا فقط افرادی که کاربر سایت هستند بتونند دانلود کنند

crafcrab
سه شنبه 14 آبان 1392, 11:15 صبح
باید با .htaccess محدود کنیم تا همه نتونن دانلود کنن و مجبور شه بره تو صفحه دانلود که اونجا هم اعتبار کاربر چک میشود

saeidpsl
سه شنبه 14 آبان 1392, 12:33 عصر
شما میگید اگه کاربر لاگین شده بتونه فایل رو دانلود کنه مثل این




if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {

$file = "mp3/a.mp3";
header( 'Cache-Control: public' );
header( 'Content-Description: File Transfer' );
header( "Content-Disposition: attachment; filename={$file}" );
header( 'Content-Transfer-Encoding: binary' );
readfile($file);
exit;
}



برای اینکه کسی با لینک مسقیم فایل نتونه دانلود کنه
با برنامه ftp ya CuteFTP میری قسمت permissions فایل میزای 600 همین


بهترین روش

البته یه روش هم واسه کسی خویه که سرور مال خودشه
یه اسکریپ ftp به اسم Proftpd نصب میکنی رو ubuntu یا سیستم لینوکس دیگه
که مستقیم وصل میشه به MySQL و جدول یوزرها
مثلا وقتی لینک فایل رو رو میزتی میگه یوز و پسورد بده و بعد وقتی وارد کردی یوزر رو و پس رو از MySQL چک میکنه اگه درست بود اجازه دانلود رو بهت میده
مثال (https://www.google.com/webhp?hl=en#hl=en&psj=1&q=ubuntu+proftpd+mysql+virtual+users&safe=active)
اگه تازه واردی اون روش بالا برات بهتره
موفق باش:چشمک: