Bild das nicht per URL erreichbar ist, via PHP datei ausgeben.

Matlox

Mitglied
Hallo liebe PHP´ler,
ich möchte gerne ein Script zur Bilderanzeige nutzen, das ich ähnlich bereits mit einer PDF erstellt habe.


Meine Serverordnerstruktur sieht so aus:

www.Domainname.de
---https://www.domainname.de
---------index.php
---Bilder
-------_nouserpic.jpg

nun möchte ich via img das Bild anzeigen lassen.
Da das Bild ja nicht im gleichen Ordner liegt und der Ordner selbst nicht mit der domain aufrufbar ist, kann ich es nicht einfach mit
HTML:
<img src="../Bilder/_nouserpic.jpg" >
aufrufen.

Somit mache ich das ganze so:
HTML:
<img src="Bilder.php?url=$id" >

Die Bilder.php sieht so aus:

PHP:
<?
    if(isset($_GET["url"])) {

    $stmt = $pdo->prepare("SELECT `picture` FROM `use` WHERE `id` = :id");
    $stmt->execute(array(':id'=>$_GET["url"]));
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    $picture = $row["picture"];

        header("Content-type: image/jpeg");
        $path = "../Bilder/$picture";
        echo $path; // gibt nun den path ../Bilder/_nouserpic.jpg aus }
?>

Nur leider wird das Bild als nicht gefunden angeziegt.
Wenn ich die Bilder.php anspreche, kommt nur folgende Fehlermeldung:
Die Grafik "https://www.domainname.de/Bilder.php?url=1" kann nicht angezeigt werden, weil sie Fehler enthält.

Kann mir jemand helfen wo mein Denkfehler liegt? :)

Vielen Dank,
Matlox
 
Diese 2 Zeilen beissen sich
PHP:
        header("Content-type: image/jpeg");
       ..
        echo $path; // gibt nun den path ../Bilder/_nouserpic.jpg aus }
Entwder gibtst du einBild aus (siehe image-Befehle) oder einen String.
Der Header() sagt, dass ein Bild kommen muss.
Also etwa so:
PHP:
 $path = "../Bilder/$picture";
header("Content-type: image/jpeg");
$im = imagecreatefromjpeg($path);
return $m;
 
Diese 2 Zeilen beissen sich
PHP:
        header("Content-type: image/jpeg");
       ..
        echo $path; // gibt nun den path ../Bilder/_nouserpic.jpg aus }
Entwder gibtst du einBild aus (siehe image-Befehle) oder einen String.
Der Header() sagt, dass ein Bild kommen muss.
Also etwa so:
PHP:
 $path = "../Bilder/$picture";
header("Content-type: image/jpeg");
$im = imagecreatefromjpeg($path);
return $m;

Hallo Yaslaw,
danke für deine Hilfe!

Ich versuche nun wieder das ganze via <img> einzubinden oder die Datei aufzurufen, aber ich erhalte den gleichen Fehler, auch die Berechtigungen habe ich auf 755 gestellt, leider ohne erfolg.

Noch eine Idee?
Vielen Dank, Matlox
 
Meine Serverordnerstruktur sieht so aus:

www.Domainname.de
---https://www.domainname.de
---------index.php
---Bilder
-------_nouserpic.jpg

nun möchte ich via img das Bild anzeigen lassen.
Da das Bild ja nicht im gleichen Ordner liegt und der Ordner selbst nicht mit der domain aufrufbar ist
Gehe ich recht in der Annahme, dass www.Domainname.de das Stammverzeichnis des (ManagedHosting)Servers ist, auf das Du (abgesehen vom FTP-Zugang oder per AdminControlPanel) von außen keinen Zugang per URL hast, weil sich Deine öffentliche Spielwiese unterhalb von https://www.domainname.de befindet (auch unter dem Verzeichnisnamen httpdocs bekannt)?
 
Gehe ich recht in der Annahme, dass www.Domainname.de das Stammverzeichnis des (ManagedHosting)Servers ist, auf das Du (abgesehen vom FTP-Zugang oder per AdminControlPanel) von außen keinen Zugang per URL hast, weil sich Deine öffentliche Spielwiese unterhalb von https://www.domainname.de befindet (auch unter dem Verzeichnisnamen httpdocs bekannt)?

Hi SpiceLab,
ja das ist richtig, aber auch PHP Scripts und PDF Dokumente befinden sich auserhalb meiner Spielwiese, diese kann ich ohne Probleme einbinden, genau so würde ich das gerne mit den Bildern machen :)

Grüße,
Matlox
 
Hi

Vielleicht versteh ich grad was nicht, aber was ist denn https://www.domainname.de für ein Verzeichnisname? Slashes? Wäre etwas seltsam...

Und wenn man beliebige Dateien außerhalb vom Webroot per PHP (oder sogar HTTP-Requests :eek:) abfragen kann, bitte Hoster wechseln.

Diese Grafik, die "Fehler enthält", kannst du die im Browser mal abspeichern und hier als Anhang raufladen?
 
Zuletzt bearbeitet:
Vielleicht versteh ich grad was nicht, aber was ist denn https://www.domainname.de für ein Verzeichnisname? Slashes? Wäre etwas seltsam...

Und wenn man beliebige Dateien außerhalb vom Webroot per PHP (oder sogar HTTP-Requests :eek:) abfragen kann, bitte Hoster wechseln.


Ne ne, da verstehste etwas falsch. Ich hab immer komische Sonderwünsche was meine Art zu Scripten angehet, deshalb versuch ichs nochmal etwas einfacher zu formulieren :D

Meine Ordnerstruktur sieht etwa so aus:

-----Root---hauptseite---index.php
-----Root---hauptseite---css---style.css
-----Root---bilder---_nouserpic.jpg
-----Root---pdfs---test.pdf
-----Root---scripts---script.php

usw .....

Meine Domain "www.domain.de" ist nun auf -----Root---hauptseite--- gesetzt, somit kann ich natürlich durch eine URL nicht mehr auf die anderen ordner zugreiffen, sondern nur auf Dateien inerhalb "hauptseite".

Ganz anders ist das mit php, hier kann ich ja include("../scripts/script.php"); machen und das funktioniert, somit trenne ich erstmal design von code (für mich).

Nun kann ich mit header auch so auf meine PDF´s zugreiffen, der vorteil daran ist folgender, es gibt keine möglichkeit via URL auf die PDF´s zuzugreiffen und das ganze nur per Header einen speparaten FTP zugang zu erreichen :)

lg. Matlox
 
Und wie gehst Du da vor? Wie sieht Dein Code hierfür aus?

Html:
HTML:
<embed width="100%" height="500" data="../pdfview/id?=<? echo "$id"; ?>" type="application/pdf" src="../pdfview/id?=<? echo "$id"; ?>"></embed>

Php:

PHP:
"select url from blabla where id = get_var"
 $pdfurl = $rowpdf["pdfurl"];

        header("Content-type:application/pdf");
        $path = "./../pdfs/$pdfurl";   
        readfile($path);
        exit; }

lg, Matlox :)
 
Zurück