PDA

View Full Version : سوال: راه حل برای مخفی نگه داشتم مسیر واقعی فایل



<body>
چهارشنبه 09 بهمن 1387, 13:17 عصر
سلام

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

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

sepehrmm
چهارشنبه 09 بهمن 1387, 17:09 عصر
میتونی تو دیتا بیس مسیر فایل اصلی و یک کد مخصوص اون فایل رو ذخیره کنی مثلا این مسیر فایله : www.example.com/files/mesal.rar و این هم کد فایل : 561289 حالا کافیه لینک به فایل رو اینجوری درست کنی :
www.example.com/download.php?id=561289
تو این فایل هم با کوئری از دیتابیس مسیر اصلی فایل رو بگیر و با استفاده از دستورات HEADER دیالوگ ذخیره کردن فایل رو برای کاربر نمایش بده مثلا :


<?php
//The location of the image.
$path = "images/winter.jpg";
try {
if (is_file ($path)){
if ($file = fopen($path, 'rb')) {
while(!feof($file) and (connection_status()==0)) {
$f .= fread($file, 1024*8);
}
fclose($file);
}
//Use the header function to output an image of .jpg.
$outputname = "myimage";
header ("Content-type: image/jpeg");
//This will force a download.
header("Content-disposition: attachment; filename=".$outputname.".jpg");
print $f;
} else {
throw new exception ("Sorry, file path is not valid.");
}
} catch (exception $e){
echo $e->getmessage();
}

narsic
پنج شنبه 10 بهمن 1387, 00:33 صبح
با سلام
البته توضیحی که دوستمون دادن برای فایلهای تصویری بود jpg ها که شما باید متناسب با نیازتون تغیرش بدید .
موفق باشید

<body>
پنج شنبه 10 بهمن 1387, 09:00 صبح
آقا ممنون خوبشد گفتین وگر نه من کلی گیج میزدم :خجالت:
برای فایلهی مختلف چی؟
مشه پسون فایل همونی باشه که کاربر درخواست میده ؟

مثلا یه جا فایل exe هست و جایی دیگه rar این رو باید چیکار کرد ؟

sepehrmm
پنج شنبه 10 بهمن 1387, 13:25 عصر
با سلام
البته توضیحی که دوستمون دادن برای فایلهای تصویری بود jpg ها که شما باید متناسب با نیازتون تغیرش بدید .
موفق باشید



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

مثلا یه جا فایل exe هست و جایی دیگه rar این رو باید چیکار کرد ؟
از ایجا میتونی تمام نوع های تعریف شده رو ببینی :
http://en.wikipedia.org/wiki/Internet_media_type
ولی
کافیه Content-type رو application/octet-stream تعریف کنی:


header ("Content-type: application/octet-stream");

که برای هر نوع فایلی جواب میده ( چه اونایی که تو لیست بالا هستن چه هر نوع فایل دیگه ای) و پسوندو میتونی هر چی که میخوای بدی یعنی میتونی نوع رو jpg تعریف کنی :


header ("Content-type: image/jpeg");

ولی وقتی دیالوگ ذخیره کردن باز میشه rar نشون داده بشه :


header("Content-disposition: attachment; filename=".$outputname.".rar");

که البته کاربر در باز کردن فایل دچار مشکل میشه !
امیدوارم کامل توضیح داده باشم!:لبخند:

sepehrmm
پنج شنبه 10 بهمن 1387, 13:41 عصر
مثلا یه جا فایل exe هست و جایی دیگه rar این رو باید چیکار کرد ؟
در این مورد باید از روی مسیر فایل پسوند فایل رو به دست بیاری که با استفاده از تابع substr یا preg_split میتونی اینکارو بکنی ، مثال برای substr


$filetype=substr($path,strlen($path)-4);

تو کد بالا اگر عدد 4 جواب نداد 3 و 5 رو تست کن ، تا دقیقا 3 کارکتر آخر مسیر فایل که همون پسوند فایل هست رو بدست بیاری:لبخندساده: