PHP Download Page

前端 未结 5 743
我在风中等你
我在风中等你 2021-01-29 07:13

How do these PHP download pages (e.g. somesite.com/download.php?id=somefile) often found work?

I originally thought of a page that does the counter stuff, and then simpl

相关标签:
5条回答
  • 2021-01-29 07:59

    Generally, these don't redirect to the file's URL. Instead, they use readfile() to directly output the URL from wherever it's being stored (usually, somewhere outside the web root). Solves the direct link, password protection, queuing, etc. issues. Speed limiting would need to be on the web server end.

    0 讨论(0)
  • 2021-01-29 08:01

    Most often it is done by using php function readfile:

    if(is_allowed_to_download()){
        header("Content-Disposition: attachment; filename=".basename( $file ));
        header("Content-Type: application/octet-stream");
        header("Content-Length: ". filesize( $file ) );
        header("Content-Transfer-Encoding: binary");
    
        @readfile($file);
        exit;
    }
    

    Less often server specific solutions is used - sending header X-SendFile: file-location.exe for lighttpd and apache with mod_xsendfile (nginx also have some equivalent). These are slight better, because http servers are optimized to serve content and allow for advanced usage like Range headers (for download accelerators).

    0 讨论(0)
  • 2021-01-29 08:04

    If you precede your DownloadFile() function with some security verification you can easily protect the file, either via using the user_session or sending the password as part of the query.

    0 讨论(0)
  • 2021-01-29 08:09

    This isn't really a PHP-specific issue. In order to make the web browser "download" (whether it be the contents of a static file or the body of a dynamically generated report), set the Content-Disposition header in the HTTP response. PHP allows you to set the HTTP headers using the header function, so your PHP script should do this before streaming the file contents back to the HTTP client.

    0 讨论(0)
  • 2021-01-29 08:12

    They just trace many things about you - cookies, IP address, refferer link, browser name.

    0 讨论(0)
提交回复
热议问题