online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon _mpact vom 29.08.2019, 14:33 Options

download per php starten

hi
habe folgendes problem:
ich habe eine form, in der der user seine email-adresse eingeben muss. Diese wird dann auf richtigkeit überprüft, was soweit auch alles funktioniert.

Wenn der User seine mail angegeben hat, und auf den Submit-button klickt, und die mail "richtig" ist, soll ein download gestartet werden (files liegen auf dem server). Ansonsten natürlich nicht.

Logischerweise kann ich den link ja nicht direkt auf den button legen, weil er ja sonst ausgeführt wird, egal was die prüfung der Mail ergibt.

Was ich also brauche ist eine funktion, oder ein befehl mit dem ich einen download per php starten kann.

Danke schonma!

Mfg


Antwort schreiben

Antwort 1 von Supermax vom 29.08.2019, 14:41 Options

Du kannst die komplette Datei direkt durch das PHP-Script ausgeben lassen; das hat den Vorteil, daß du die Datei auch außerhalb des übers WWW erreichbaren Verzeichnisbaums ablegen kannst, wodurch ein Download ohne Überprüfung durch das Script praktisch nicht möglich ist (saubere Programmierung vorausgesetzt).

Der entsprechende Codeteil könnte für eine PDF-Datei z.B. so aussehen:

// Code der erst nach erfolgter Überprüfung ausgeführt wird
$f = fopen('[i]Dateiname[/i]','rb');
if ($f) {
   header("Content-Type: application/pdf");
   fpassthru($f);
   fclose($f);
}


Statt fopen() und fpassthru() kann man auch readfile() verwenden.

Antwort 2 von _mpact vom 29.08.2019, 14:53 Options

hi

das problem is nur das das keine files sind die man lesen kann (also so mit buchstaben und wörtern) sonder zB zip-Files, oder ähnliches.

Antwort 3 von _mpact vom 29.08.2019, 15:01 Options

hab den code trotzdem mal mit nem pdf getestet. Das bekomm ich in meinem Browser geschrieben:

Zitat:
%PDF-1.4 %Ç쏢 5 0 obj <> stream xœ­‘OK1Åïùs32f&ÿA ÕÖ¢H¥%‚ ž*„"Õïfcwׂ¡»—Ùɼ7ùíÛƒAb0ÝÛ›¸XGØ~‰=p¡5™C‚Ìs`cýhc fb%šÖ‹Cñ¹{‘ÐvOkü®7;¸*UJˆ”7ÑÙ&“| p! à<#(;!A•w¡­Ù‚&ƒ¦ _ų¼Tºª‰g¹TSžå\éˆl¼òih–±9Q£‹d«óK¹Ä˜”ûnÓ™˜—Êt_¯ÖÃ÷ðD?ô§`¥ÊjÜ?Xg±eÑyK^N•fŒ™)Ë[¥š˜‚¼ŽçC5AiÉdäµÒ]ÎìåÃ8°ËEÝ´=£O†H.†+=*MÝ“åztš¶ó˜Ž’hò˜ÒñžÞhr ö1ŽIÕjRåüTá·¸W✔œendstream endobj 6 0 obj 329 endobj 16 0 obj <> stream xœµ‘MK1†ïù¹™3Éä ¤ÐÚâµÒDO B‘êÿ“ݶ»•ztsØa&ïÌ›y6\®ëÙË5;[¾údnR°MÒ˜èx2Rò܇í5Œ|üÎæ¬iÀ—ÛàcÅ6,‚­_“èÇË5åªÕLäù•Õ¾Q—õrò


... usw...

Antwort 4 von Supermax vom 29.08.2019, 15:14 Options

Ob es sich um Text- oder binärdateien handelt sollte eigentlich egal sein, kann sein daß ich den MIME-Typ falsch angegeben habe - dieser muß natürlich für jeden Dateityp anders sein, für ZIP-Archive z.B. "application/zip". "application/octet-stream" gibt einen allgemeinen Byte-Strom an, die meisten Browser öffnen dann einen Download-Dialog.

Antwort 5 von _mpact vom 29.08.2019, 16:52 Options

danke für deine mühe!

habs jetzt mal mit JavaScript gelöst. einfach den php-tag schließen, javacode, und dann den php tag wieder öffnen.



"irgend ein php code"
?>

<script language="JavaScript">
<!--
var file ="<?php echo $filepath;?>";
window.location.href=file;
//-->
</script>


<?php

"irgend ein php code"



$filepath enthält den pfad und den dateinamen der gedownloaded werden soll.

Allerding hab ich nun ein neues Problem: Anstatt einem Download-fenster öffnet sich so ein Windows-Login-Fenster, das nach Benutzername und passwort fragt.
Ein Freund hat gesagt das liegt vllt an den MIMETYPES, konnte aber auch nich mehr dazu sagen.
Kann mir damt vllt jemand weiterhelfen?

Auf meinem Server läuft IIS 6 und php 5.2.3

thx

Ähnliche Themen

WMP als fehlendes Plugin beim Firefox
FrauHolle  27.07.2006 - 23502 Hits - 2 Antworten

php Datei startet php Datei
jensa  19.05.2007 - 230 Hits - 3 Antworten

PHP File
andi070  19.05.2008 - 34 Hits - 2 Antworten

Ordnerinhalt mit Links mit PHP auslesen
Computerfreaki  24.06.2008 - 81 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026