/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
download header blokeres i IE7
Fra : Kim Emax


Dato : 17-11-08 15:28

Hejsa

Jeg har et underligt og meget irriterende problem med IE, når jeg
pusher en mp3 file til download. Det er testet på kryds og tværs, for
3-4 år siden, men siden da er IE7 kommet til og den giver en "blup"
lyd, og viser aldrig download prompten. Jeg har googlet mig til at
"attachment;" ikke er velset af IE7 i Content-Type, fjerner jeg den,
så vil filen blive afspillet i browseren i stedet.

Nogen, der har oplevet dette og har en løsning?

$source = "file.mp3";
$size = filesize($source);
// attachment is not accepted in IE7
// $cd = "attachment; filename=\"$source\"";
$cd = "filename=\"$source\"";
header('Content-Description: File Transfer');
// gives the "blub" sound in IE7
// header('Content-Type: application/force-download');
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: $cd");
readfile($source);

--
mvh
Kim

 
 
Kim Emax (17-11-2008)
Kommentar
Fra : Kim Emax


Dato : 17-11-08 15:33

On 17 Nov., 23:27, Kim Emax <kime...@gmail.com> wrote:
> Hejsa
>
> Jeg har et underligt og meget irriterende problem med IE, når jeg
> pusher en mp3 file til download. Det er testet på kryds og tværs, for
> 3-4 år siden, men siden da er IE7 kommet til og den giver en "blup"
> lyd, og viser aldrig download prompten. Jeg har googlet mig til at
> "attachment;" ikke er velset af IE7 i Content-Type, fjerner jeg den,
> så vil filen blive afspillet i browseren i stedet.
>
> Nogen, der har oplevet dette og har en løsning?
>
> $source = "file.mp3";
> $size = filesize($source);
> // attachment is not accepted in IE7
> // $cd = "attachment; filename=\"$source\"";
> $cd = "filename=\"$source\"";
> header('Content-Description: File Transfer');
> // gives the "blub" sound in IE7
> // header('Content-Type: application/force-download');
> header("Content-Type: application/octet-stream");
> header("Content-Transfer-Encoding: binary");
> header("Content-Length: $size");
> header("Content-Disposition: $cd");
> readfile($source);

jeg glemte lige at skrive at dette script "header.php" kaldes af en
anden side, og koden kan være så simpel som dette:

<body>
<script type="text/javascript">window.open('header.php')</script>
</body>

men den blokeres i IE7 selvom man har fortalt den indbyggede popup
blocker at det er ok med popups på det pågældende domain. Løsning for
IE7 brugere er for tiden at de _ikke_ tillader popups på domainet og
så er der et link, de i stedet kan benytte, der kalder nøjagtigt samme
js funktion. Det ligner en dårlig implementering af popupblockeren i
IE7...

--
mvh
Kim Emax

Kim Emax (17-11-2008)
Kommentar
Fra : Kim Emax


Dato : 17-11-08 15:42

On 17 Nov., 23:32, Kim Emax <kime...@gmail.com> wrote:
> On 17 Nov., 23:27, Kim Emax <kime...@gmail.com> wrote:
>
>
>
> > Hejsa
>
> > Jeg har et underligt og meget irriterende problem med IE, når jeg
> > pusher en mp3 file til download. Det er testet på kryds og tværs, for
> > 3-4 år siden, men siden da er IE7 kommet til og den giver en "blup"
> > lyd, og viser aldrig download prompten. Jeg har googlet mig til at
> > "attachment;" ikke er velset af IE7 i Content-Type, fjerner jeg den,
> > så vil filen blive afspillet i browseren i stedet.
>
> > Nogen, der har oplevet dette og har en løsning?
>
> > $source = "file.mp3";
> > $size = filesize($source);
> > // attachment is not accepted in IE7
> > // $cd = "attachment; filename=\"$source\"";
> > $cd = "filename=\"$source\"";
> > header('Content-Description: File Transfer');
> > // gives the "blub" sound in IE7
> > // header('Content-Type: application/force-download');
> > header("Content-Type: application/octet-stream");
> > header("Content-Transfer-Encoding: binary");
> > header("Content-Length: $size");
> > header("Content-Disposition: $cd");
> > readfile($source);
>
> jeg glemte lige at skrive at dette script "header.php" kaldes af en
> anden side, og koden kan være så simpel som dette:
>
> <body>
> <script type="text/javascript">window.open('header.php')</script>
> </body>
>
> men den blokeres i IE7 selvom man har fortalt den indbyggede popup
> blocker at det er ok med popups på det pågældende domain. Løsning for
> IE7 brugere er for tiden at de _ikke_ tillader popups på domainet og
> så er der et link, de i stedet kan benytte, der kalder nøjagtigt samme
> js funktion. Det ligner en dårlig implementering af popupblockeren i
> IE7...

Og sidste kommentar. Hvis det er en alm. html fil, så er virker popup
fint:

<script type="text/javascript">window.open('popup.html')</script>

Så det er et eller andet i headeren, når jeg vil tvinge den til at
prompte brugeren for svar på om filen skal gemmes eller afspilles...

--
mvh
Kim Emax

Kim Emax (20-11-2008)
Kommentar
Fra : Kim Emax


Dato : 20-11-08 05:08

On Nov 17, 11:41 pm, Kim Emax <kime...@gmail.com> wrote:

Ingen, der har et input til dette?

--
Mvh
Kim Emax

Dan Storm (20-11-2008)
Kommentar
Fra : Dan Storm


Dato : 20-11-08 13:27

Kim Emax skrev:
> Ingen, der har et input til dette?

header("Content-Type: application/octet-stream");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=file.mp3");

Virker fint hos mig i FF3, IE7 og IE8 (Beta).


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

N/A (20-11-2008)
Kommentar
Fra : N/A


Dato : 20-11-08 13:27



N/A (20-11-2008)
Kommentar
Fra : N/A


Dato : 20-11-08 13:27



N/A (20-11-2008)
Kommentar
Fra : N/A


Dato : 20-11-08 16:11



N/A (20-11-2008)
Kommentar
Fra : N/A


Dato : 20-11-08 16:11



Kim Emax (20-11-2008)
Kommentar
Fra : Kim Emax


Dato : 20-11-08 07:41

On Nov 20, 1:26 pm, Dan Storm <shadyz_REMOVETH...@err0r.dk> wrote:
> Kim Emax skrev:
>
> > Ingen, der har et input til dette?
>
> header("Content-Type: application/octet-stream");
> header("Content-Description: File Transfer");
> header("Content-Disposition: attachment; filename=file.mp3");
>
> Virker fint hos mig i FF3, IE7 og IE8 (Beta).

også hvis du kalder det fra et inline javascript som jeg har gjort?
Altså uden brugeren selv aktiverer det?

--
Mvh
Kim Emax

Dan Storm (20-11-2008)
Kommentar
Fra : Dan Storm


Dato : 20-11-08 16:11

Kim Emax skrev:
> også hvis du kalder det fra et inline javascript som jeg har gjort?
> Altså uden brugeren selv aktiverer det?

Er det ikke meningen det kun er en download der skal starte og så intet
andet? Hvad med at gøre således:
<?php
   header("Location: header.php");
?>
<html>
....
</html>

istedet for at have din body til at automatisk åbne et popup der så skal
sende en file transfer?

Jeg ville ikke tillade nogen side at åbne en popup medmindre jeg selv
har aktiveret popuppen - det kunne jo være vigtigt hvis det er noget jeg
selv har iværksat. Så derfor vil jeg ikke kunne downloade din fil.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

N/A (21-11-2008)
Kommentar
Fra : N/A


Dato : 21-11-08 08:42



