It is really annoying when you are trying to make a file available for download and the user's browser keeps opening the file rather than allowing the user to save it.  This php script forces the Save As dialog to show up reliably when downloading a file.

To use the script, download it, set the $path variable to the relative path to your downloads folder, and upload the script to your website.  The default name for the downloads folder is "downloads".  Place your files in the downloads folder (specified in $path above) and link to the files like this:

For example, if your downloads folder is called "downloads" and it is at the root of your website, then there no changes necessary.  Simply upload the script to your website.

Download the script: download.php

Cleaning up the URL

On apache servers mod_rewrite can hide what's happening under the covers and clean up the download URLs.  So, for example instead of this

The user sees this

Although it appears that the file is being downloaded directly from the downloads directory, mod_rewrite can recognize and rewrite the URL to use the php script for downloading the file.

Options +FollowSymLinks
RewriteEngine On
RewriteRule   ^downloads/(.+)$   download.php?file=$1

Assuming mod_rewrite is available on your server, simply place the code above into the .htaccess file to support downlod URLs with no reference to the php script.  If the downloads directory is not in the root of your website, specify the path in the RewriteRule.  For example, if the downloads directory is located at /foo/bar/downloads, the RewriteRule should look like:

Options +FollowSymLinks
RewriteEngine On
RewriteRule   ^foo/bar/downloads/(.+)$   foo/bar/download.php?file=$1

Download the script with pretty URL: download.php