Sebastian: Bild aus URL, auf Homepage abpeichern

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

  1. 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

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  2. 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:

    • Abgespeicherte Dateien werden vorher mittels der Funktion getimagesize()
        [link:http://de2.php.net/manual/en/function.getimagesize.php>
        daraufhin überprüft, ob sie wirklich Bilder sind
    • es ist auf auf jeden Fall zu verhindern, dass eine Datei (ein Bild) mit dem Namen
        '.htaccess' (oder entsprechende abweichende Einstellung des Webservers) abgespeichert
        (angelegt oder vorhandene überschreiben) werden kann.
    • Für das Verzeichnis sollte man die PHP-Engine abschalten, am besten "hart" in der
        Host-Konfiguratioen mit dem Befehl 'php_admin_flag engine 0'
    • Für abzuspeichernde Dateien sollte ein eigener (zufälliger) Dateiname ausgewürfelt
        werden.

    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

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de