Thanks Anders and Daniel. Daniel, I like your approach. I want to make it as
secure as possible. I'm going to place the files outside the web directory
and use authentication to approve that the user can download some particular
song. I didn't know you could do a forced download. I will definitely have
to try that. Thanks again.

Nilaab


-----Original Message-----
From: Daniel Schierbeck [mailto:[EMAIL PROTECTED] 
Sent: Friday, September 05, 2003 5:45 AM
To: [EMAIL PROTECTED]
Subject: Re: [PHP] PHP5 - How Do I Let Users Download Music Files?

[EMAIL PROTECTED] wrote:

> Hello everyone,
> 
>  
> 
> I want to build a music site, all copyrights intact, and I want users to
be
> able to download mp3 or realplayer files using a one-click link. When they
> click on a link they will simply be given a typical download window to
save
> that music file. How do I go about doing that and how should my file
> structure work? What should the link include? Is it possible to just say,
> for example, http://somesite.com/music/something.mp3?
If you want more control over the files you could have the mp3's in a 
private directory, then using PHP to force a download. There are some 
other threads about the Content-Type header, which is probably what 
you're looking for

Imagine that your file, 3416.mp3 is in /songs. 3416 is the song ID, so 
you can grab info such as artist, album and song name from a DB. Below 
is download.php, to download 3416.mp3, you should type 
download.php?file=3416

        <?php

        if (!isset($_GET['file']) or !file_exists('songs/' . $_GET['file'] .

'.mp3')) {
                die("No file selected");
        } else {
                $file = $_GET['file'];
        }

        $db = mysql_connect();
        // More DB stuff

        $artist = $row['artist']; // The artist name from the DB
        $album  = $row['album']; // ...
        $song   = $row['song']; // ...

        $filename = $artist . '-' . $album . '-' . $song . '.mp3';

        header('Content-Type: application/force-download');
        header('Content-Length: ' . filesize('songs/'.$file.'.mp3'));
        header('Content-Disposition: attachment; filename="' . $filename .
'"');
        header('Content-Transfer-Encoding: binary');

        readfile('songs/' . $file . 'mp3');
        exit();

        ?>

        

> Also, if I wanted them
> to listen to streamed music does PHP have any specialized functions I
could
> use to achieve that? 

You should take a look at the Ming library and the mp3 stream function 
(http://www.php.net/manual/en/function.swfmovie.streammp3.php). It's a 
bit tricky though, but i can't think of anything else.

-- 
Daniel Schierbeck

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to