23. september 2008 - 22:42 Der er 7 kommentarer og
1 løsning

Link til "takke side"

Hej,

Når min bruger har downloaded sin fil vil jeg gerne vise ham(hende ?) en "taksigelseseside". Altså et direkte hop fra download-siden til en anden i direkte kode (ikke et klik-link <a href = nyside.php ?.... osv)

Men mere i stil med $link(denne side, nyside); men det virker ikke (jo, men med fejl !)

Hvad er den precise syntaks ?
Avatar billede cool_casper Nybegynder
23. september 2008 - 23:02 #1
En ide:
Vende det lidt om, så det link brugeren klikker på for at downloade, er takkesiden. På takkesiden sætte du en meta-redirect ind til den fil der skal downloades:

<meta http-equiv="refresh" content="2;url=http://www.exp.dk/fil.zip">

Så ser brugeren takkesiden og 2 sekunder efter vil download dialog-boksen komme frem. Du kan selvfølgelig ændre antal sekunder efter behag.
Avatar billede Slettet bruger
23. september 2008 - 23:05 #2
Eller kan man vel:
echo "
<script language='javascript'>
location.href='minTakSide.php';
</script> ";
Avatar billede cool_casper Nybegynder
23. september 2008 - 23:09 #3
Det kan også bruges, måske skal man så bare sætte en lille forsinkelse på, så man er sikker på at brugeren når at se download dialog-boksen:

echo "
<script language='javascript'>
setTimeout ("location.href='minTakSide.php'", 2000);
</script> ";

Her forsinker den 2 sekunder.
Avatar billede w13 Novice
23. september 2008 - 23:17 #4
Mere optimalt bør det dog nok være:

echo "<script type='text/javascript' language='javascript'>
window.setTimeout ("window.location.href='minTakSide.php'",2000);
</script>";
Avatar billede cool_casper Nybegynder
23. september 2008 - 23:30 #5
Point taken. :)
25. september 2008 - 07:52 #6
Hej Igen,

Min downloader ser sådan ud:    (downlfile.php)

<?php
if(isset($_GET["file"]))
{
    $path = "";
    $fp = fopen($_GET["file"],"r");
    header("Content-Disposition: attachment; filename=". $_GET["file"] ."");
    header("Content-Type: application/octet-stream");
    header("Content-Length: ".filesize($path.$_GET["file"]));
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    header("Content-Transfer-Encoding: binary\n");
    header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y")))." GMT");

    ob_flush();
    flush();
   
    while(!feof($fp))
    {
    $buffer = fread($fp, 2048);
        print $buffer;
    }
    fclose ($fp);
    exit();
}
?>   

Den fungerer perfekt.

Den bliver kaldt fra et link fra en tabel (udsnit):

<TD Valign='top' align='left'>
    <A HREF='downlfile.php?file=minfil.xxx'>Hent filen her.... (bla bla bla )</A>
</TD>

hvor XXX er enten ZIP, exe (eller andre typer).

Har prøvet at lægge den JS code w13 foreslår ind umiddelbart før exit i downlfile.php men det virker ikke. Ingen fejlmeddelelser og ingen "takkeside". 


Prøvede Cool Caspers ide. Den fungerer, men den giver mig en ide:

Er det muligt (vha JavaScript / JS) at vise en 'forhånds-takkeside', derefter downloade filen (download-dialogg boksen), og slutteligen vise den rigtige takkeside.

Altså det jeg spø'r om, er om der findes et flag, som bliver sat efter downloaden, teste dette flag i JS og hvis sand/falsk så (vha JS) skifte visse elementer på siden til "takke-tekster".

(Ideen kom 20 minutter før jeg sku' på arbejde - så den er IKKE testet... )

Kristian
Avatar billede w13 Novice
27. september 2008 - 12:41 #7
Grunden til, at JavaScriptet ikke virker, er at du indsætter det på en side, som du f.eks. har lavet til et PDF-dokument (hvis det er en sådan fil, man downloader). Og JS kan selvfølgelig intet gøre på andet end HTML- og XHTML-sider.
Du kan derfor heller ikke lukke filen igen, når den først er downloadet.

Men hvis du bare åbner downlfile.php?file=minfil.xxx i et nyt vindue (dvs. sætter target="_blank" på dit link), så lukker den automatisk efter download. Så gør sådan her:

<td valign='top' align='left'>
    <a href='downlfile.php?file=minfil.xxx' target='_blank' onclick='window.location.href="takkeside.php"'>Hent filen her.... (bla bla bla )</a>
</td>

Her åbnes downlfile.php?file=minfil.xxx i nyt vindue (som lukker, når man trykker download), og imens åbnes takkeside.php i hovedvinduet.
23. december 2011 - 11:44 #8
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester