Wie gesagt, nie wieder ...
Alles anzeigen
Quellcode
- <?php
- // Nicht wichtig. Hiermit fordern wir PHP nur auf, alle Fehler auszugeben, die so auftreten.
- error_reporting(E_ALL);
- // Der Pfad zu all deinen Liedern auf deinem Server
- $path_intern = 'background/';
- // Die Pfade zu allen externen Liedern. Einfach in ' setzen und mit Kommmatas trennen.
- $path_extern = array(
- 'http://der.track.de/den/gibts/hier.mp3',
- 'http://wie.du.de/siehst/gibts/hier/den/naechsten.mp3',
- 'http://bssoundz.kilu.de/background/1.mp3'
- );
- // Die Fehlermeldung, falls etwas schief geht
- $err_msg = "<br />\nDiese Datei existiert nicht.";
- /**
- * Im sogennanten globalen Array $_GET werden alle über die URL angegeben Werte gespeichert.
- * Man kennt dies von den komischen Adressen, die Google manchmal so mitführt. Übliche Form:
- * www.domain.de/index.php?session_id=1&jaja=noe.
- * Dies würde $_GET wie folgt füllen:
- * echo $_GET['session_id']; // Ausgabe: 1
- * echo $_GET['jaja']; // Ausgabe: noe
- *
- * Die folgende Abfrage prüft lediglich, ob ?track=bla an der URL vorhanden ist und somit über
- * die URL ein Wert für unseren Track übergeben wurde.
- */
- if(empty($_GET['track'])) {
- die($err_msg);
- }
- /**
- * Folgende Bedingung prüft den über die URL übergebenen Track, ob dieser mit 'http://' beginnt,
- * ob er in deiner gespeicherten Liste (ein Array) vorhandenen ist und ob die Datei geöffnet
- * werden kann. Wird alles erfüllt, wird die Datei geladen, andernfalls ...
- */
- if(0 === strpos($_GET['track'], 'http://') && in_array($_GET['track'], $path_extern)
- && false !== ($handle = fopen($_GET['track'], 'r'))) {
- // Das kennst du ja bereits - der header. Er ist zum direkten Download nötig.
- header('Content-type: audio/mpeg');
- header('Content-Disposition: attachment; filename="'.$_GET['track'].'"');
- while (!feof($handle)) {
- $buffer = fgets($handle);
- echo $buffer;
- }
- fclose ($handle);
- exit;
- }
- $track = $path_intern . $_GET['track'];
- /**
- * ... gehts weiter zur nächsten etwas kürzeren Bedingung. Letzte Möglichkeit: Die Datei befindet
- * sich auf deinem Server. Wird dies erfüllt, wird der Track einfach direkt ausgegeben.
- */
- if(file_exists($track)) {
- header('Content-type: audio/mpeg');
- header('Content-Disposition: attachment; filename="'.$_GET['track'].'"');
- readfile($track);
- exit;
- }
- // Eine Fehlermeldung, wenn keine der Bedingungen eingetroffen ist.
- die($err_msg);
- ?>