Toon posts:

[php] een script zelf in een download aanbieden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik moet voor school aan PHP gaan zitten werken, ik kan al redelijk met de beginselen van PHP overweg maar ik zit een beetje met een probleempje op dit moment.

Ik moet op school waar ze geen PHP webservices draaien mijn php pagina's testen, dit is vrij vervelend, zelf draai ik een Apache (met php en MySQL modules) server die toch 24/7 aanstaat dus dan kan ik het net zo goed naar mijn eigen computer sturen.
Ik heb in de Codebase met nuttige code al een download script voor word docs gevonden, dit heb ik een beetje veranderd maar hij blijft steeds foutmeldingen geven.
Nu geeft hij het script in een pagina maar de bedoeling is dat hij het of netjes in een iframe zet of als download aanbied...
maar ik heb geen flauw idee over hoe ik zoiet moet doen, momenteel zit ik dan ook nog eens met dubbele headers omdat de computer de inhoud van het phpscript als HTML intrepeteerd...

Is er een methode om het zo te veranderen dat hij de source als download aanbied ?

me huidige code :
PHP:
1
<?if (file_exists($filename.".php")) // bestaat het bestand?  {    $filename = $filename.".php"; // doc erachter, om geklooi met slimme variabelen te voorkomen    if (strstr($HTTP_USER_AGENT, "MSIE")) // internet explorer?      {        $attachment = ""; // attachment var leeglaten      }    else      {        $attachment = " attachment;"; // attachment var vullen      }    $size = filesize("$filename"); // bestandsgrootte    $fh = fopen("$filename", "r"); // bestand openen    // correcte headers sturen    header("Content-Type: application/octetstream");    header("Content-Length: $size");    header("Pragma: no-cache");    header("Expires: 0");    header("Content-Disposition:$attachment filename=$php");    header("Content-Transfer-Encoding: ASCII");    fpassthru($fh); // bestand doorsturen    exit; // script stoppen  }else // bestand bestaat niet  {        // Error Handling    echo "error handling moet hier komen";  }?>

De output die er gegeven word als ik alles goed aanvraag

---------
Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\download.php:4) in c:\apache\www\download.php on line 20

Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\download.php:4) in c:\apache\www\download.php on line 21

Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\download.php:4) in c:\apache\www\download.php on line 22

Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\download.php:4) in c:\apache\www\download.php on line 23

Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\download.php:4) in c:\apache\www\download.php on line 24

Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\download.php:4) in c:\apache\www\download.php on line 25
---------

Na deze meldingen pakt de computer het php bestand verder als HTML aan...

edit : de [ code ] dingetjes maar ff weggehaald, het vern**kte de lay out nogal...

  • mayhem
  • Registratie: September 2000
  • Laatst online: 29-07 10:37

mayhem

_______________

geen idee, maar ik wil het antwoord ook weten, vandaar dat ik mezelf even aan dit topic hang :)

_______________


Verwijderd

Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\download.php:4) in c:\apache\www\download.php on line 20
Wat staat er op regel 4?

Verwijderd

Topicstarter
Wat staat er op regel 4 ?
Van de code van het download systeem :
PHP:
1
<??>

Ik zou zeggen dat ie dat wel aankan...

Van de code van de php die ik wou downloaden :
PHP:
1
<?//    echo "$filenaam <br>";?>

Deze is dus nog nuttelozer }:O

En ik weet door ervaring al zeker dat het niet op mijn server verplicht is <?php te gebruiken... |:(
Dus dat is het niet

edit : vergeten te quoten

Verwijderd

Maar wat staat er op regel 4?
Want de foutmelding zegt dat er al iets naar de browser is gestuurd, daarom kan ie geen headers meer sturen... :)

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Heb je een gratis aanbieder?

Zet alle header functies overigens eens vooraan :)

Verwijderd

Topicstarter
Op dinsdag 11 juni 2002 17:12 schreef WOmBaT het volgende:
Heb je een gratis aanbieder?
Even mezelf quoten...
Ik moet op school waar ze geen PHP webservices draaien mijn php pagina's testen, dit is vrij vervelend, zelf draai ik een Apache (met php en MySQL modules) server die toch 24/7 aanstaat dus dan kan ik het net zo goed naar mijn eigen computer sturen.
Dus ik gebruik 1 van mijn eigen systemen ervoor...
Zie ook de dikgedrukte tekst :D

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Op dinsdag 11 juni 2002 17:14 schreef RBerm het volgende:

[..]

Even mezelf quoten...
[..]

Dus ik gebruik 1 van mijn eigen systemen ervoor...
Zie ook de dikgedrukte tekst :D
Sorry :P
Ik zal je script hier ook ff testen :)

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Misschien een idee, maar draai je php versie 4.1 of hoger?

Verwijderd

Topicstarter
Op dinsdag 11 juni 2002 17:16 schreef WOmBaT het volgende:

[..]

Sorry :P
Ik zal je script hier ook ff testen :)
No problem ;)

De syntax voor het aanroepen is :
download.php?filename=bestand.php
mits je het download script download.php noemt natuurlijk... :D

Verwijderd

Topicstarter
Op dinsdag 11 juni 2002 17:18 schreef WOmBaT het volgende:
Misschien een idee, maar draai je php versie 4.1 of hoger?
Ik draai PHP 4.0... |:(

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Op dinsdag 11 juni 2002 17:21 schreef RBerm het volgende:

[..]

Ik draai PHP 4.0... |:(
Sorry, maar waar moet ik dat lezen :o :P

Verwijderd

Topicstarter
Op dinsdag 11 juni 2002 17:22 schreef WOmBaT het volgende:

[..]

Sorry, maar waar moet ik dat lezen :o :P
Nergens... maar ik ben degene die een oude versie PHP draait dus daarom |:(... (srry, zal ut volgende keer iets duidelijker zetten...)

Voor meer info over dat systeem verwijs ik u naar http://62.238.232.139/sys.php :)

  • the_dgc
  • Registratie: Augustus 2001
  • Laatst online: 18-11-2022

the_dgc

raar he..... leven!!

het is maar een idee hoor maar warom zet je niet gewoon een ftp op waarlangs je je php bestanden in je wwwroot kunt zetten...

probleem opgelost..

een wereld zonder vrede.. raar?? kijk om je heen dan merkje dat het heel normaal is...
neeeh ik ben niet druk, jij bent gewoon te rustig !!
dual xeon 2.4, 1024 intern, gf3 ti200, maxtor 60 gb 7200 rpm en nog wat opvulling


Verwijderd

Topicstarter
Op dinsdag 11 juni 2002 17:31 schreef the_dgc het volgende:
het is maar een idee hoor maar warom zet je niet gewoon een ftp op waarlangs je je php bestanden in je wwwroot kunt zetten...

probleem opgelost..
Kan niet omdat ftp niet werkt vanuit de schoolcomputers.
Hadden ze slechte ervaring mee, was eens iemand die met een warez cd naar school toe kwam met een lijstje pubs en die via de schoolservers ging vullen, nu laten ze alleen nog maar HTTP verbindingen toe ;(

  • schijndel
  • Registratie: Juni 1999
  • Laatst online: 03-09 15:11
[oops]

  • Mentalist
  • Registratie: Oktober 2001
  • Laatst online: 05-09 22:06

Mentalist

[avdD]

Op dinsdag 11 juni 2002 17:34 schreef RBerm het volgende:

[..]

Kan niet omdat ftp niet werkt vanuit de schoolcomputers.
Hadden ze slechte ervaring mee, was eens iemand die met een warez cd naar school toe kwam met een lijstje pubs en die via de schoolservers ging vullen, nu laten ze alleen nog maar HTTP verbindingen toe ;(
Files kun je toch ook zonder ftp via port 80 downen :?
Kun je het niet gewoon op de webserver zetten en dan daarvan downen ofzo :?

Verstuurd vanaf mijn Computer®


Verwijderd

lees de draad voordat je blaat

  • Mentalist
  • Registratie: Oktober 2001
  • Laatst online: 05-09 22:06

Mentalist

[avdD]

Op dinsdag 11 juni 2002 18:15 schreef Foxboy het volgende:
lees de draad voordat je blaat
Wie ik?
Sorry hoor maar files kun je toch ook gewoon over een HTTP verbinding binnenhalen? (duh, tuurlijk kan dat, de html van websites en de plaatjes erop zijn ook files en die komen over de http)

Verstuurd vanaf mijn Computer®


  • the_dgc
  • Registratie: Augustus 2001
  • Laatst online: 18-11-2022

the_dgc

raar he..... leven!!

Op dinsdag 11 juni 2002 17:34 schreef RBerm het volgende:

[..]

Kan niet omdat ftp niet werkt vanuit de schoolcomputers.
Hadden ze slechte ervaring mee, was eens iemand die met een warez cd naar school toe kwam met een lijstje pubs en die via de schoolservers ging vullen, nu laten ze alleen nog maar HTTP verbindingen toe ;(
ook dat is geen probleem dan moet je het gewoon eens proberen met http://triloxigen.endoria.net/mirrors/http2ftp/
hiermee kun je via de http poort door de proxy en dan toch je ftp benaderen..

bij mij op school werkte het tenminste

gewoon proberen dus..

een wereld zonder vrede.. raar?? kijk om je heen dan merkje dat het heel normaal is...
neeeh ik ben niet druk, jij bent gewoon te rustig !!
dual xeon 2.4, 1024 intern, gf3 ti200, maxtor 60 gb 7200 rpm en nog wat opvulling


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02-09 19:44

Gerco

Professional Newbie

Staat er misschien lege regels BUITEN php tags in je bestand? In dat geval krijg je die melding.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Op dinsdag 11 juni 2002 18:25 schreef W3ird_N3rd het volgende:

[..]

Wie ik?
Sorry hoor maar files kun je toch ook gewoon over een HTTP verbinding binnenhalen? (duh, tuurlijk kan dat, de html van websites en de plaatjes erop zijn ook files en die komen over de http)
Als de webserver vindt dat hij alle bestanden met extensie .php moet laten parsen voor hij ze doorgeeft heb je dus niet het bestand dat je wilt hebben.

[ontopic]
Volgens mij moet je niet met passthru en headers werken, maar gewoon het bestand met file(); inlezen en regel voor regel printen.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Op dinsdag 11 juni 2002 17:19 schreef RBerm het volgende:

[..]

No problem ;)

De syntax voor het aanroepen is :
download.php?filename=bestand.php
mits je het download script download.php noemt natuurlijk... :D
Je zet er nog een keer .php achter. Klopt dat wel?

Verwijderd

Zet een kopietje als .phps op de server, en edit even je httpd.conf van Apache:
code:
1
AddType application/x-httpd-php-source .phps

Dan krijg je gratis syntax highlighting cadeau :)

Verwijderd

Op dinsdag 11 juni 2002 19:36 schreef Cheatah het volgende:
Zet een kopietje als .phps op de server, en edit even je httpd.conf van Apache:
code:
1
AddType application/x-httpd-php-source .phps

Dan krijg je gratis syntax highlighting cadeau :)
Dit is de correcte oplossing :D

Verwijderd

Maar WAT staat er nou op regel 4???...

Je foutmelding zegt namelijk dat er al iets naar de browser is gestuurd op regel 4.
Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\download.php:4) in c:\apache\www\download.php on line 20

Verwijderd

Hou er dus wel rekening mee dat het ook een spatie, een tab of een newline kan zijn vóór je <?

  • Joove
  • Registratie: Januari 2001
  • Laatst online: 16:18
Ik zie wel een fout die verband houdt met regel 4, alleen denk ik niet met die header error. Je geeft hier voor ergens in een reply aan dat je hem als volgd aanroept:
bla.php?filename=bestand.php

Maar in het begin van je script open je $filename.'.php' en ook de 2de keer open je $filename.'.php' Misschien zit hier een fout in?? dat je de filename nu dus een extra .php extensie geeft, ook al heb je die al in het aanroepen gegeven.

Verwijderd

Volgens mij heeft die gewoon een whiteline o.i.d. voor de header staan..
Fucking irritant, als je het zelf niet ziet. Zelfde gedonder ook vaak gehad met cookies (onderdeel van de header)

Verwijderd

Op dinsdag 11 juni 2002 23:22 schreef Tizzwat het volgende:
Volgens mij heeft die gewoon een whiteline o.i.d. voor de header staan..
Fucking irritant, als je het zelf niet ziet. Zelfde gedonder ook vaak gehad met cookies (onderdeel van de header)
precies zoals ik zei dus...

Verwijderd

Op dinsdag 11 juni 2002 23:33 schreef zellufs het volgende:
precies zoals ik zei dus...
En net zoals hij :)
Op dinsdag 11 juni 2002 19:02 schreef Gerco het volgende:
Staat er misschien lege regels BUITEN php tags in je bestand? In dat geval krijg je die melding.
Pagina: 1