| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Download fil Fra : AHR | 
  Dato :  29-04-03 10:24 |  
  |   
            Hej NG
 
 Jeg har et webhotel hvor jeg har lagt en *.php og *.doc fil ud. Hvilken kode
 skal jeg bruge i *.php for at en bruger kan downloade filen når han/hun
 klikker på et link?
 
 Tak
 Ahr
 
 
  
            
             |   |   
            
        
 
            
         
           Johan Holst Nielsen (29-04-2003) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  29-04-03 10:47 |  
  |  
 
            > Jeg har et webhotel hvor jeg har lagt en *.php og *.doc fil ud. Hvilken kode
 > skal jeg bruge i *.php for at en bruger kan downloade filen når han/hun
 > klikker på et link?
 hmm, forstår ikke helt hvad du vil?
 Vil du have brugeren til at downloade doc filen gennem en PHP fil?
 Så skal du nok kigge på
 http://www.php.net/manual/en/function.header.php
(Tip: tjek det nederste eksempel ud ;))
 mvh
 Johan
            
              |   |   
            
        
 
            
         
           AHR (29-04-2003) 
         
	
            | Kommentar Fra : AHR | 
  Dato :  29-04-03 11:20 |  
  |  
 
            > hmm, forstår ikke helt hvad du vil?
 > Vil du have brugeren til at downloade doc filen gennem en PHP fil?
 > Så skal du nok kigge på
 >  http://www.php.net/manual/en/function.header.php
>
 > (Tip: tjek det nederste eksempel ud ;))
 Ok tak, men forstår ikke helt eksemplet.
 <a href ="/genfile.php/filename.pdf">download file</a>
 Koden vil da bare åbne en pdf-fil i browseren.
 Jeg ønsker følgende:
 Hvis brugeren trykker på download linket på min side åbnes en boks hvori
 han/hun kan åbne/gemme filen der ligger på serveren.
 Hvordan ser koden ud til det
 Tak
 AHR
            
              |   |   
            
        
 
            
         
            Johan Holst Nielsen (29-04-2003) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  29-04-03 11:26 |  
  |  
 
            >>hmm, forstår ikke helt hvad du vil?
 >>Vil du have brugeren til at downloade doc filen gennem en PHP fil?
 >>Så skal du nok kigge på
 >> http://www.php.net/manual/en/function.header.php
>>
 >>(Tip: tjek det nederste eksempel ud ;))
 > 
 > 
 > Ok tak, men forstår ikke helt eksemplet.
 > 
 > <a href ="/genfile.php/filename.pdf">download file</a>
 > 
 > Koden vil da bare åbne en pdf-fil i browseren.
 > 
 > Jeg ønsker følgende:
 > 
 > Hvis brugeren trykker på download linket på min side åbnes en boks hvori
 > han/hun kan åbne/gemme filen der ligger på serveren.
 > 
 > Hvordan ser koden ud til det
 Prøv noget ala dette:
 download.php
 <?php
 if(trim($_GET['file'] == '') && (file_exists($_GET['file']))) {
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=".$_GET['file']);
    readfile($_GET['file']);
 }
 ?>
 mvh
 johan
            
              |   |   
            
        
 
            
         
             AHR (29-04-2003) 
         
	
            | Kommentar Fra : AHR | 
  Dato :  29-04-03 11:34 |  
  |  
 
            > Prøv noget ala dette:
 > download.php
 > <?php
 > if(trim($_GET['file'] == '') && (file_exists($_GET['file']))) {
 > header("Content-type: application/octet-stream");
 > header("Content-Disposition: attachment; filename=".$_GET['file']);
 > readfile($_GET['file']);
 > }
 > ?>
 skal ['file'] udskiftes med titlen på dokumentet?
 skal koden indgå i et link <a href""></a>?
 Tak endnu engang   
            
             |   |   
            
        
 
            
         
              Johan Holst Nielsen (29-04-2003) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  29-04-03 11:55 |  
  |   
            
