PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : درخواست راهنمايي براي محدود كردن فايل دانلود



aghaee
December 13th, 2010, 08:54
سلام
فرض كنيد من پروژه http://www.webhostingtalk.ir/f148/14266/ رو به درستي راه اندازي كردم
حال ميخوام اين يوزرهايي كه ثبت نام كردن بتونن يكسري فايل كه من معرفي مي كنم رو دانلود كنم!‌

مسئله مهم اينجاست كه نمي خوام غير از يوزرهاي كسي به اون فايل ها دسترسي داشته باشه
آخه امكان داره لينك بيفته دست يكي ديگه اون موقع به راحتي ميتونه فايل رو دانلود كنه بدون اينكه عضويت داشته باشه

نمي شه واسه فايل هاي zip هم session گذاشت كه فقط يوزها بتونن دانلود كنن؟


مسئله دوم اينكه مثلا يوزر ثبت نام كرده و من ميخوام بعد از 6 ماه نام كاربريش غير فعال بشه! اينو چطوري ميتونم انجام بدم؟
ممنوون ميشم راهنمايي كنيد..

با تشكر فروان

Rezash
December 13th, 2010, 16:51
اين تاپيك رو ببينيد :
http://www.webhostingtalk.ir/f147/7863/
علاوه بر محدود كردن دانلود براي اعضا ميشه كاري كرد كه مثلا لينك هاي اعضاي يا مهمانان يا گروه خاصي از اعضا قابليت resume و سرعت مشخص و ... داشته باشه (با كدهاي موجود در تاپيك بالا)

phpniki
January 1st, 2011, 21:33
با سلام
اگه یه فلدر داری که می خوای اون فلدر و تمام فلدر های زیر مجموعشو محدود کنی و کاربرا حتما با یوزر و پس دانلود کنن می تونی از سورس زیر استفاده کنی
تو این مثال فلدر files رو محدود می کنی
این کد رو تو فایل .htaccess کپی کنید



Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteBase /

RewriteRule ^files/(.*)$ download.php?filename=$1





این کد رو تو فایل download.php قرار بدید:




<?
//sample filename = Hamed/myfile.zip

$file_path = $_REQUEST['filename'];
list($username,$file_name) = explode("/",$file_path);


$member_info = checkLogin(); // -1 means user is not login
if($member_info != -1)
$LoginSuccessful = true;
else
{
$LoginSuccessful = false;
$Logout = false;
}
$CurrentUrl = 'http://' . $_SERVER['HTTP_HOST'] . '/download.php';


// if user send the username and password
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){

$usr = $_SERVER['PHP_AUTH_USER'];
$pwd = $_SERVER['PHP_AUTH_PW'];

$member_info = login($usr,$pwd,1);
if($member_info != -1)
$LoginSuccessful = true;
else
$LoginSuccessful = false;
if ($usr == 'reset' && $pwd == 'reset' && isset($_GET['Logout'])){
$Logout = true;
}

}

if ($Logout){

print 'You are now logged out.';
print '<br/>';
print '<a href="http://'.$CurrentUrl.'">Login again</a>';
}
elseif ($LoginSuccessful){
downloadFile("files/$file_path",$file_name,900,false);

}
else
{
header('WWW-Authenticate: Basic realm="Top-secret area"');
header('HTTP/1.0 401 Unauthorized');

print "Sorry, login failed!\n";
print "<br/>";
print '<a href="http://' . $CurrentUrl . '">Try again</a>';

}

function downloadFile($fileLocation,$fileName,$maxSpeed = 100,$doStream = false){
if (connection_status()!=0) return(false);
$extension = strtolower(end(explode('.',$fileName)));

$fileTypes['swf'] = 'application/x-shockwave-flash';
$fileTypes['pdf'] = 'application/pdf';
$fileTypes['exe'] = 'application/octet-stream';
$fileTypes['zip'] = 'application/zip';
$fileTypes['doc'] = 'application/msword';
$fileTypes['xls'] = 'application/vnd.ms-excel';
$fileTypes['ppt'] = 'application/vnd.ms-powerpoint';
$fileTypes['gif'] = 'image/gif';
$fileTypes['png'] = 'image/png';
$fileTypes['jpeg'] = 'image/jpg';
$fileTypes['jpg'] = 'image/jpg';
$fileTypes['rar'] = 'application/rar';

$fileTypes['ra'] = 'audio/x-pn-realaudio';
$fileTypes['ram'] = 'audio/x-pn-realaudio';
$fileTypes['ogg'] = 'audio/x-pn-realaudio';

$fileTypes['wav'] = 'video/x-msvideo';
$fileTypes['wmv'] = 'video/x-msvideo';
$fileTypes['avi'] = 'video/x-msvideo';
$fileTypes['asf'] = 'video/x-msvideo';
$fileTypes['divx'] = 'video/x-msvideo';

$fileTypes['mp3'] = 'audio/mpeg';
$fileTypes['mp4'] = 'audio/mpeg';
$fileTypes['mpeg'] = 'video/mpeg';
$fileTypes['mpg'] = 'video/mpeg';
$fileTypes['mpe'] = 'video/mpeg';
$fileTypes['mov'] = 'video/quicktime';
$fileTypes['swf'] = 'video/quicktime';
$fileTypes['3gp'] = 'video/quicktime';
$fileTypes['m4a'] = 'video/quicktime';
$fileTypes['aac'] = 'video/quicktime';
$fileTypes['m3u'] = 'video/quicktime';

$contentType = $fileTypes[$extension];


header("Cache-Control: public");
header("Content-Transfer-Encoding: binary\n");
header('Content-Type: $contentType');

$contentDisposition = 'attachment';

if($doStream == true){
$array_listen = array('mp3','m3u','m4a','mid','ogg','ra','ram','wm ',
'wav','wma','aac','3gp','avi','mov','mp4','mpeg',' mpg','swf','wmv','divx','asf');
if(in_array($extension,$array_listen)){
$contentDisposition = 'inline';
}
}

if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
$fileName= preg_replace('/\./', '%2e', $fileName, substr_count($fileName,
'.') - 1);
header("Content-Disposition: $contentDisposition;filename=\"$fileName\"");
} else {
header("Content-Disposition: $contentDisposition;filename=\"$fileName\"");
}

header("Accept-Ranges: bytes");
$range = 0;
$size = filesize($fileLocation);

if(isset($_SERVER['HTTP_RANGE'])) {
list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']);
str_replace($range, "-", $range);
$size2=$size-1;
$new_length=$size-$range;
header("HTTP/1.1 206 Partial Content");
header("Content-Length: $new_length");
header("Content-Range: bytes $range$size2/$size");
} else {
$size2=$size-1;
header("Content-Range: bytes 0-$size2/$size");
header("Content-Length: ".$size);
}

if ($size == 0 ) { die('Zero byte file! Aborting download');}
set_magic_quotes_runtime(0);
$fp=fopen("$fileLocation","rb");

fseek($fp,$range);

while(!feof($fp) and (connection_status()==0))
{
print(fread($fp,1024*$maxSpeed));
flush();
ob_flush();
sleep(1);
}
fclose($fp);

return((connection_status()==0) and !connection_aborted());
}
?>