Kim Emax (21-11-2008)
Kommentar
Fra : Kim Emax


Dato : 21-11-08 00:29

On Nov 20, 4:11 pm, Dan Storm <shadyz_REMOVETH...@err0r.dk> wrote:

> Er det ikke meningen det kun er en download der skal starte og så intet
> andet? Hvad med at gøre således:
> <?php
>         header("Location: header.php");
> ?>
> <html>
> ...
> </html>
>
> istedet for at have din body til at automatisk åbne et popup der så skal
> sende en file transfer?

Det er meget mere kompliceret kode end som så _og_ det er lavet for 4
år siden, hvor det er testet synder og sammen på alle daværende
browsere. Kunden har haft nogle rettigheds issues med downloads, der
skulle på plads først, imellemtiden er buggy IE7 så kommet til med sin
"feature". Men det kan være at jeg bliver nød til at gøre det sådan..
Evt. kan jeg prøve at lave et javascript lave denne redirect. Men da
man samtidig gerne skulle have mulighed for at komme tilbage til
tracket hovedside, så kræver det også ekstra omtanke (som sagt,
kompliceret kode)

> Jeg ville ikke tillade nogen side at åbne en popup medmindre jeg selv
> har aktiveret popuppen - det kunne jo være vigtigt hvis det er noget jeg
> selv har iværksat. Så derfor vil jeg ikke kunne downloade din fil.

Nej, men du kan jo stadig acceptere at på dette domain er det ok med
popups, det valg burde IE7 også respektere. Da denne sites primære
formål netop er at downloade musikfiler så vil folk acceptere denne
måde + de sparer et museklik hver gang.

> Tro ikke brugerne vil gøre noget for at undgå dit killfilter
> - Så vigtig er du heller ikke!

hehe

--
Mvh
Kim Emax


Dan Storm (21-11-2008)
Kommentar
Fra : Dan Storm


Dato : 21-11-08 08:42

Kim Emax skrev:
> Det er meget mere kompliceret kode end som så _og_ det er lavet for 4
> år siden, hvor det er testet synder og sammen på alle daværende
> browsere. Kunden har haft nogle rettigheds issues med downloads, der
> skulle på plads først, imellemtiden er buggy IE7 så kommet til med sin
> "feature". Men det kan være at jeg bliver nød til at gøre det sådan.
> Evt. kan jeg prøve at lave et javascript lave denne redirect. Men da
> man samtidig gerne skulle have mulighed for at komme tilbage til
> tracket hovedside, så kræver det også ekstra omtanke (som sagt,
> kompliceret kode)

Hvis header.php kun sender en download, forlader du jo ikke den
oprindelige side - det må da give den samme effekt som dit javascript
gjorde?


> Nej, men du kan jo stadig acceptere at på dette domain er det ok med
> popups, det valg burde IE7 også respektere. Da denne sites primære
> formål netop er at downloade musikfiler så vil folk acceptere denne
> måde + de sparer et museklik hver gang.

Jeg mener stadig ikke det er den rigtige måde at gøre det på.
Hvis dit formål med window.open() blot er at starte en download, så kan
du lige så godt gøre det på den måde jeg forslog - resultatet er det
samme og brugeren behøver slet ikke at skulle acceptere popups fra et
bestemt site - og så kan brugere uden javascript aktiveret også
downloade, hvilken også må kunne anses for at være en fordel?

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

N/A (21-11-2008)
Kommentar
Fra : N/A


Dato : 21-11-08 11:11



Kim Emax (21-11-2008)
Kommentar
Fra : Kim Emax


Dato : 21-11-08 02:39

On Nov 21, 8:42 am, Dan Storm <shadyz_REMOVETH...@err0r.dk> wrote:

> Hvis header.php kun sender en download, forlader du jo ikke den
> oprindelige side - det må da give den samme effekt som dit javascript
> gjorde?

Du missede min pointe, det er en include fil, der tester for en masse
ting, før den evt. smider denne javasccript inline. Der er flere
hundrede liniers HTML før dette. Men jeg ved godt, hvad du tænker på,
at det skal testes inden første output, det kan også være det bliver
løsningen, hvis kunden vil kaste penge efter det. Jeg håbede bare at
andre havde haft problemet og fundet en løsning via div. headers, der
blev sendt.

> Jeg mener stadig ikke det er den rigtige måde at gøre det på.
> Hvis dit formål med window.open() blot er at starte en download, så kan
> du lige så godt gøre det på den måde jeg forslog - resultatet er det
> samme og brugeren behøver slet ikke at skulle acceptere popups fra et
> bestemt site - og så kan brugere uden javascript aktiveret også
> downloade, hvilken også må kunne anses for at være en fordel?

så tror jeg ikke jeg har forstået din metode. Min popup har til
hensigt at accesse en side, der starter med at spytte headers ud.
Onclick virker det som det skal, men "autopopup" gør ikke (i IE7 only)

--
Mvh
Kim Emax

Dan Storm (21-11-2008)
Kommentar
Fra : Dan Storm


Dato : 21-11-08 11:11

Kim Emax skrev:
> Du missede min pointe, det er en include fil, der tester for en masse
> ting, før den evt. smider denne javasccript inline. Der er flere
> hundrede liniers HTML før dette. Men jeg ved godt, hvad du tænker på,
> at det skal testes inden første output, det kan også være det bliver
> løsningen, hvis kunden vil kaste penge efter det. Jeg håbede bare at
> andre havde haft problemet og fundet en løsning via div. headers, der
> blev sendt.

Nej, jeg forstår det ikke, for jeg kan ingenting se.
Selvom din include fil skal tjekke på alt muligt, kan du sagtens lave
min løsning.

> så tror jeg ikke jeg har forstået din metode. Min popup har til
> hensigt at accesse en side, der starter med at spytte headers ud.
> Onclick virker det som det skal, men "autopopup" gør ikke (i IE7 only)

<url: http://err0r.dk/downloadtest.php>

Hvis det er meningen dine includefiler skal validere på noget så gør du
jo bare noget ala:

<?php
   include("my_includes.inc.php");
   //kode der validerer
   if($valid_download)
      header("Refresh: 0; header.php");
?>
   Al din html....

?

Eller den grimme:
<?php
   include("my_includes.inc.php");
   ob_start();
?>
   Dine hundredevis af liniers html
<?php
   //kode der validerer
   if($valid_download)
      header("Refresh: 0; header.php");
   else
      echo "Beskeden om fejlen";
?>
   resten af din html
<?php
   ob_flush();
?>


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Kim Emax (21-11-2008)
Kommentar
Fra : Kim Emax


Dato : 21-11-08 04:56

On Nov 21, 11:11 am, Dan Storm <shadyz_REMOVETH...@err0r.dk> wrote:
> Kim Emax skrev:

> Nej, jeg forstår det ikke, for jeg kan ingenting se.

hehe, det er et lukket system, så det giver ingen mening at sende et
link


> Hvis det er meningen dine includefiler skal validere på noget så gør du
> jo bare noget ala:
>
> <?php
>         include("my_includes.inc.php");
>         //kode der validerer
>         if($valid_download)
>                 header("Refresh: 0; header.php");
> ?>
>         Al din html....

jeps, men min er:

html,
side menuer + nye tracks
top menuer + nyheder
switch($action)
content includes (download tingen f.eks.)

men jeg kan som sagt undersøge om jeg kan lave checket for download
delen inden første output, hvis kunden vil betale for hack af koden,
så buggy IE7 også spiller...

--
Mvh
Kim Emax


Søg
Reklame
Statistik
Spørgsmål : 177549
Tips : 31968
Nyheder : 719565
Indlæg : 6408820
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste