Bild aus URL, auf Homepage abpeichern
Sebastian
- php
Bei mir kann man mittels eines Forumlars ein Bild angeben.
Den Pfad zu diesem Bild Beispiel: www.domain.de/bild.jpg.
Wenn ich die Eingaben des Formulars aufrufe, möchte ich mittels einen KLICKS, dieses Bild dann auf meiner Homepage speichern, ohne das ich es erst runterladen und dann wieder auf meine Homepage aufspielen muss.
Wer weis wie ich da am betsen vorgehe?
Sebastian
Wer weis wie ich da am betsen vorgehe?
Dein Anwalt.
Don't do this!
Was spricht denn gehen herkömmliche Verlinkung?
Warum muss eine Ressource, deren Rechte du nicht besitzt, auf deinem Server liegen?
mfg Beat
Hello,
ich versuche mal, deine Sätze in Zusammenhang zu bringen und (hoffentlich richtig) zu interpretieren.
Bei mir kann man mittels eines Forumlars ein Bild angeben.
Du hast ein <form>-Element in Deinem Dokument. In diesem <form>-Element gibt es ein <input>-Element vom Typ "text" (_nicht_ vom Typ "file"!).
In dieses Dialoglement soll man die URL zu einer Bildressource eintragen.
Den Pfad zu diesem Bild Beispiel: www.domain.de/bild.jpg.
Das Formular wird z.B. mittels POST-Request an den HTTP-Server übermittelt.
Wenn ich die Eingaben des Formulars aufrufe,
Das ist mir jetzt nicht klar, was damit gemeint ist.
Es könnte heißen, dass die vorhin zum Server geposteten Daten nun als HTML-Dokument am Client wieder anzeigt werden sollen, also als Response des Servers wieder zurückkommen zum Client.
möchte ich mittels einen KLICKS, dieses Bild dann auf meiner Homepage speichern, ohne das ich es erst runterladen und dann wieder auf meine Homepage aufspielen muss.
Oder soll es heißen, dass nach dem Übermitteln der Formulardaten an den Server dieser selbstständig die übermittelte URL abfragt, untersucht, ob sich ein Bild dahinter verbirgt, dieses dann herunterlädt und speichert und bei der Response dann darauf verweist?
Dies ist, sofern die entwprechenden Wrapperfunktionen
http://de2.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
erlaubt sind bei deiner PHP-Einrichtung, ganz einfach mit einem
$bilddaten = file_get_contents($url);
http://de2.php.net/manual/en/function.file-get-contents.php
und anschließendem wegschreiben auf die Platte:
$written = file_put_contents($lokaler_pfad . $zufallsname_der_zieldatei, $bild, LOCK_EX);
<http://de2.php.net/manual/en/function.file-put-contents.php
möglich. Danach sollte das Bild dann erreichbar sein. Wenn Du es direkt per HTTP-Protokoll erreichbar machen willst, muss der Pfad für die Zieldatei innerhalb der Dokument Root liegen. Dazu ist zu beachten, dass du dann auf jeden Fall verhindern solltest, dass in dieses Verzeichnis etwas anderes als Bilder gespeichert werden können. Es ist auf jeden Fall zu verhindern, dass dort unauthorisiert Scripte oder gar eine .htaccess-Datei abgelegt werden können. Das gilt ganz besonders für den Fall, dass Du das Bild unter einem vom User bestimmbaren Namen abspeichert.
Es bietet sich an, für das Verzeichnis folgende Sicherheitsregeln zu beachten:
In deiner Response könntest Du das hochgeladene Bild dann folgendermaßen einbinden
echo '<img alt="Auswahlbild" src="' .
htmlspecialchars(rawurlencode($lokaler_pfad).'/'.rawurlencode($zufallsname_der_zieldatei)).
'">';
Auf die möglichen rechtlichen Fallstricke hat dich ja Beat schon hingewiesen. Wenn User Frendmaterial auf Deinen Server hochladen, könnte man dich unter Umständen für den evetuellen Rechtsbruch verantwortlich machen. Das hängt aber auch davon ab, ob Du die Seite als Dienst anbietest oder selber in drekte Verantwortung für jeden Einzelbeitrag trittst, indem Du dir diesen zu eigen machst, also nicht zu erkennen gibst, dass es sich um einen Nutzerbeitrag handelt, den Du nur im Auftrag veröffentlichst (so, wie eine zeitung z.B. eine Werbeanzeige veröffentlicht).
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg