[PHP]Headers

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Hallo,
Ik kom er echt niet uit.
Ik heb een site, waar je dingen kan uploaden en downloaden. Ik heb het downloaden in een header gezet om misbruik te voorkomen. Deze headers worden getriggerd als er op de Downloaden knop geduwed wordt. Dit werkt allemaal. Er komt ook netjes het opslaan venster, hij download netjes, de file staat dan ook met de grote die hij online heeft op de schijf. Nu open ik het bestand en wordt plat gegooit met errors van corruptie van het bestand. Dit is zo bij jpg(opend wel in PS), ptt, wav, wma etc. Behalve bij .zip en .txt bestanden. Die doen het wel.
Dit is mijn script waar de headers instaan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
header('
Content-Description: File Transfer;
Cache-Control: must-revalidate, post-check=0, pre-check=0;
Cache-Control: public;
Content-Disposition: attachment; filename='.$_GET['file'].'; 
Content-Type: '.$info['type'].';
Content-Transfer-Encoding: binary; 
Content-Length: '.$size.';
Pragma: no-cache ;
Expires: 0;');
readfile('uploads/'.$_GET['file']);
exit;

Wat overige informatie:
Deze code staat in een class die wordt geinclude.
$info['type'] bevat het type, bijvoorbeeld: image/bmp.
$_GET['file'] is de filename.
Wat moet ik doen om de corruptie tegen te gaan?

[ Voor 9% gewijzigd door Depress op 02-01-2006 22:05 ]


Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Wat is de waarde van $size?

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 01:59

aex351

I am the one

PHP:
1
Content-Transfer-Encoding: binary;


Text moet je niet opslaan als binary maar als ASCII.
edit2: Je moet ook niets voor het script echoen oid.

[ Voor 78% gewijzigd door aex351 op 02-01-2006 22:13 ]

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
$size, is de groote van de file

Text, ok dat dan als ascii, maar verklaard nog steeds niet waarom .ptt bijvoorbeeld niet werkt.

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Ik vroeg niet wat de variabele voorsteld, maar wat de waarde is. :)

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Ik zei al, de groote van de file in bytes(standaard in php alles met bytes)

Acties:
  • 0 Henk 'm!

  • b19a
  • Registratie: September 2002
  • Niet online
Depress schreef op maandag 02 januari 2006 @ 22:13:
Ik zei al, de groote van de file in bytes(standaard in php alles met bytes)
Fout... wat is de waarde?

0 of is het een groter getal? Hij wil weten of je bestand wel goed ingelezen wordt o.i.d....

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
dat verschilt per file. Het is altijd groter als 0. Als een file 300kb groot is heeft die de waarde van 300000Bytes. En jah, die wordt goed ingelezen:
PHP:
1
$size = filesize('uploads/'.$_GET['file']);

[ Voor 30% gewijzigd door Depress op 02-01-2006 22:19 . Reden: meer ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik gebruik deze code:
PHP:
1
2
3
4
5
6
header('Content-type: application/octet-stream');
header('content-length: '.$lenght.'');
header('content-disposition: attachment; filename='.$filename.'');

$fp=fopen($file, 'r');
fpassthru($fp)
En dat gaat altijd goed :)

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
ik ga hem direct proberen!

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Depress schreef op maandag 02 januari 2006 @ 22:18:

Als een file 300kb groot is heeft die de waarde van 300000Bytes.
Dan mis je wel een paar bytes. ;)

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Niet om e.o.a., maar wat doet dit voor de server load (al je downloads moeten 'door' PHP)?

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
De load is geen probleem.
Maar het script van elguapo werkt niet.
Krijg nog steeds corrupte downloads!
Voorbeeld:
http://www.uploading.nl/index.php?file=1136153362.wav

[ Voor 25% gewijzigd door Depress op 02-01-2006 22:31 ]


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Op php.net staan onder fpassthru een zwik voorbeelden. Misschien heb je er wat aan.

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Zal een op php.net kijken. Maar heb daar al hele header collectie door gewerkt.

Acties:
  • 0 Henk 'm!

Verwijderd

Als je dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Uploading.nl - Dit is pas echt uploaden!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style.css" type="text/css">
<SCRIPT LANGUAGE='JAVASCRIPT' TYPE='TEXT/JAVASCRIPT'>
    function show_bar(){
        document.getElementById("upload").innerHTML = '<center>Je bestand wordt geüpload!<br><object type="application/x-shockwave-flash" data="/afbeeldingen/bar.swf" width="115" height="14"><param name="movie" value="/afbeeldingen/bar.swf"></object></center>';
    }   
    // -->  
</script>
voor de eigenlijke data output werkt t niet nee...

[ Voor 24% gewijzigd door Verwijderd op 02-01-2006 22:38 ]


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Dat stukje moet er nog uit, wordt nergens gebruikt;)

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Heb op php.net gekeken naar dat fpassthru maar zie er niks tussen staan, ik ben ten einde raad:(

Acties:
  • 0 Henk 'm!

Verwijderd

Depress schreef op maandag 02 januari 2006 @ 22:40:
Dat stukje moet er nog uit, wordt nergens gebruikt;)
Haal dat stukje er nu maar uit dan, grote kans dat het dan wel werkt...

Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Bekijk je .wav maar eens met notepad.

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
het werkt :Y)
Hartelijk dank elguapo.
Mooi man. Vind ik nu echt top van je!:) :>

Acties:
  • 0 Henk 'm!

Verwijderd

Mooi. En ga nu maar ff zoeken waarom je dat er uit moest halen ;)

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Headers allready sent?
Pagina: 1