دانلود فایل بدون نمایان شدن مسیر اصلی

ooghry

Member
سلام
خیلی جاها هست که فایلی دانلود می کنی ولی آدرس اصلی فایل مشخص نمیشه من اول خواستم از include("file.zip"); استفاده کنم ، نشد.
می خواستم ببینم کسی میتونه کمکم کنه!
 

iroweb

Member
سلام . اين راهي كه انجام دادي اشتباهه . ببين بايد توسط $_GET بياي يك عبارت روي بگيري مثلا id=2 بعد داخل فايلت بگي اگر id=2 بود برو به اين آدرس . اساس كارش همينه .
 

ooghry

Member
ببین شاید بشه با GET بگیریم ولی من میخوام بعد از اینکه شماره فایلو از url گرفتم ببینم اون یوزر اجازه دانلود اون فایلو داره یا نه اگه داشت بره واسه دانلود.
میخوام مکان اصلی آپلود فایل موقع دانلود مشخص نشه.
 

jhoseini

Member
PHP:
<?
if(/*شرط اجازه دانلود فایل*/){
  $id = $_REQUEST['id'];
  $res = mysql_query(" select `file-addr` from `file_archive` where `id`='$id' limit 1  ");
  $file_addr = mysql_result($res,0,0);
  header('Content-disposition: filename='.basename($file_addr).'');
  header('Content-type: unknown/unknown');
  echo implode('',file($file_addr));
  exit;
}
?>
271.gif
 

ooghry

Member
می دونم این تاپیک قدیمیه ولی من الان که وقت این رسیده که از کدی که دوستمون داده استفاده کنم با easy php راحت جواب می گیرم ولی وقتی رو سرور آپلود می کنم و می خوام فایلو دانلود کنم عوض اینکه browser مجبور بشه صفحه ی ذخیره کردن باز کنه یه عالمه کاراکتر عجق وجق میاره ، لطفا کمک کنید.
من تقریبا همه ی کدهایی که تو راهنمای سایت php.net گذاشته بودن و امتحان کردم روی لوکال جواب میداد ولی رو سرور نه!!!
البته به جای attachment; از inline; هم استفاده کردم ولی جواب نداد ، آدرسها رو هم با http://www و هم با http:// وارد کردم ولی نشد.
من دقیقا این کد استفاده کردم که روی سرور فقط جواب نگرفتم :

$efile = mysql_result($res,0,0);

$name=pathinfo($efile);

//print_r($name);

$base=$name['basename'];

$len = filesize($efile);
header('Content-type: unknown/unknown');
header('Content-Length: $len');
header('Content-Disposition: attachment; filename='.$base.'');
readfile($efile);
exit();
 

peyman1987

Member
دوست عزیز این اشکال از کد نیست. مرورگر کاربر جوری تنظیم شده که فایل مورد نظر رو باز کنه و اونو دانلود نکنه.
 

ooghry

Member
والا من هم با IE6 و هم با firefox2 روی لوکال (easy php) جواب گرفتم ولی وقتی روی سایت آپلود می کنم این مشکل پیش میاد به نظرم کدم مشکل داره!! حالا کجاش؟!خدا می دونه!
وقتی مثلا فایل rar برای دانلود صدا زده میشه تو مرورگر یه همچین کدهایی میاد : Rar!�ϐs��
 

jhoseini

Member
PHP:
<?
$efile = mysql_result($res,0,0); 

$name=pathinfo($efile);

//print_r($name);

$base=$name['basename'];

$len = filesize($efile);
header('Content-type: unknown/unknown');
//header('Content-Length: $len'); مشکلت اینجاست !
header('Content-Length: '.$len);
header('Content-Disposition: attachment; filename='.$base.'');
readfile($efile);
exit();
?>
حلا چک کن کار میکنه
10.gif
 
آخرین ویرایش:

ooghry

Member
PHP:
<?
$efile = mysql_result($res,0,0); 

$name=pathinfo($efile);

//print_r($name);

$base=$name['basename'];

$len = filesize($efile);
header('Content-type: unknown/unknown');
//header('Content-Length: $len'); مشکلت اینجاست !
header('Content-Length: '.$len);
header('Content-Disposition: attachment; filename='.$base.'');
readfile($efile);
exit();
?>
حلا چک کن کار میکنه
10.gif

ممنونتم ولی این کدی که شما هم گذاشتی کار نکرد ، طلسم افتاده ، کلا کدایی که مربوط به طول فایل بود برداشتم ولی بازم نشد . گفتم که روی لوکال درست کار می کنه ولی روی سرور نه .
حالا اگه راه حلی پیدا نشه مشکلی نیست ولی دلم می خواد بدونم اشکال اصلی از کجاست.
 

irdavidnet

Banned
بعضی وقتها که اینطوری میشه ، مال DAP و برنامه های دانلودر هست مثل : DAP - ORBIT DOWNLOADER - FRESH DOWNLOAD - .... که اگه طرف DAP داشته باشه ، شما به هیچ وجه نمی تونی طرف رو بپیچونی ، من تو بعضی سایتهای پولی DAP رو روشنش می کنم ، وقتی می ره رو فایل php تشخیص می ده فایل کجاست . به نظرم DAP آنالیز می کنه کد های php رو بعدش هم دانلود می کنید !
به همین راحتی ، برای این که نتونید قبلش به کاربر بگید که DAP خودش رو Disable کنه موقت بعدش روشن کنه !!!
 

irdavidnet

Banned
در مورد اون که بعضی وقت ها متن نشون می ده ، برای اینه که Dap یا برنامه دانلودر قاطی می کنه
 

ooghry

Member
در مورد اون که بعضی وقت ها متن نشون می ده ، برای اینه که Dap یا برنامه دانلودر قاطی می کنه

دقت نمیکنین دیگه !! من روی لوکال جواب میگیرم ولی وقتی رو سرور سایت آپلود می کنم به این مشکل بر میخورم ، مشکل از dap نیست.
 

jhoseini

Member
دقت نمیکنین دیگه !! من روی لوکال جواب میگیرم ولی وقتی رو سرور سایت آپلود می کنم به این مشکل بر میخورم ، مشکل از dap نیست.

شما از رو یه سیستم دیگه تست کنید، اینطور که بوش میاد، مشکل از pc شماست
 

ooghry

Member
من بالاخره عقلم رسید که ببینم اون کدها به صورت تنها رو سرور کار میکنه یا نه!
تنهایی کار میکنه ولی وقتی قبل اون header ها یه سری دستور می نویسم کار نمیکنه و پنجره ذخیره سازیو باز نمیکنه ، البته این دستورات هیچ خروجی ندارد ولی از اینکه پنجره ی ذخیره باز بشه جلوگیری میکنه و همون کاراکترهای عجیب میاره.
نظرتونو میشه بگین ؟
 

jhoseini

Member
دستورات قبل از این اسکریپت نباید هیچ خروجی داشته باشن، چون همونطور که میبینید، بالای این اسکریپت اولین و اخرین فرمان ارسالheader اجرا میشه
و اگه مورد فوق برقراره پس احتمالاً ادیتور شما فایل ها رو بصورت utf8 ثبت نمیکنه و یه سری کارکتر که دیده نمیشن در لحظه ی اجرای اسکریپت ارسال میشن، سعی کنید از notepad++ یا ادیتور هایی که utf8 رو ساپورت میکنن استفاده کنید
271.gif
 

ooghry

Member
خودم خندم می گیره وقتی میخوام اشکالو بگم ، اشکال فقط به خاطر این بود:
کد:
include("jdate.php");
جالب اینجاست که من فایل کانفیگ رو هم اینکلود کردم ولی مشکلی پیش نیومد ولی احتمالا چون تابع jdate مقداری بر میگردونه واسه دانلود مشکل ایجاد میکنه ، البته بازم میگم روی لوکال با easy php 1.7 مشکلی نبود و فقط سرور با php 4.4.7 به این مساله گیر میداد.
به هر حال از همه ی دوستان ممنونم.
 

جدیدترین ارسال ها

بالا