Download -Button
Kayar
- php
Hallo,
ich habe einen Link zum Downloaden eingefügt auf seite1.php:
while ($dsatz = mysql_fetch_assoc($res))
{
$datei = $dsatz["datei"];
...
<a href='literature-download.php'
onClick='location.href='$datei';return false;' target='_self'>
LINK
</a>
In der Seite literature-download.php existiert nur eine PHP-Anweisung:
<?php
header("Content-Description: File Transfer
Content-Type: application/force-download
Content-Disposition: attachment; filename="$datei"");
readfile($datei);
?>
Zum Herunterladen wird nur die Datei literature-download.php angeboten aber nicht $datei.
Wie kann ich dass ändern.
<a href='literature-download.php'
onClick='location.href='$datei';return false;' target='_self'>
Schau Dir einfach die Anführungszeichen noch mal an...
Gruß, LX
--
X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: Unusual
X-Please-Search-Archive-First: Absolutely Yes
Also ich habe das jetzt so geändert:
<a href='literature-download.php'
onClick='location.href='$datei'';return false; target='_self'>
Aber jetzt passiert überhaupt nichts.
Mahlzeit Kayar,
Also ich habe das jetzt so geändert:
<a href='literature-download.php'
onClick='location.href='$datei'';return false; target='_self'>
... was immer noch falsch ist. Sind Dir die Grundlagen von <http://de.selfhtml.org/html/allgemein/textauszeichnung.htm#attribute@title=HTML> und <http://de.selfhtml.org/javascript/sprache/eventhandler.htm@title=Javascript> vertraut?
> Aber jetzt passiert überhaupt nichts.
[Kein Wunder.](https://forum.selfhtml.org/?t=183255&m=1213538)
MfG,
EKKi
--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
Ich gebe auf, jetzt habe ich soviele verschiedene Kombinationen ausprobiert und im Netz nachgeschaut, es klappt nicht.
Kann mir jemand sagen, was der Fehler ist, außer dem, dass ich keine Ahnung habe ?
echo $begrüßung;
Ich gebe auf, jetzt habe ich soviele verschiedene Kombinationen ausprobiert und im Netz nachgeschaut, es klappt nicht.
Kann mir jemand sagen, was der Fehler ist, außer dem, dass ich keine Ahnung habe ?
Du hast ein prinzipielles Verständnisproblem beim Ineinanderschachteln von Kontexten. Schau dir den verlinkten Archivthread an, vielleicht hilft das beim Verstehen und Lösen.
echo "$verabschiedung $name";
Ich habe es jetzt ganz anders gemacht
<form action='literature-download.php' method='post'><input type='hidden' name='datei' value='$datei'><input type='submit' value='Download'></form>
und in literature-download.php:
<?php
$datei = ($_POST["datei"]);
header("Content-Description: File Transfer
Content-Type: application/force-download
Content-Disposition: attachment;filename=$datei");
readfile($datei);
?>
Die Datei wird heruntergeladen, aber man kann sie nicht öffnen weil sie irgendwie beschädigt sein soll.
Wo ist da der Fehler ?
echo $begrüßung;
$datei = ($_POST["datei"]);
Das Umkopieren ist unsinnig, und die Klammern () ebenso. Was fehlt ist eine Plausibilitätsprüfung. So kann man beliebige Dateien downloaden, auf die PHP Leserechte hat. Oft hat es die auch auf Dateien, die man nicht veröffentlichen will. Außerdem kann man beliebige weitere Headerzeilen einfügen, was sich sicherlich auch zu von dir ungewünschten Dingen verwenden lässt.
Die Datei wird heruntergeladen, aber man kann sie nicht öffnen weil sie irgendwie beschädigt sein soll.
Wo ist da der Fehler ?
Vielleicht hast du außerhalb des PHP-Codes Whitespace-Zeichen stehen. Vor dem <?php werden sie nicht sein, dann würde der Download nicht kommen, weil dafür die Headerzeilen nicht gesendet werden konnten. Stehen sie nach dem ?> kann das je nach Dateiformat zu Problemen führen. Am Ende einer PHP-Datei kann man das schließende ?> weglassen, dann können dahinter auch keine ungewünschten Zeichen landen.
Desweiteren kann auch deine Dateierzeugung fehlerhaft sein. Aber das kann man deinem Code nicht entnehmen, nur als potentielle Möglichkeit annehmen.
echo "$verabschiedung $name";
Mahlzeit Kayar,
Ich gebe auf, jetzt habe ich soviele verschiedene Kombinationen ausprobiert und im Netz nachgeschaut, es klappt nicht.
Ich glaube kaum, dass im Netz keine einzige Stelle existiert, die es richtig erläutert.
Kann mir jemand sagen, was der Fehler ist, außer dem, dass ich keine Ahnung habe ?
Ich verweise Dich gern nochmal auf meinen Hinweis. Im Übrigen handelt es sich in keinster Weise um ein PHP-Problem - wieso hast Du den Themebereich schon wieder geändert?
MfG,
EKKi
Hi,
Ich gebe auf, jetzt habe ich soviele verschiedene Kombinationen ausprobiert und im Netz nachgeschaut, es klappt nicht.
Gehe immer schrittweise vor, wenn du dir ueber Teilschritte nicht im klaren bist.
Erzeuge also zunaechst den HTML-Code *statisch* so, dass er das von dir gewuenschte bewirkt.
Erst danach ueberlege, wie du analogen Code dynamisch per PHP erzeugst.
MfG ChrisB
Also ich habe das jetzt so geändert:
<a href='literature-download.php'
onClick='location.href='$datei'';return false; target='_self'>
>
> Aber jetzt passiert überhaupt nichts.
Ok, der Tipp von LX war schon ok, Deine Umsetzung aber nicht.
echo "<a href=\"literature-download.php\" onClick=\"location.href='$datei'\";return false; target=\"\_self\">LINK</a>";
Mahlzeit Halou,
Ok, der Tipp von LX war schon ok, Deine Umsetzung aber nicht.
Das mag sein, Deine allerdings genausowenig.
MfG,
EKKi
Hallo,
ich habe einen Link zum Downloaden eingefügt auf seite1.php:
while ($dsatz = mysql_fetch_assoc($res)){
$datei = $dsatz["datei"];
...
<a href='literature-download.php'
onClick='location.href='$datei';return false;' target='_self'>
LINK
</a>In der Seite literature-download.php existiert nur eine PHP-Anweisung:
<?php
header("Content-Description: File Transfer
Content-Type: application/force-download
Content-Disposition: attachment; filename="$datei"");
readfile($datei);
?>
>
> Zum Herunterladen wird nur die Datei literature-download.php angeboten aber nicht $datei.
> Wie kann ich dass ändern.
>
>
Hast Du dafür einen besonderen Grund an Stelle von:
while ($dsatz = mysql\_fetch\_assoc($res))
{
echo "<a href=\"" . $dsatz["datei"]. "\" target=\"\_self\">LINK</a><br />";
}
Gruß
Der Grund ist, dass ich mir nicht die Datei, die unter $datei liegt, anschauen will sondern nur downloaden. Ich will, dass ein Downloadfenster erscheint.
Mahlzeit Kayar,
<a href='literature-download.php'
onClick='location.href='$datei';return false;' target='_self'>
LINK
</a>
Ich spiele mal kurz Browser, ja?
<a
Aha, ich soll wohl einen Link darstellen.
href=
Aha, jetzt kommt wohl die Angabe, wohin der Link führt.
'
Aha, der Wert des Attributs wird mit einfachen Anführungszeichen umschlossen.
literature-download.php
Aha, handelt sich wohl um eine relative URL.
'
Aha, hier ist der Attributswert beendet.
onClick=
Aha, das Element soll wohl einen "onclick"-Handler bekommen.
'
Aha, der Wert des Attributs wird mit einfachen Anführungszeichen umschlossen.
location.href=
Aha, das ist dann wohl der Attributswert.
'
Aha, hier ist der Attributswert beendet.
$datei';return false;'
Hä? Kenne ich nicht - also ignoriere ich's.
target='_self'>
usw. usf. ...
Zum Herunterladen wird nur die Datei literature-download.php angeboten aber nicht $datei.
Und? Deine Javascript-Fehlerkonsole schweigt? Glaube ich irgendwie nicht ...
Wie kann ich dass ändern.
Indem Du sauberen, validen HTML-Code schreibst bzw. durch Dein PHP generieren lässt.
MfG,
EKKi
Hi,
In der Seite literature-download.php existiert nur eine PHP-Anweisung:
<?php
header("Content-Description: File Transfer
Content-Type: application/force-download
Content-Disposition: attachment; filename="$datei"");
readfile($datei);
?>
Mach dir schnellstens bewusst, wie hochgefaehrlich das ist, so lange du keine weitere Kontrolle des Parameters einfuegst. Durch Aenderung des Parameters kann man sonst jede beliebige Datei "herunterladen", auf die PHP unter deinem Useraccount Zugriff hat, so lange nur der Pfad und Name bekannt ist (oder gut geraten wird). Also bspw. auch include-Dateien, in denen Passwoerter stehen, etc.
MfG ChrisB
--
„This is the author's opinion, not necessarily that of Starbucks.“