webForumDet fria alternativet

Download script strular i MSIE

2 svar · 256 visningar · startad av higa

higaMedlem sedan aug. 2000359 inlägg
#1

Jag har ett antal videoclip som jag kräver inloggning för att ladda hem. Om man klickar på en nerladdningslänk så kollar nerladdningsskriptet att man har en giltig session, och isåfall får man ner filen, annars så skickas man till en inloggning/register-sida där den efterfrågade urlen sparas i dolda fält under inloggnings/registeringsprocessen, så att man får den direkt efter inloggning.
Problemet är att min kod strular för IE6-användare om man loggar in i samband med nerladdningen. Till skilnad ifrån om man använder Mozilla, eller redan är inloggad, så får man först en nerladdningsdialog där det står "file name: ...wnload.php?file=filmen.avi" istället för "file name: filmen.avi". Sedan när man väljer save så kommer meddelandet :
"Internet Explorer cannot download ..wnload.php?file=filmen.avi from https://www.minserver.com"

Så här ser mitt downloadscript ut:

<?php 
include ("/includes/vars.php"); 
session_start();
$user = $_SESSION["user"]; 
if(!$_GET["file"])
{
	?>Vad försöker du göra? <?php
}
else if(!$user) { 
	header ("Location:".$bad_login."?ref=".$_SERVER['PHP_SELF']."?file=".$_GET["file"]);
}
else if($_GET["file"])
{
	if(file_exists($media_root_hdd."/video/".$_GET["file"]))
	{
    	download_file($media_root_hdd."/video", $_GET["file"]);
    }
    else
    {
    	?> Filen finns ente, kolla i kylen <?php 
    }
}
 ?>
<?php 
function download_file ($fileDir, $fileName) {
   $completeFilePath=$fileDir.'/'.$fileName;
   header('Pragma: no-cache');
   header("Content-type: video/avi\nContent-Disposition: attachment; filename=\"" . 
$fileName . "\"\nContent-length: ".(string)(filesize($completeFilePath)));
   $fd=fopen($completeFilePath,'rb');
     while(!feof($fd)) {
         print(fread($fd, 4096));
         flush();
     }
}
 ?>

Går det vidare att fixa så att mitt script blir getrightvänligt?

Mvh Lukas

nkrantzMedlem sedan apr. 2002830 inlägg
#2

Jag kör så här för att folk skall kunna ladda ner filer via ett script hos mig:

header("Content-type: " . $mime . "");
	header("Content-Disposition: attachment; filename=" . $filename . "");
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: " . $size . "");
	readfile('' . $source . '');

Och det funkar bra på IE och i andra bläddrare så vitt jag vet...

// Nippe

higaMedlem sedan aug. 2000359 inlägg
#3

Tackar för svaret. Upptäckte iofs att anledningen till ie-strulet låg mer på html-nivå då jag körde med en meta-tag för att skicka besökaren till download.php vilket verkade förvilla ie, det funkade när jag bytte ut det mot en vanlig länk till download.php.
Sedan så fungerar din lösning klockrent även när jag testade att resuma med getright, så jag kör på den.

Mvh Lukas

136 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)