Downloadfenster per Linksklick direkt aufrufen ?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Wie gesagt, nie wieder ... ;)

    Quellcode

    1. <?php
    2. // Nicht wichtig. Hiermit fordern wir PHP nur auf, alle Fehler auszugeben, die so auftreten.
    3. error_reporting(E_ALL);
    4. // Der Pfad zu all deinen Liedern auf deinem Server
    5. $path_intern = 'background/';
    6. // Die Pfade zu allen externen Liedern. Einfach in ' setzen und mit Kommmatas trennen.
    7. $path_extern = array(
    8. 'http://der.track.de/den/gibts/hier.mp3',
    9. 'http://wie.du.de/siehst/gibts/hier/den/naechsten.mp3',
    10. 'http://bssoundz.kilu.de/background/1.mp3'
    11. );
    12. // Die Fehlermeldung, falls etwas schief geht
    13. $err_msg = "<br />\nDiese Datei existiert nicht.";
    14. /**
    15. * Im sogennanten globalen Array $_GET werden alle über die URL angegeben Werte gespeichert.
    16. * Man kennt dies von den komischen Adressen, die Google manchmal so mitführt. Übliche Form:
    17. * www.domain.de/index.php?session_id=1&jaja=noe.
    18. * Dies würde $_GET wie folgt füllen:
    19. * echo $_GET['session_id']; // Ausgabe: 1
    20. * echo $_GET['jaja']; // Ausgabe: noe
    21. *
    22. * Die folgende Abfrage prüft lediglich, ob ?track=bla an der URL vorhanden ist und somit über
    23. * die URL ein Wert für unseren Track übergeben wurde.
    24. */
    25. if(empty($_GET['track'])) {
    26. die($err_msg);
    27. }
    28. /**
    29. * Folgende Bedingung prüft den über die URL übergebenen Track, ob dieser mit 'http://' beginnt,
    30. * ob er in deiner gespeicherten Liste (ein Array) vorhandenen ist und ob die Datei geöffnet
    31. * werden kann. Wird alles erfüllt, wird die Datei geladen, andernfalls ...
    32. */
    33. if(0 === strpos($_GET['track'], 'http://') && in_array($_GET['track'], $path_extern)
    34. && false !== ($handle = fopen($_GET['track'], 'r'))) {
    35. // Das kennst du ja bereits - der header. Er ist zum direkten Download nötig.
    36. header('Content-type: audio/mpeg');
    37. header('Content-Disposition: attachment; filename="'.$_GET['track'].'"');
    38. while (!feof($handle)) {
    39. $buffer = fgets($handle);
    40. echo $buffer;
    41. }
    42. fclose ($handle);
    43. exit;
    44. }
    45. $track = $path_intern . $_GET['track'];
    46. /**
    47. * ... gehts weiter zur nächsten etwas kürzeren Bedingung. Letzte Möglichkeit: Die Datei befindet
    48. * sich auf deinem Server. Wird dies erfüllt, wird der Track einfach direkt ausgegeben.
    49. */
    50. if(file_exists($track)) {
    51. header('Content-type: audio/mpeg');
    52. header('Content-Disposition: attachment; filename="'.$_GET['track'].'"');
    53. readfile($track);
    54. exit;
    55. }
    56. // Eine Fehlermeldung, wenn keine der Bedingungen eingetroffen ist.
    57. die($err_msg);
    58. ?>
    Alles anzeigen
  • Ach ja, ganz vergessen:

    Externe Links rufst du mit der komplette URL auf, also auch http:// etc. Interne Links beinhalten nur das Lied mit der Endung mp3.

    Quellcode

    1. Intern:
    2. www.domain.de/dload.php?track=daslied.mp3
    3. Extern:
    4. www.domain.de/dload.php?track=http://www.domain.de/dasanderelied.mp3