AHR wrote:
 >>Prøv noget ala dette:
 > 
 > 
 >>download.php
 > 
 > 
 >><?php
 >>if(trim($_GET['file'] == '') && (file_exists($_GET['file']))) {
 >>header("Content-type: application/octet-stream");
 >>header("Content-Disposition: attachment; filename=".$_GET['file']);
 >>readfile($_GET['file']);
 >>}
 >>?>
 > 
 > 
 > skal ['file'] udskiftes med titlen på dokumentet?
 > 
 > skal koden indgå i et link <a href""></a>?
 > 
 > Tak endnu engang   
Well... min kode var lavet udfra at linket skulle være noget ala dette her:
 <a href="download.php?file=dokument-navn.doc">Download</a>
 Men du kan også bare lave filen om til...
 <?php
 header("Content-type: application/octet-stream");
 header("Content-Disposition: attachment; filename=document.doc");
 readfile("./document.doc");
 ?>
            
              |   |   
            
        
 
            
         
               AHR (29-04-2003) 
         
	
            | Kommentar Fra : AHR | 
  Dato :  29-04-03 12:19 |  
  |  
 
            > > skal ['file'] udskiftes med titlen på dokumentet?
 > >
 > > skal koden indgå i et link <a href""></a>?
 > >
 > > Tak endnu engang   
>
 > Well... min kode var lavet udfra at linket skulle være noget ala dette
 her:
 >
 > <a href="download.php?file=dokument-navn.doc">Download</a>
 >
 > Men du kan også bare lave filen om til...
 > <?php
 > header("Content-type: application/octet-stream");
 > header("Content-Disposition: attachment; filename=document.doc");
 > readfile("./document.doc");
 > ?>
 Denne kode åbner kun dokumentet i browseren. Jeg vil jo gerne have at
 brugeren har mulighed for at gemme dokumentet med det samme som på stocholms
 side med hans cv'er:
 http://www.stocholm.dk/about.aspx
Tak
            
              |   |   
            
        
 
            
         
                AHR (29-04-2003) 
         
	
            | Kommentar Fra : AHR | 
  Dato :  29-04-03 12:21 |  
  |  
 
            > Denne kode åbner kun dokumentet i browseren. Jeg vil jo gerne have at
 > brugeren har mulighed for at gemme dokumentet med det samme som på
 stocholms
 > side med hans cv'er:
 >
 >  http://www.stocholm.dk/about.aspx
>
 > Tak
 Undskyld. Min fejl. Det gør den jo heller ikke på hans side. Jeg troede bare
 man kunne få en windows boks op og spørge om man ville gemme eller åbne
 dokumentet.
            
              |   |   
            
        
 
            
         
                Lars Dybdahl (29-04-2003) 
         
	
            | Kommentar Fra : Lars Dybdahl | 
  Dato :  29-04-03 13:30 |  
  |   
            AHR wrote:
 > Denne kode åbner kun dokumentet i browseren.
 
 Vær opmærksom på, at visse browsere har det med at ignorere http-headers -
 det gælder især Microsoft's Internet Explorer. De kigger nogle gange på
 indholdet af det, de downloader, og opfører sig derefter. Header-løsningen
 er derfor ikke 100% sikker, men det er den bedste, der umiddelbart kan lade
 sig gøre.
 
 Lars.
 
 -- 
 Freelance programmør
 Programmering mod timebetaling
  
            
             |   |   
            
        
 
            
         
             Lars Dybdahl (29-04-2003) 
         
	
            | Kommentar Fra : Lars Dybdahl | 
  Dato :  29-04-03 12:13 |  
  |   
            Johan Holst Nielsen wrote:
 > if(trim($_GET['file'] == '') && (file_exists($_GET['file']))) {
 
 Øh - var der nogen, der sagde sikkerhedsbrist?!?
 
 Lars.
 
 -- 
 Freelance programmør
 Programmering mod timebetaling
  
            
             |   |   
            
        
 
            
         
              Johan Holst Nielsen (29-04-2003) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  29-04-03 12:26 |  
  |  
 
            >>if(trim($_GET['file'] == '') && (file_exists($_GET['file']))) {
 > 
 > 
 > Øh - var der nogen, der sagde sikkerhedsbrist?!?
 Læs dit egen signatur:
 Freelance programmør
 Programmering mod timebetaling
 Undskyld, men nu regner jeg med folk selv arbejder videre med koden.
 En ting kunne være at f.eks. lade alt komme op i et uploade directory, 
 og eller f.eks.
 Men hvis vi skal kigge på 100% sikkerhed :)
 eregi => tjek om filen som brugeren ønsker at hente har rigtigt 
 extension (doc$ eks.).
 stristr => tjek om bruger forsøger at skifte directory ... (/ og ..)
 Eventuelt kunne man lege med
 http://www.php.net/manual/en/function.pathinfo.php
http://www.php.net/manual/en/function.basename.php
Men undskyld jeg ikke gider lave fuldkomne løsninger :) Jeg giver hints 
 og eksempler, jeg skriver ikke fuld kode. Hvis jeg skal have det i min 
 signatur, som en ansvarsfraskrivelse er det da i orden.
 mvh
 Johan
            
              |   |   
            
        
 
            
         
               Lars Dybdahl (29-04-2003) 
         
	
            | Kommentar Fra : Lars Dybdahl | 
  Dato :  29-04-03 13:27 |  
  |   
            Johan Holst Nielsen wrote:
 > Men undskyld jeg ikke gider lave fuldkomne løsninger :)
 
 Prototyper bliver ofte ophøjet til færdige produkter og eksempler bliver
 ofte kopieret direkte ind i færdige webløsninger. Derfor synes jeg, at det
 var på sin plads at gøre opmærksom på, at den skrevne kode helst ikke måtte
 anvendes, som den stod der. Der er ingen personlig kritik i det, og jeg
 tror at vi er enige om pointen.
 
 Lars.
 
 -- 
 Freelance programmør
 Programmering mod timebetaling
  
            
             |   |   
            
        
 
            
         
                Johan Holst Nielsen (29-04-2003) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  29-04-03 14:10 |  
  |   
            Lars Dybdahl wrote:
 > Johan Holst Nielsen wrote:
 > 
 >>Men undskyld jeg ikke gider lave fuldkomne løsninger :)
 > 
 > 
 > Prototyper bliver ofte ophøjet til færdige produkter og eksempler bliver
 > ofte kopieret direkte ind i færdige webløsninger. Derfor synes jeg, at det
 > var på sin plads at gøre opmærksom på, at den skrevne kode helst ikke måtte
 > anvendes, som den stod der. Der er ingen personlig kritik i det, og jeg
 > tror at vi er enige om pointen.
 
 Tror også vi er enige :)
 Men jeg håber da ikke en (professionel*) programmør ville kører en kode 
 direkte fra Usenet, hvor folk ikke har ansvar for det de laver, og så 
 ind i deres produkt, uden først at gennemse koden, og analysere om der 
 kunne være brug for et sikkerhedstjek af koden.
 
 *) En person der får penge for sit arbejde. Eventuelt frivillig der 
 arbejder med produkter som indeholder andre personlige oplysninger.
 
 mvh
 Johan
 
  
            
             |   |   
            
        
 
            
         
                 Lars Dybdahl (29-04-2003) 
         
	
            | Kommentar Fra : Lars Dybdahl | 
  Dato :  29-04-03 19:13 |  
  |   
            Johan Holst Nielsen wrote:
 > Men jeg håber da ikke en (professionel*) programmør ville kører en kode
 > direkte fra Usenet, hvor folk ikke har ansvar for det de laver, og så
 
 Jeg kommer jævnligt ud til kunder, der har problemer med kode, lavet af
 andre programmører, og derfor ser jeg temmelig meget forskellig kode, både
 i C, C++, Pascal, PHP, Perl og andet sjov.
 
 I mange sprog, men især med php ser jeg desværre, at der kopieres på livet
 løs, uden større omtanke, også af professionelle, defineret som folk, der
 har programmering som fuldtidsarbejde. Når jeg kommenterer, at eksemplet
 var usikkert, skyldes det faktisk, at jeg ofte har oplevet, at
 professionelle programmører, der fremlagde et eksempel for en større
 forsamling, faktisk ikke tænkte i sikkerhedsmæssige aspekter og derfor
 faktisk ville have programmeret det på den måde, som eksemplet var
 fremlagt.
 
 Lars.
 
 -- 
 Freelance programmør
 Programmering mod timebetaling
  
            
             |   |   
            
        
 
            
         
                  Johan Holst Nielsen (30-04-2003) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  30-04-03 08:40 |  
  |   
            
 
 Lars Dybdahl wrote:
 > I mange sprog, men især med php ser jeg desværre, at der kopieres på livet
 > løs, uden større omtanke, også af professionelle, defineret som folk, der
 > har programmering som fuldtidsarbejde. Når jeg kommenterer, at eksemplet
 > var usikkert, skyldes det faktisk, at jeg ofte har oplevet, at
 > professionelle programmører, der fremlagde et eksempel for en større
 > forsamling, faktisk ikke tænkte i sikkerhedsmæssige aspekter og derfor
 > faktisk ville have programmeret det på den måde, som eksemplet var
 > fremlagt.
 
 Okay, jeg kan sagnes se problemstillingen. Men jeg ved ikke hvad jeg 
 skal være mest bekymret over:
 - At et eksempel ikke er sikkert (når det handler om noget helt 3...)
 - At folk naivt tror på at koden er okay, blot fordi den virker.
 
 Jeg kender også til aspekterne, dog mener jeg primært det er PHP meget 
 vage overgang mellem datatyper der er et lige så stort problem. ;) Men 
 det er vidst en anden diskussion.
 Men muligvis skal jeg vende mig til at skrive en lille 
 ansvarsfraskrivelse, selvom det selvfølgelig er uheldig. Men tror 
 faktisk vi er enige. For at komme tilbage til min bekymring, så er jeg 
 mest bekymrede over folk der naivt tror på andres kode. (Vel og mærke 
 kode som er lavet af folk man ikke kender).
 
 Typisk er det umuligt i en Usenet situation at lave en fuldkommen kode, 
 der er sikker (at man kan gøre en del, er en anden side af sagen). Man 
 kender sjældent personens egentlige behov, og hvorledes resten af koden 
 er opbygget. Derfor bør der også vises basale eksempler... og ikke 
 fuldkomne løsninger. Eksemplerne skal som udgangspunkt sjældent bruges 
 som de ser ud, i den endelige kode. Men mere som et skridt på vejen, så 
 man forstår hvorledes man kommer til løsningen.
 
 mvh
 Johan
 
  
            
             |   |   
            
        
 
            
         
                   Jens Tønnesen (30-04-2003) 
         
	
            | Kommentar Fra : Jens Tønnesen | 
  Dato :  30-04-03 09:19 |  
  |  
 
            Johan Holst Nielsen <johan@weknowthewayout.com> skrev i
 dk.edb.internet.webdesign.serverside.php:
 >Typisk er det umuligt i en Usenet situation at lave en fuldkommen kode, 
 >der er sikker (at man kan gøre en del, er en anden side af sagen). Man 
 >kender sjældent personens egentlige behov, og hvorledes resten af koden 
 >er opbygget. Derfor bør der også vises basale eksempler... og ikke 
 >fuldkomne løsninger. Eksemplerne skal som udgangspunkt sjældent bruges 
 >som de ser ud, i den endelige kode. Men mere som et skridt på vejen, så 
 >man forstår hvorledes man kommer til løsningen.
 Ja, netop. I de (få) tilfælde, hvor jeg har været i stand til at
 anvise løsningsforslag i denne gruppe, så har jeg altid sørget for at
 gøre kode-eksemplet så simpelt som muligt. Det betyder ofte at man
 undlader basale sikkerhedscheck, såsom at teste variables
 tilstedeværelse, type etc.
 I debatindlæg, der direkte handler om sikkerhed, er det selvfølgelig
 en anden sag.
 -- 
 Jens Tønnesen -  http://www.pressefoto.dk
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |