نمایش نتایج: از شماره 1 تا 3 , از مجموع 3

موضوع: درخواست راهنمايي براي محدود كردن فايل دانلود

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #3
    عضو جدید phpniki آواتار ها
    تاریخ عضویت
    Jan 2011
    محل سکونت
    اینترنت
    نوشته ها
    15
    تشکر تشکر کرده 
    0
    تشکر تشکر شده 
    14
    تشکر شده در
    12 پست

    پیش فرض پاسخ : درخواست راهنمايي براي محدود كردن فايل دانلود

    با سلام
    اگه یه فلدر داری که می خوای اون فلدر و تمام فلدر های زیر مجموعشو محدود کنی و کاربرا حتما با یوزر و پس دانلود کنن می تونی از سورس زیر استفاده کنی
    تو این مثال فلدر 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());
    } 
    ?>

  2. تعداد تشکر ها از phpniki به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 27
    آخرين نوشته: July 1st, 2017, 02:01
  2. پاسخ ها: 0
    آخرين نوشته: January 20th, 2014, 01:43
  3. راهنمايي خريد هاست و دامين
    توسط mehdihassani55 در انجمن هاست اشتراکی
    پاسخ ها: 0
    آخرين نوشته: October 14th, 2012, 13:35
  4. پاسخ ها: 10
    آخرين نوشته: April 16th, 2011, 00:25
  5. راهنمايي براي خريد هاست دانلود
    توسط deathdemon در انجمن درخواست هاست اشتراکی
    پاسخ ها: 8
    آخرين نوشته: October 8th, 2010, 19:49

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •