Hepp! Nu är jag igång igen.
Har ju precis fått ordning hur jag ska gå tillväga för att ladda ner en låt från servern. Nu skulle jag vilja komma till en tacksida efter nedladdningen har påbörjat. Scriptet ser ut såhär:
$mp3_file = "../TESTING-MUSIK/mp3/".$row['trackFileName'];
header("Content-Type: audio/mpeg3");
header("Content-Disposition: attachment;filename=".basename($mp3_file));
header("Content-Length: ". filesize($mp3_file));
$fp = fopen($mp3_file, "rb");
fpassthru($fp);
Har testat med att lägga till header("location..."); i slutet av den men det går ju inte för då laddar den inte ner något utan går bara förbi till header("location...");, har kollat runt men hittar inget alls som passar. Någon som har några idéer här för jag har letat arslet av mig :)
PeddaMedlem sedan juni 20006 032 inlägg Man kan nog inte känna av om nedladdningen har startat, men du kan ju skicka vidare efter x antal sekunder.
I detta exempel efter 5 sekunder.
<meta http-equiv="Refresh" content="5;URL=nästasida.php">
Alltså jag kan ju inte ha vanlig html i samma fil som skickar filen till webbläsaren som jag har förstått så den där borde väll inte hjälpa? Jag testade och det hände ingenting. Finns det någon som har någon bra idé på hur man kanske kan skicka formulärdatan till ett nytt fönster som hämtar filen och stängs igen (ller kanske inte öppnas?) och så kan man ju lägga in lite javascript som flyttar en onSubmit? Eller det kanske är helt galet det med :D
Fuskade till mig en lösning. Jag har lagt nerladdningsformuläret i ett lager och tack sidan i ett annat och så fort man klickar för att ladda ner så döljer jag formuäret och visar tacksidan med en "stäng popup" länk... får duga om ingen annan har en bra idé :)
Nu ljög jag så att det rykte om det :D Det funkar bra i mozilla men inte i IE för där så blir det skit om jag använder enter för att submitta formuläret, jag skickas inte tillbaka men om jag klickar direkt på knappen funkar det bra... men som sagt i mozilla går det bra.
För att skicka:
<script type="text/javascript">
function toogleDiv(divElm){
var divNums = 2;
var objDivToToggle = document.getElementById(divElm);
for (i=1; i<divNums+1; i++){
document.getElementById('div'+ i).style.display = 'none';
}
objDivToToggle.style.display = '';
}
</script>
<style type="text/css">
.div-content {
width: 290px;
height: 140px;
background: #CCCCCC;
text-align: center;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
color: #000000;
text-decoration: none;
margin: 5px;
}
body {
margin: 0px;
padding: 0px;
background-color: #CCCCCC;
}
.error {color: #FF0000}
.highlight {color: #666666}
form {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body onContextMenu="return false;" onSelectStart="return false;">
<div id="div1" class="div-content">
Skicka ett sms med koden "<span class="highlight">mim mp3</span>" till <span class="highlight">66666</span>. Fyll i koden som du får tillbaka i fätet nedan och klicka på validera
för att starta nerladdningen av "<?PHP echo $_REQUEST['trackName'];?>".
<?PHP
if(isset($_GET['error'])){
echo "<br \> <br \><span class=\"error\">Felaktig kod!</span>";
}
?><br \>
<form action="download_track.php" method="post" onSubmit="toogleDiv('div2');">
Kod:
<input name="kod" id="kod" type="text" size="10" maxlength="6">
<input type="submit" name="submit" value="Börja nerladdning">
<br>
<br>
<input name="trackId" type="hidden" id="trackId" value="<?PHP echo $_REQUEST['trackId'];?>">
<input name="trackName" type="hidden" id="trackName" value="<?PHP echo $_REQUEST['trackName'];?>">
</form>
</div>
<div id="div2" class="div-content" style="display:none;">
<p>Tack för att du lyssnar på oss!<br></p>
<p><a href="javascript:window.close();">Stäng fönstret</a> </p>
</div>
För att behandla och skicka tillbaka vid eventuellt fel:
<?PHP
// Kollar så att det kommer en förfrågan om en låt
if(isset($_POST['trackId']) AND !($_POST['trackId']=="")){
(en massa kod o grejjs)
// Tvingar förfrågan om att ladda ner filen
$mp3_file = "../TESTING-MUSIK/mp3/".$row['trackFileName'];
header("Content-Type: application/octetstream; name=".basename($mp3_file));
header("Content-Disposition: attachment;filename=".basename($mp3_file));
header("Content-Length: ". filesize($mp3_file));
$fp = fopen($mp3_file, "rb");
fpassthru($fp);
// Stänger kopplingen till databasen
mysql_close($connect);
exit;
}
// Kod fanns ej i DB, skicka tillbaka
else{
header("Location: validate_code.php?error=code&trackName=".$_POST['trackName']."&trackId=".$_POST['trackId']);
exit;
}
}
}
else{
// Om ingen låt förfrågas så skickas man till startsidan
header("Location: http://www.adressen.com/");
}
?>
Någon som har en idé om vad som kan krångla? Kanske är mer javascript-relaterat nu men om någon vet nått liknande som funkar i mozilla men inte i explorer så dela gärna med er så man kan testa lite.