Bild mittels anderem Skript anzeigen[gelöst]

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hi!
Folgendes Szenario:
Ich lese ein Bild mittels php aus einer MySQL-Datenbank aus.
Folgendes funktioniert:

skript 1
PHP:
<?php
.....
.....
print '<html><head><body>
......
....
<img src="script2.php">
.....
....
?>

Skript 2
PHP:
<?php
require_once("DB.php");
$verbindung = new mysqli("localhost","login","pass","db");
$ergebnis = $verbindung->query("select Bild von BIlder");
$einbild = $ergebnis->fetch_row();
Header("Content-type: image/jpeg");
echo $einbild[0];
?>

Wenn ich nun aber versuche die Abfrage zu den anderen Abfragen /in eine Abfrage zu packen welche in Skript 1 liegt, und ich das Bild in $_SESSION zwischenspeichere (Bild ist nicht sonderlich gross) dann bekomme ich das Problem das kein bild mehr angezeigt wird.
Vorab: in dem Fall habe ich in Skript 2 schon session_start() gesetzt.
nun interessiert mich, wiso das nicht Funktioniert und ob es da einen Weg zum drum herum arbeiten
gibt, denn es waere mir schon lieber wenn ich das mit so wenig Datenbankanfragen wie moeglich loesen koennte.
mfg

sw33t

//edit:
Escapcharacters sind auch schon gesetzt da die Datenbank das Bild sonst nicht halten koennte.
 
Das wird wahrscheinlich daran liegen, dass die beiden PHP Skripte (nahezu) paralell ablaufen und deshalb dem 2. Skript die Session Daten noch gar nicht zur Verfügung stehen.

Bilder in Datenbanken sind aber sowieso suboptimal. Speichere den Namen des Bildes in der Datenbank und mache daraus einen Link.
Bilder sollten nur per PHP ausgegeben werden, wenn diese auch dynamisch berechnet werden müssen.
 
1) Deine PHP-Version könnte von Relevanz sein. Daher, welche Version benutzt du?
2) Was gibt print_r($_SESSION) aus?
3) Funktionierts wenn du das Bild (also das Ergebnis des Queries) in eine "normale" Variabel speicherst?
4) Dürfen wir den zusammengesetzten Source mal sehen? Vlt. versteckt sich ja ein ganz simpler Fehler.

Nachtrag: @xblax: Weshalb sollte irgendetwas zeitgleich ausgeführt werden?
 
Original von Indi
Nachtrag: @xblax: Weshalb sollte irgendetwas zeitgleich ausgeführt werden?

Weil der Webserver normalerweise die Daten nicht puffert und wartet bis das PHP Skript beendet ist, sondern die Daten sofort an den Client sendet sobald sie von PHP ausgegeben werden.
Der Browser lädt normalerweise mehrere Dateien gleichzeitg und beginnt eben sofort damit das Bild zu laden, sobald er den entsprechenden HTML Teil erhalten hat.
Dann kann es eben vorkommen, dass Skript 1 und Skript 2 gleichzeitg ausgeführt werden.
 
alternativ könntest zu zB. einfach die url zum bild script in die session speichern

zB

PHP:
echo <img src="<?php echo $_SESSION["bildurl"]; ?>">
 
Lösung:
Ich hatte ein addslashes zuviel eingebaut.
mfg

sw33t
 
Zurück
Oben