Datei-Download transparent durch PHP-Script?
Datei-Download transparent durch PHP-Script?
am 03.10.2006 13:24:57 von Matthias Hoffmann
Hallo,
ich baue in meine Shareware gerade eine Update-Funktionalitaet ein.
=46unktionieren soll das Ganze so, dass ueber eine Steuerungsdatei auf
dem Server geprueft wird, ob ein Update vorliegt. Ist dem so, soll ein
PHP-Script mit Parametern (User und PW) aufgerufen werden. Ist der
User in einer Datenbank eingetragen, soll das Script eine Datei
transparent durchreichen.=20
Im Script sieht der Teil dann so aus:
$filename =3D "/home/www/doc/[...].exe";
# Passenden Datentyp erzeugen.
header("Content-Type: application/octet-stream");
# Passenden Dateinamen im Download-Requester vorgeben.
header("Content-Disposition: attachment; filename=3D\"[...].exe\"");
# Datei ausgeben.
readfile($filename);
Ueber einen Link direkt aufgerufen, funktioniert das auch so. Man
bekommt ein Auswahlfenster, wo die Datei hingespeichert werden soll.
Die Update-Komponente hingegen verschluckt sich hier. Ich weiss jetzt
nicht, ob das nun am PHP-Script liegt oder an der Komponente.=20
Any hints?
Gruss,
Matthias
Gruss,
Matthias Hoffmann
Re: Datei-Download transparent durch PHP-Script?
am 03.10.2006 14:21:19 von Helmut Chang
Matthias Hoffmann schrieb:
> Ist dem so, soll ein
> PHP-Script mit Parametern (User und PW) aufgerufen werden.
....
> Ueber einen Link direkt aufgerufen, funktioniert das auch so.
Der wie aussieht? Sind User/PW GET-Parameter, POST-Daten, oder gar
HTTP-Auth-Header?
> Die Update-Komponente hingegen verschluckt sich hier.
Bedeutet exakt? Die Komponente frisst den Download, bekommt einen
Hustenanfall und spuckt ihn quer durch den Raum?
> Ich weiss jetzt
> nicht, ob das nun am PHP-Script liegt oder an der Komponente.
An deiner Komponente. Wahrscheinlich.
> Any hints?
Ja bitte! Dann kann man auch leichter helfen.
gruss, heli
Re: Datei-Download transparent durch PHP-Script?
am 03.10.2006 15:05:22 von Matthias Hoffmann
>> Ueber einen Link direkt aufgerufen, funktioniert das auch so.
>Der wie aussieht? Sind User/PW GET-Parameter, POST-Daten, oder gar=20
>HTTP-Auth-Header?
Per GET-Parameter
>> Die Update-Komponente hingegen verschluckt sich hier.
>Bedeutet exakt? Die Komponente frisst den Download, bekommt einen=20
>Hustenanfall und spuckt ihn quer durch den Raum?
Sie aktualisiert nicht, so als ob sie keine Datei geliefert bekommen
hat vom Script.
>> Ich weiss jetzt
>> nicht, ob das nun am PHP-Script liegt oder an der Komponente.
>An deiner Komponente. Wahrscheinlich.
Wie muss denn das Script aussehen, so dass die Datei so geliefert
wird, als haette ich sie ueber einen direkten Link
(http://domain.de/datei.exe) heruntergeladen?
>> Any hints?
>Ja bitte! Dann kann man auch leichter helfen.
Sind anbei. ;)
Gruss, Matthias
Gruss,
Matthias Hoffmann
Re: Datei-Download transparent durch PHP-Script?
am 03.10.2006 15:52:34 von jbusenet
Matthias Hoffmann wrote:
>>Der wie aussieht? Sind User/PW GET-Parameter, POST-Daten, oder gar
>>HTTP-Auth-Header?
> Per GET-Parameter
Eine tolle Idee Username und Passwort vie GET zu senden. Du kannst Sie
ja gleich veroeffentlichen *lol* Shareware sagtest Du? Dafuer soll also
jemand bezahlen? Viel Erfolg!
> Sie aktualisiert nicht, so als ob sie keine Datei geliefert bekommen
> hat vom Script.
Ich habe auch ein Problem! Hat jemand eine Loesung fuer mich?
Du solltest vielleicht mal ein wenig paezieser werden. Ein wenig
Quellcode (es sei denn wir sollen dafuer bezahlen).
> Wie muss denn das Script aussehen, so dass die Datei so geliefert
> wird, als haette ich sie ueber einen direkten Link
> (http://domain.de/datei.exe) heruntergeladen?
Also moechtest Du eine Komplettloesung...
Du koenntest z.B. via fopen() die datei oeffnen und local speichern. Was
ist das eingentlich fuer eine Win-Anwendung, fuer die man PHP
installieren muss. Da es sich bei M$-Windows ja um ein ausgewachsenes
Developer-OS handelt habe nicht viele PHP installiert. Ich wuerde da
eher kompilierte SPrachen vorschlagen.
Was haeltst Du von C/C++ ...
Bei Freeware hat man ggf. weniger Verpflichtungen ...
regards
Julian
--
Julian Bessenroth ( http://www.vnox.de )
Email : jbusenet (Ligatur von "a" und "d") gmx.de
Reply-Emails : mit "[NG]" oder "[NOSPAM]" im Betreff,
sonst gehen sie unter.
Re: Datei-Download transparent durch PHP-Script?
am 03.10.2006 16:02:30 von dafox
Matthias Hoffmann schrieb:
>>> Ueber einen Link direkt aufgerufen, funktioniert das auch so.
>> Der wie aussieht? Sind User/PW GET-Parameter, POST-Daten, oder gar
>> HTTP-Auth-Header?
> Per GET-Parameter
Damit sie auch ja in Proxies zwischengespeichert werden und ich
Logdateien auftauchen. Mach das lieber mit den entsprechenden
HTTP-Headern. Dann brauchst du auf dem Server nicht mal mehr PHP.
12.6. Apache: Wie kann ich ein Verzeichnis mit einem Passwort schützen?
http://www.php-faq.de/q/q-apache-passwort.html
>>> Ich weiss jetzt
>>> nicht, ob das nun am PHP-Script liegt oder an der Komponente.
>> An deiner Komponente. Wahrscheinlich.
> Wie muss denn das Script aussehen, so dass die Datei so geliefert
> wird, als haette ich sie ueber einen direkten Link
> (http://domain.de/datei.exe) heruntergeladen?
13.3. Wie realisiere ich einen Dateidownload mit PHP?
http://www.php-faq.de/q/q-datei-download.html
>>> Any hints?
>> Ja bitte! Dann kann man auch leichter helfen.
> Sind anbei. ;)
1.17. Wie stelle ich meine Frage an die Newsgroup am sinnvollsten?
http://www.php-faq.de/q/q-newsgroup-fragen.html
Re: Datei-Download transparent durch PHP-Script?
am 04.10.2006 14:18:03 von Matthias Hoffmann
>> Per GET-Parameter
>Damit sie auch ja in Proxies zwischengespeichert werden und ich=20
>Logdateien auftauchen.=20
Das ist auch nur eine Quick&Dirty-Loesung gewesen, um schnell zum
Hauptteil uebergehen zu koennen. ;)
>12.6. Apache: Wie kann ich ein Verzeichnis mit einem Passwort =
schützen?
>http://www.php-faq.de/q/q-apache-passwort.html
Das wuerde ich gerne vermeiden, da ich noch andere Funktionen im
Download-Script ausfuehren moechte. Z.B.: Existiert User, dann
Download starten und Downloadcounter erhoehen. Existiert User nicht,
dann Notiz in Logdatei, um die Keydaten in der naechsten Version
meines Shareware-Programmes (das uebrigens in Delphi geschrieben und
ganz erfolgreich ist... Gruss an Julian) auf die Blacklist setzen zu
koennen.=20
>13.3. Wie realisiere ich einen Dateidownload mit PHP?
>http://www.php-faq.de/q/q-datei-download.html
Aus dieser FAQ stammt auch mein Code-Snippet aus dem Ursprungs-Post...
Dachte, es gaebe noch andere Wege in PHP, um hier ans Ziel zu
gelangen. Dann muss ich das Problem auf Delphi-Ebene angehen.
Danke fuer die konstruktiven Hinweise! :)
Gruss,
Matthias Hoffmann
Re: Datei-Download transparent durch PHP-Script?
am 04.10.2006 18:21:52 von dafox
Matthias Hoffmann schrieb:
>> 12.6. Apache: Wie kann ich ein Verzeichnis mit einem Passwort schützen?
>> http://www.php-faq.de/q/q-apache-passwort.html
> Das wuerde ich gerne vermeiden, da ich noch andere Funktionen im
> Download-Script ausfuehren moechte. Z.B.: Existiert User, dann
> Download starten und Downloadcounter erhoehen. Existiert User nicht,
> dann Notiz in Logdatei, um die Keydaten in der naechsten Version
> meines Shareware-Programmes (das uebrigens in Delphi geschrieben und
> ganz erfolgreich ist... Gruss an Julian) auf die Blacklist setzen zu
> koennen.
Gut, aber auch dafür brauchst du kein PHP. Mit mod_auth_ldap oder auch
mod_auth_mysql kann man schon eine ganze Menge erreichen. Aber da wir ja
hier in einer PHP-Gruppe schreiben :).
Du kannst dennoch zur Authentifizierung "normales" HTTP-Auth verwenden,
auch wenn im Hintergrund ein PHP-Script läuft. Ein Beispiel dazu findest
du im PHP-Handbuch unter
>> 13.3. Wie realisiere ich einen Dateidownload mit PHP?
>> http://www.php-faq.de/q/q-datei-download.html
> Aus dieser FAQ stammt auch mein Code-Snippet aus dem Ursprungs-Post...
> Dachte, es gaebe noch andere Wege in PHP, um hier ans Ziel zu
> gelangen. Dann muss ich das Problem auf Delphi-Ebene angehen.
Also bei dem Beispiel aus der FAQ ist das Script auf der Serverseite
praktisch transparent, d.h. für den Client macht es keinen Unterschied,
ob er die Datei direkt herrunterlädt oder über das Script.
Wenn du ganz sicher gehen willst, dann überprüfe (eventuell in deiner
Delphi-Anwendung, ansonsten mit LiveHeaders o.ä.) die HTTP-Header.
Re: Datei-Download transparent durch PHP-Script?
am 04.10.2006 19:26:01 von Johannes Vogel
Hi Matthias
Matthias Hoffmann wrote:
> Ueber einen Link direkt aufgerufen, funktioniert das auch so. Man
> bekommt ein Auswahlfenster, wo die Datei hingespeichert werden soll.
> Die Update-Komponente hingegen verschluckt sich hier. Ich weiss jetzt
> nicht, ob das nun am PHP-Script liegt oder an der Komponente.
"Über einen link direkt aufgerufen, funktioniert's"
Wo ist also deine PHP-Frage? Ganz offensichtlich macht dein Delphi-Ding
nicht, was es machen sollte. Vielleicht hat's *.exe-Files nicht so gern?
HTH, Johannes