VideoHelp Forum




+ Reply to Thread
Results 1 to 4 of 4
  1. I develop a PHP code and count how much data was downloaded by the client. My code is working fine if someone directly requests my file from a browser. But if someone installs a Mozilla extensions like ‘’downthemall’’ and then the url is requested by that extension then it requests the file URL 4 times so I get the downloaded data 4 times. How do I fix this? The same happened when the user is using jDownloader software or any software.

    PHP Code:
    <?php

    function getMimeType($fileName)
    {
        
    $c_type_default "application/octet-stream";
        
    $content_types = array(
            
    "exe" => "application/octet-stream",
            
    "zip" => "application/zip",
            
    "mp3" => "audio/mpeg",
            
    "mpg" => "video/mpeg",
            
    "avi" => "video/x-msvideo",
             
    "mp4" => "video/mp4",
        );
    //  echo isset($content_types[pathinfo($fileName, PATHINFO_EXTENSION)]) ? $content_types[pathinfo($fileName, PATHINFO_EXTENSION)] : $c_type_default;     
        
    return isset($content_types[pathinfo($fileNamePATHINFO_EXTENSION)]) ? $content_types[pathinfo($fileNamePATHINFO_EXTENSION)] : $c_type_default;
    }
    function 
    output_file($file$name)
    {

     
    /*
     This function takes a path to a file to output ($file),  the filename that the browser will see ($name) and  the MIME type of the file ($mime_type, optional).
     */

     //Check the file premission
     
    if(!is_readable($file)) die('File not found or inaccessible!');

     
    $size filesize($file);

     
    $name rawurldecode($name);

     
    //turn off output buffering to decrease cpu usage
         
    @ob_end_clean(); 
        include(
    '../includes/configg.php');

        
    // Start Code  For Total Downloaded Data Size by The LoggedIn User
            
    $user="select * from $TBusers where id=".$_SESSION['log_id'];
            
    $result_user mysqli_query($conn$user) ;
            
    $row mysqli_fetch_assoc($result_user);
            
    $lastsotrage $row['down'];  
            
    $curr_date$row['curr_date'];
            
    $today_datedate('d-m-y');
            
    $daily_downloaded_data$row['daily_downloaded_data'];
            if(
    $curr_date != $today_date)
            { 
                  
    $update_curr_date="update $TBusers set curr_date ='$today_date', daily_downloaded_data =0 where id=".$_SESSION['log_id'];  // Set Curr_date by Today Date For check Daily Downloaded Data Limit

                  
    mysqli_query($conn,$update_curr_date) ;
                  
    $daily_downloaded_data=0;
            }
            
    /*else
            {
                 if($daily_downloaded_data>=(20*1024*1024*1024)){           // Check Daily  Download Data Limit 20GB Exceed or not
                 header('Location: http://idownload.club/members/download.php');
                 exit;}
            }*/


     // required for IE, otherwise Content-Disposition may be ignored
     
    if(ini_get('zlib.output_compression'))
     
    ini_set('zlib.output_compression''Off');

     
    header('Content-Type: ' getMimeType($name));
     
    header('Content-Disposition: attachment; filename="'.$name.'"');
     
    header("Content-Transfer-Encoding: binary");
     
    header('Accept-Ranges: bytes');

     
    /* The three lines below basically make the 
        download non-cacheable */
     
    header("Cache-control: private");
     
    header('Pragma: private');
     
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

     
    // multipart-download and download resuming support
     
    if(isset($_SERVER['HTTP_RANGE']))
     {
        list(
    $a$range) = explode("=",$_SERVER['HTTP_RANGE'],2);
        list(
    $range) = explode(",",$range,2);
        list(
    $range$range_end) = explode("-"$range);
        
    $range=intval($range);
        if(!
    $range_end) {
            
    $range_end=$size-1;
        } else {
            
    $range_end=intval($range_end);
        }

        
    $new_length $range_end-$range+1;
        
    header("HTTP/1.1 206 Partial Content");
        
    header("Content-Length: $new_length");
        
    header("Content-Range: bytes $range-$range_end/$size");
     } else {
        
    $new_length=$size;
        
    header("Content-Length: ".$size);
     }

     
    /* Will output the file itself */
     
    $chunksize 1*(1024*1024); //you may want to change this
     
    $bytes_send 0;
     if (
    $file fopen($file'r'))
     {
        if(isset(
    $_SERVER['HTTP_RANGE']))
        
    fseek($file$range);

        while(!
    feof($file) && 
            (!
    connection_aborted()) && 
            (
    $bytes_send<$new_length)
              )
        {
            
    $buffer fread($file$chunksize);
            print(
    $buffer); //echo($buffer); // can also possible
            
    flush();
            
    $bytes_send += strlen($buffer);
        }
     
    fclose($file);

                
    $lastsotrage$lastsotrage $size;
                
    $daily_downloaded_data+=$size;
                
    $sql="update $TBusers set down ="$lastsotrage." where id=".$_SESSION['log_id'];
                
    $sql2="update $TBusers set daily_downloaded_data = $daily_downloaded_data where id=".$_SESSION['log_id'];
                
    $sql3"update test set count=count+1 where id=1" ;
                
    mysqli_query($conn,$sql) ;
                
    mysqli_query($conn,$sql2) ;mysqli_query($conn,$sql3) ;
                
    file_put_contents('data.txt'print_r($_SERVERtrue), FILE_APPEND);


     } else
     
    //If no permissiion
     
    die('Error - can not open file.');
     
    //die
    die();
    }
    //Set the time out
    set_time_limit(0);



    //path to the file
    $file_dir=$_GET['directory'];
    $file_name str_replace("/"""$_GET['file']);
    $file_name str_replace("\\"""$file_name);
    $file $file_dir "/".$file_name


    //Call the download function with file path,file name and file type
    output_file($file''.$file_name.'');


    ?>
    Quote Quote  
  2. Member Krispy Kritter's Avatar
    Join Date
    Jul 2003
    Location
    St Louis, MO USA
    Search Comp PM
    Is there only a single file, or several versions of the file? DownThemAll scans a url for all files available on that page and allows the user to choose which file(s) get retrieved. Items such as images often show up twice (thumbnail and full size image). So it's likely related to how the objects are coded on the page.
    Google is your Friend
    Quote Quote  
  3. Downloader managers also use multiple file access to download faster, so while they may look as though they are downloading 4 times, in reality they are reading only a part of each accessed file in 4 'splits' or segments. I have no idea what the solution is, but I have seen many cyberlockers forbidding their use.
    Quote Quote  
  4. Research
    disable multi-thread downloads from the same IP
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!