سلام به همه دوستان عزیز.
من می خوام یه سایت بنویسم که برای بعضی از فایلهایی که آپلود کردم، اجازه دسترسی قرار بدم . یعنی فقط افراد خاصی با نام کاربری و رمز عبور بتونن اون فایلها رو دانلود کنن.
ممنون میشم کمکم کنید.
سلام به همه دوستان عزیز.
من می خوام یه سایت بنویسم که برای بعضی از فایلهایی که آپلود کردم، اجازه دسترسی قرار بدم . یعنی فقط افراد خاصی با نام کاربری و رمز عبور بتونن اون فایلها رو دانلود کنن.
ممنون میشم کمکم کنید.
این یک روشه که بجای لینک مستقیم به فایلها از لینک غیرمستقیم استفاده کنید مثل این:
http://site-domain/downlaod.php?file=abc.zip
و توی فایل downlaod.php، اول چک کنید که کاربر اجازه دسترسی به فایل رو داره یا نه. بعد دایرکتوری ها رو به اسم فایل اضافه کنید (یعنی آدرس فایل رو اینجوری کنید: dir1/dir2/dir3/files/abc.zip) و در مرحله آخر کد زیر رو اجرا کنید:
$file = 'files/' . $_GET['file'];
if (file_exists($file))
{
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
else
{
echo "File Not Found!";
}
با این روش می تونید تو این لالوها یه کانتر هم برای شمارش تعداد داونلود برای فایل یا حتی برای هر کاربر درست کنید.
سلام،
اگر اینطور وارد شد چی؟این یک روشه که بجای لینک مستقیم به فایلها از لینک غیرمستقیم استفاده کنید مثل این:
کد:
http://site-domain/downlaod.php?file=abc.zip
http://site-domain/downlaod.php?file.../etc/passwd%00
یا
http://site-domain/downlaod.php?file=config.php
یا
http://site-domain/downlaod.php?file=../../../boot.ini
یا
...؟؟
امیـرحسین عزیز، این روش اشتباه و خطرناک هستش.
ایشون می تونن با یک HTAccess ساده و ایمن اینکاو انجام بدن.
در روشهای ذکر شده توسط دوستان، شما به جای لینک مستقیم به فایل، به یک صفحهی php وارد میشوید که محتوای آن، فایل مورد نظر شماست.
حال شما میتوانید قبل از این که فایل را داخل صفحه کنید، به هر روشی که مایل بودید، کاربر را بررسی کنید تا در صورت مجاز بودن، بتواند دانلود کند.
ممنون از اطلاعات دوستان.
من یه قسمت مشکلم حل شد. با htaccess و htpasswd. یعنی الآن فقط با نام کاربری و رمز عبوری که گذاشتم میشه فایل رو دریافت کرد. این مربوط میشه به هاست.
حالا قسمت دوم مشکل من. الآن برای دریافت فایل، با مرورگر یا با برنامه های دانلود رمز می خواد. حالا چطور می تونم داخل یه برنامه، نام کاربری و رمز عبور رو به هاست بفهمونم که به من اجازه دسترسی بده.
مثال:
AuthName "SiteName Administration"
AuthUserFile /home/domain/.htpasswd
AuthType basic
Require valid-user
Order deny,allow
Deny from all
Allow from 24\.205\.23\.222
Allow from w3.org htmlhelp.com
Allow from googlebot.com
Satisfy Any
جوابه کاملیه ، تشکر.
یه سوال دیگه واسم مونده. این که به کی و به چه مرجعی اجازه دسترسی داده بشه معلوم شد.
دقیقا نمی دونم سوالم رو چطوری مطرح کنم. من می خوام یه برنامه بنویسم که توی اون برنامه یه نام کاربری و رمز عبور از کاربر بگیرم، بعد این اطلاعات رو بدم به هاست و هاست اجازه دسترسی بده، یعنی دیگه این کادر گرفتن پسورد توسط مرورگر ظاهر نشه
نمی دونم اصلا چنین چیزی امکان پذیر هست یا نه.
ممنون میشم جواب بدید.
اگر با HTAccess خالص(Pure) انجام بدید امکان پذیر نیست.
ولی اگر PHP رو دخالت بدید، بله میشه.