Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
Download von URl mit PHP
Download von URl mit PHP
tjost
03.05.11
13:50
Hi,
ich habe mit PHP eine URL ausgelesen, jetzt hätte ich gerne einen Download-Button der dann die Datei runterlädt. ist ein PDF.
Bitte sehr einfache so das ich es einfach in mein php File anfügen kann. Ich habe leider keine Ahnung.
Danke für die Hilfe
Hilfreich?
0
Kommentare
ChrisK
03.05.11
13:54
ähm ... wer soll die Datei runterladen? Dein Browser? Der Server auf dem das Script läuft? Soll der Browser einfach nur zu der URL des PDFs umgeleitet werden?
Und wenn es sehr einfach einzufügen sein soll, wäre es auch hilfreich das Script vorliegen zu haben.
„Wer anderen eine Bratwurst brät, hat ein Bratwurstbratgerät.“
Hilfreich?
0
tjost
03.05.11
13:56
Hi, also ich habe einfach nur php befehle angefügt.
$exv = $info
manualURL;
Damit wird die URL ausgelesen.
jetzt würde ich gerne ein Button haben damit man das PDF runterladen kann.
Ich kann den ganzen Text nicht zeigen da dort vertrauliche Informationen drinnen sind.
Danke
Hilfreich?
0
ChrisK
03.05.11
14:58
Wenn's auch einfach ein Link sein darf, sollte das hier schon reichen:
echo('<a href="'.$exv.'">Download</a>');
„Wer anderen eine Bratwurst brät, hat ein Bratwurstbratgerät.“
Hilfreich?
0
tjost
03.05.11
15:06
Hey, danke voll Porno, wie kann ich daraus jetzt einen Knopf machen?
Hilfreich?
0
justsports
03.05.11
16:52
Creating HTML push button link
Hilfreich?
0
micheee
03.05.11
18:54
...beschreibt meiner Meinung nach genau den Weg den man nicht gehen sollte.
Du brauchst deine Seite nicht Formulartags oder <input type="button"... /> vollpacken, wenn das Element welches du eigentlich einfügen möchtest ein Link ist.
Style lieber deinen Link mit Hilfe von CSS, zum Beispiel so:
<style type="text/css">
a {
border: 2px outset;
padding: 2px;
text-decoration: none;
}
a:active {
border: 2px inset;
}
</style>
Mehr Infos zu CSS und Links z.B. hier:
http://www.w3schools.com/css/css_link.asp
Hilfreich?
0
tjost
04.05.11
11:22
Danke für die Hilfe
Hilfreich?
0
ts
04.05.11
13:49
Wenn man übrigens etwas größeres macht, dann sollte man eher weniger Funktionen wie „echo“ verwenden und anstatt dessen eine Bibliothek, wie z.B. smarty, einsetzen.
Hilfreich?
0
micheee
04.05.11
20:22
Nur noch als Nachtrag,
echo('<a href="'.$exv.'">Download</a>');
ist äquivalent zu dem (meiner Meinung nach) syntaktisch schöneren:
echo "<a href='{$exv}'>Download</a>";
Hilfreich?
0
ts
05.05.11
18:36
Beides ist falsch.
Wenn man es auf diese Weise lösen will, dann eher so:
echo('<a href="' . htmlspecialchars($exv) . '">Download</>a');
Hilfreich?
0
appleguru
05.05.11
19:29
Irgendwie hab ich den Eindruck, dass die Frage weniger mit PHP, als viel mehr mit HTML zu tun hat...
Hilfreich?
0
micheee
05.05.11
19:50
tjost, lass dich nicht rausbringen.
"falsch" ist meine Variante schonmal nicht, nur besser lesbar als die vorher gepostete.
Im Übrigen schlägt mit ts' Vorschlag der Versuch eine Datei mit Namen "Test>.txt" zu verlinken fehl... also keine so Spitzenidee. Schau dir lieber mal urlencode() an, das ist schon eher dafür gedacht...
Hilfreich?
0
ts
05.05.11
22:22
micheee
"falsch" ist meine Variante schonmal nicht, nur besser lesbar als die vorher gepostete.
Nun, ungültiges HTML/XHTML würde ich jedenfalls definitiv nicht als richtig bezeichnen. Mit einem XML-Parser im Browser gibt's dann nur eine Fehlermeldung.
micheee
Im Übrigen schlägt mit ts' Vorschlag der Versuch eine Datei mit Namen "Test>.txt" zu verlinken fehl... also keine so Spitzenidee.
Ich schrieb eher. Es war als Anregung gedacht über Sonderzeichen nachzudenken. Im Übrigen sind ?:<>*/\| in Dateinamen nicht zu empfehlen.
micheee
Schau dir lieber mal urlencode() an, das ist schon eher dafür gedacht...
Meiner Meinung nach ist urlencode dafür nicht bestimmt.
Hilfreich?
0
micheee
06.05.11
10:56
ts
micheee
"falsch" ist meine Variante schonmal nicht, nur besser lesbar als die vorher gepostete.
Nun, ungültiges HTML/XHTML würde ich jedenfalls definitiv nicht als richtig bezeichnen. Mit einem XML-Parser im Browser gibt's dann nur eine Fehlermeldung.
Single Quotes sind völlig valide um Attributwerte zu verpacken, siehe auch:
Extensible Markup Language (XML) 1.0 (Fifth Edition)
W3C Recommendation 26 November 2008
:
[Definition: the content of the AttValue (the text between the ' or " delimiters) as the attribute value.]
.
Zu den Sonderzeichen liegst du richtig, das einzige was htmlentities dann aber noch escapen würde wäre das ampersand und die Quotes... und Quotes in Dateinamen sollten definitiv nicht durch ihre htmlentities ersetzt werden sondern durch...
ts
Meiner Meinung nach ist urlencode dafür nicht bestimmt.
ein Äquivalent welches der Browser wieder in einen gültigen Dateinamen übersetzen kann. Und dafür ist urlencode tatsächlich eher gedacht als htmlentities...
Hilfreich?
0
ts
06.05.11
12:38
micheee
Single Quotes sind völlig valide um Attributwerte zu verpacken, siehe auch
Darauf habe ich mich gar nicht bezogen, denn ich schrieb „Beides ist falsch.” und bezog mich damit auf die Behandlung von Sonderzeichen in der jeweiligen URI in beiden Versionen.
micheee
Quotes in Dateinamen sollten definitiv nicht durch ihre htmlentities ersetzt werden
Warum nicht? Die Ausgabe ist valide und die Lösung functioniert anscheinend. Ein ' wird übrigens bei Nutzung von ENT_QUOTES zu ' umgewandelt.
Die Funktion urlencode ist meiner Meinung nach z.B. zum escapen von GET-Parametern gedacht.
Die Funktion ist geeignet, wenn ein String innerhalb eines Queryparts eines URL verwendet werden soll, und man einen komfortablen Weg benötigt, Variablen an die nächste Seite zu übergeben.
<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
Zur Klärung baue ich mal ein kleines Minimalbeispiel:
<!DOCTYPE html >
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<title>hello</title>
</head>
<body>
<p>
<?php
echo('<a href="' . urlencode('http://example.com/t"est?ad&b=c'). '">Download1a</a>');
echo('<a href="./' . urlencode('http://example.com/t"est?ad&b=c'). '">Download1b</a>');
echo('<a href="' . htmlentities('http://example.com/t"est?ad&b=c'). '">Download2</a>');
?>
</p>
</body>
</html>
Ich transformiere es mal zu HTML, der besseren Übersicht wegen füge ich ein paar Zeilenumbrüche ein.
<!DOCTYPE html >
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<title>hello</title>
</head>
<body>
<p>
<a href="http%3A%2F%2Fexample.com%2Ft%22est%3Fad%26b%3Dc">Download1a</a>
<a href="./http%3A%2F%2Fexample.com%2Ft%22est%3Fad%26b%3Dc">Download1b</a>
<a href="http://example.com/t"est?ad&b=c">Download2</a>
</p>
</body>
</html>
Beispiel ist valide => beide Lösungen sind valide.
Betrachtet man nun Download1a fällt sofort auf, dass es identisch zu Download1b ist. Wie soll man auf eine externe Domain verweisen? Ein selbst erstellter Parameter c sollte eventuell urlencodet werden.
Download2 kann auf externe Adressen verweisen…und ist valide. GET Parameter in der URI müssten eventuell mit urlencode behandelt werden. Der Ersteller schrieb aber, dass er die URL ausgelesen hat
urlencode eher unnötig.
Mein Ziel war es zum Denken anzuregen. So einige Funktionen in PHP haben mehr als nur einen Parameter, siehe htmlentities. Ganz offensichtlich gibt es noch andere Spielwiesen wie z.B. die charset-Angabe.
Hilfreich?
0
micheee
06.05.11
13:48
...ich weiß ja worauf du hinaus willst, trotzdem verändert ein htmlentities den Dateinamen, weil der Webserver keine Ahnung von htmlentities hat.
Was bei deinem Link passiert ist, dass der Browser deine htmlentities zurückwandelt und einen Link baut der dann einen Request schickt der uU urlencoded ist.
Und deswegen ist es eigentlich auch sowieso egal, am Thema des Threads sind wir ja schon lange vorbei, aber trotzdem
Genau dieses Vorgehen schlägt auch das zugehörige RFC vor:
.
Curl kommt entsprechend nur mit urlencoded links klar, mit htmlentity-escapten Links nicht:
michael$ curl -I "http://localhost/test'&.php"
HTTP/1.1 404 Not Found
--
$ curl -I http://localhost/test%27%26.php
HTTP/1.1 200 OK
--
$ curl -I "http://localhost/test'&.php"
HTTP/1.1 200 OK
Es hängt also vom Browser ab, der in deinem Fall die "htmlentity escapten" Urls abgreift und on-the-fly zu urlencoded respektive UTF8 Links umbaut.
Deswegen fällt dieses Problem auch normalerweise nicht ins Gewicht. Trotzdem sind die Urls "http://localhost/test'&.php" und "http://localhost/test%27%26.php" nicht die gleichen.
Hilfreich?
0
ts
06.05.11
16:22
Ich würde nicht sagen, dass wir am Thema vorbei sind. Wir diskutieren schließlich darum, wie man eine Verknüpfung korrekt erzeugt.
Du beziehst dich wohl auf „2.1. Percent-Encoding”? In 2.2 über reservierte Zeichen steht aber „they may (or may not) be defined as delimiters” und zu den reservierten Zeichen gehören auch
&
danach müsste dann <a href="http://example.com/test?ad&b=c">Download</a> korrekt sein. Wenn man das so in den W3C-Validator eingibt, dann…gibt es einen Fehler mit dem Hinweis anstatt dessen & zu benutzen.
curl versteht kein HTML, es ist nur ein einfaches Programm zum Übertragen von Dateien.
Das Protokoll gehört doch mit zur URI, also könnte man dieses auch escapen:
curl http%3A%2F%2Fexample.com%2Ft%22est%3Fad%26b%3Dc
curl: (6) Couldn't resolve host 'http%3A%2F%2Fexample.com%2Ft%22est%3Fad%26b%3Dc'
Hmm.
Hilfreich?
0
micheee
06.05.11
17:41
...ja und URLs verstehen auch kein HTML, deswegen kennen Sie auch keine Character Entities, dort kommt eben der Browser ins Spiel, von daher ist dein Ansatz mit htmlentities im Browser richtig
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Mac-Leistung: Wie viel schneller ist eine inter...
Parallels führt x86-Windows auf M-Macs aus – Te...
Übersicht: Lieferzeiten für die neuen Macs
Update-Abend: macOS 15.1.1, iOS 18.1.1, iPadOS ...
iPod-Vater Tony Fadell wollte Sonos kaufen – St...
Tim Cooks Jahresgehalt – und die Vergütung der ...
Baldige Überarbeitung: Welche Macs, iPhones und...
Kurz: Trump unterstützt Musk als TikTok-Besitze...