چطور از دانلود مستقیم فایل های سایت جلوگیری کنم ؟

این تاپیک 9 پاسخ و 3 مشارکت کننده دارد . آخرین آپدیت توسط :  محمد ،‏ 1 سال پیش .

این تاپیک تاکنون 599 بازدید داشته است .

نویسنده پست
چهار شنبه ، 29 جولای 2015     8:29 ب.ظ #


reza____ebliser

Subscriber
568 پست67 تاپیک

سلام خسته نباشید

من یک صفحه دارم که هر شخص با زدن چند دکمه و چند انتخاب در نهایت به یک لینک دانلود میرسه که یک فایل زیپ با اسم مشخص بر اساس انتخاب های شخص هست

فرضاً در آدرس زیر

حالا شخص با کلیک کردن بر روی دکمه دانلود مشخص شده روی صفحه این فایل رو دانلود میکنه

ولی الان من با وارد کردن مستقیم آدرس بالا نیز میتونم فایل رو دانلود کنم بدون اینکه به صفحه مورد نظر دسترسی داشته باشم

تنها کافیه آدرس رو بدونم

 

چطور میتونم کاری کنم که فقط زمانی بشه دانلود کرد که بر روی دکمه کلیک کنن

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

 

لطفاً راهنمایی بفرمایید.

3  تشکر
:: این تاپیک، پاسخ تائیدشده دارد : مشاهده پاسخ تائید شده توسط سوال کننده
چهار شنبه ، 26 آگوست 2015     5:30 ب.ظ #


محمد مهدی اکرمی

Subscriber
605 پست28 تاپیک

سلام رضا جون .

اگر هنوز مشکلت حل نشده بگو تا راهنماییت کنم .

موفق باشی ... :)

1  تشکر
چهار شنبه ، 26 آگوست 2015     6:48 ب.ظ # پاسخ تائید شده توسط سوال کننده


reza____ebliser

Subscriber
568 پست67 تاپیک

اگر راهنماییم کنی ممنون میش

1  تشکر
چهار شنبه ، 26 آگوست 2015     7:23 ب.ظ #


محمد مهدی اکرمی

Subscriber
605 پست28 تاپیک

شما اول باید یه صفحه مختص دانلود درست کنی . مثلا download.php

اون وقت تو این صفحه این کد ها رو بزار :

if(isset($_GET['id'])) {
$file_id=$_GET['id'];
$file = 'upload/'.$file_id;
if(!file_exists($file)){
die("فایل مورد نظر یافت نشد.");
}else{
$type = filetype($file);
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=".basename($file_id));
header("Content-Transfer-Encoding: binary");
header('Pragma: no-cache');
header('Expires: 0');
die(file_get_contents($file));
}
}

طرز کار اینه که ما میام نام فایل رو به download.php میفرستیم بعد اون برامون لینک دانلود تو صفحه باز میکنه . اینجوری اصلا نمیشه آدرس فایل رو بدست آورد .

اگر فایل هم وجو نداشت یه پیام به کاربر نشون میدیم .

حالا شما میتونی فایل ها رو دیتابیس بزاری و براشون id تعریف کنی تا کار سخت تر بشه و نتونن از روی اسم فایل  ، آدرس رو حدس بزنن .

موفق باشید .... :)

 

 

2  تشکر
چهار شنبه ، 26 آگوست 2015     8:37 ب.ظ #


reza____ebliser

Subscriber
568 پست67 تاپیک

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

1  تشکر
چهار شنبه ، 26 آگوست 2015     8:41 ب.ظ #


محمد مهدی اکرمی

Subscriber
605 پست28 تاپیک

خوب مگه از وردپرس استفاده نمیکنید ؟

این رو بزار تو functions.php اون وقت یه پارامتر خاص براش تعریف کن . یعنی به جای id مثلا بزار download_id . این جوری تو هر صفحه ای اگر در آدرس بار عبارت زیر وارد بشه فایل در همون صفحه دانلود میشه .

=download_id?

اینجوری لازم نیست دیگه download.php بسازی . چون فایل functions.php تو همه صفحه ها لود میشه .

 

0  تشکر
چهار شنبه ، 26 آگوست 2015     8:46 ب.ظ #


محمد مهدی اکرمی

Subscriber
605 پست28 تاپیک

اگر هم اسرار داری که حتما وقتی روی دکمه دانلود کلیک شد شروع به دانلود کنه و اصلا نشه از توی آدرس بار دانلود کرد باید با ajax بنویسی تا بتونی رویداد ها رو کنترل کنی .

تو سمت سرور هم از این کد استفاده کن تا فقط درخواست های ajax پذیرفته بشه :

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';){}

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

موفق باشید .

2  تشکر
چهار شنبه ، 26 آگوست 2015     8:51 ب.ظ #


reza____ebliser

Subscriber
568 پست67 تاپیک

ممنون از راهنمایی های که کردید

خیر متاسفانه وردپرس نیست

و یک سایت سبک و جمع و جور هست که حجم خیلی براش مهمه واسه همین نمیتونم از کتابخونه جیکوئری رو بهش اضافه کنم چون سنگین میشه و از همه تر عمدتاً از طریق گوشی و تبلت باز میشه و اکثراً آجاکس رو نمیشناسن و اجرا نمیشه و عمل نمیکنه

0  تشکر
چهار شنبه ، 26 آگوست 2015     8:52 ب.ظ #


reza____ebliser

Subscriber
568 پست67 تاپیک

برای اینکه مزاحمتون نشم و وقتتون گرفته نشه بعداً کامل مینویسم و نمونه را هم قرار میدم

0  تشکر
چهار شنبه ، 2 دسامبر 2015     1:36 ب.ظ #


محمد

Subscriber
87 پست0 تاپیک

سلام

آقای محمد مهدی اکرمی

دمت گرم عالی بود البته من اینارو تا حدودی بلدم اگه منبع خوبی دارین تا اینارو( در مورد  header )  کامل توضیح داده باشه  بهم معرفی کنید کتاب انگلیسی هم شد مشکلی نداره با تشکر

0  تشکر
پست 1 تا 10 (از مجموع 10 پست)

این تاپیک پاسخ تائید شده دارد و بسته شده است .