Doormiddel van uniqid() gekoppeld aan een locatie van het bestand, en deze in een database op te slaan is het mogelijk om een tijdelijk link te maken, waardoor de gebruiker het bestand kan downloaden.

Echter in de Headers van Firebug is de exacte locatie nog altijd terug te vinden.

Uiteraard kan ik via mod_rewrite dit nog (deels) aanpassen. Maar het gaat om vele bestanden
waarvan ik wil dat ze voor 1 keer of een bepaalde tijd toegankelijk zijn zonder dat de exacte locatie
kan worden achterhaald. Voor iedere locatie een mod_rewrite (tijdelijk) aanmaken lijkt mij geen optie.

Iemand een idee hoe dit wel te bewerkstelligen, zonder in te loggen?
- Aar - op 29/09/2015 15:53:49

Die mp3 wordt aangeroepen door een PHP-script. Dus laat die PHP-file eens door web-sniffer 'sniffen'?
Deze moet de headers tonen die de MP3-file ook daadwerkelijk heeft. Dus beiden moeten gelijk zijn.


De file, die door ajax word aangeroep, met header("Content-Type: audio/mpeg"), geeft een status 200 terug bij web-sniffer:

Status: HTTP/1.1 200 OK
Date: Tue, 29 Sep 2015 14:01:09 GMT
Content-Type: audio/mpeg
Transfer-Encoding: chunked
Connection: close
Set-Cookie: __cfduid=d5886b1f9d162f768792b1ff139b451443535269; expires=Wed, 28-Sep-16 14:01:09 GMT; path=/; domain=.mijndomein.nl; HttpOnly
X-Powered-By: PHP/5.4.45-0+deb7u1
Server: cloudflare-nginx
Als je in je PHP-script Content-Type: audio/mpeg meegeeft, dan moet je echt de audio kunnen zien/horen.
- Aar - op 29/09/2015 16:09:42

Als je in je PHP-script Content-Type: audio/mpeg meegeeft, dan moet je echt de audio kunnen zien/horen.


Dat is ook het geval, zolang ik dus mijndomain.nl/audio.php open.
Echter audio.php wordt ingeladen dmv. ajax en dus moet het daar verkeerd gaan.



[size=xsmall]Toevoeging op 29/09/2015 18:41:44:[/size]

index.html:

<!DOCTYPE HTML>
<html>
<head>
<script src="./js/jquery-1.10.1.min.js"></script>
<script>
function funcAjax(){
    $.ajax({
        //type: 'POST',
        type: 'GET',
        url: "/aud.php",
            data: { }, 
        success: function(result) {
        $("#aud").html(result);
        }
    });
};
</script>
</head>
<body>

<p id="aud"></p>

<script>
funcAjax();
</script>
</body>
</html> 


aud.php:

<?php
header("Content-Type: audio/mpeg");
$file = 'https://archive.org/download/testmp3testfile/mpthreetest.mp3';
//ob_end_flush();
readfile( "{$file}" );
?>


Een versimpelde versie waarbij de source van mpthreetest.mp3 dus wordt weergegeven
ipv. het bestand af te spelen.
Je plakt een audiofile in een paragraaf, hoe zie je dat gaan werken? Daarnaast moet je wellicht in de AJAX call aangeven welke dataType je terugverwacht (mocht dat in een paragraaf plakken van een binair bestand op automagische wijze toch mogen werken, wat ik een beetje betwijfel).

Reageren