2009-08-17 9 views
1

Ich habe folgendes:Kann nicht Ausgabebild in src-Tags

$imageurl = "<img class='item_thumb' 
src='getimagethumbnail.php?imagename=".urlencode($product_image)."&from=".$prodimagedir."' 
min-width='150' min-height='150' border='0' class='item_thumb'>"; 

wird der folgende HTML erstellt:

<img class="item_thumb" border="0" min-height="150" min-width="150" 
src="getimagethumbnail.php?imagename=productsmall_1248886833bloggingbok.jpg& 
from=products/"/> 

Allerdings ist das Bild nicht angezeigt. Ich zeige meinen Browser auf diesen src Link und es gibt mir einen Haufen unlesbaren Text, von dem ich annehme, dass das Bild bedeutet, dass das Skript getimage funktioniert. (Ich rate).

Aber wie gesagt, das Bild erscheint überhaupt nicht. Was ist falsch und welche Schritte kann ich unternehmen, um das Problem zu bestimmen?

nur hinzufügen, wenn ich meinen Browser zu diesem src Link zeigen: Es gebe auch ich:

Warning: Cannot modify header information - headers already sent by 
(output started at /home/dji/public_html/getimagethumbnail.php:35) in 
/home/dji/public_html/includes/functions.php on line 4953 

Ich bin nehme an, dies wegen des Ausgangs ist ?? Dieses Skript hat gut funktioniert und ich habe keine Änderungen daran vorgenommen, soweit mir bekannt ist!

Dank

Antwort

7

Sie versuchen, den Befehl header('Content-Type') zu senden, nachdem Leerzeichen/Zeichen ausgegeben wurden.

Sie müssen sicherstellen, dass der Befehl header ist, bevor etwas auf der Seite gedruckt wird.

header('Content-Type: ....'); 
readfile('file.png'); 

readfile('file.png'); 
header('Content-Type: ....'); 

weil Dies ist dies nicht der header Befehl, um den Browser, was erzählt in dem Inhalt suchen:

wird diese Arbeit. Alle Header müssen vor jedem Inhalt gesendet werden, da so die Verbindungen funktionieren. Der Browser kann nicht informiert werden, was zu erwarten ist, nachdem der Inhalt bereits gesendet wurde.

offene Verbindung mit Server -> Get Headers -> Get Inhalt -> Verbindung trennt

Einer der großen Gründe dafür encoding ist. Wenn der Inhalt ankommt, muss der Browser ihn richtig dekodieren. Wenn Sie eine Kopfzeile in der Mitte der Seite senden, die dem Browser mitteilt, dass der Kodierungstyp ein ist, wenn es wie b verarbeitet wird, können die Dinge wirklich verwirrend werden.

Um also die Header richtig zu senden, müssen Sie den Header-Befehl vor jeder Ausgabe setzen.

+0

Genius! Das hat wie ein Zauber funktioniert! Keine Ahnung, wie das fehlte. :) – Abs

0

Dieser Fehler wird verursacht, wenn Sie Sachen mit dem Ausgang drucken und dann versuchen, den header() Methode zu verwenden. Sie sollten erst etwas ausgeben, nachdem Sie mit header() getan haben, was Sie brauchen. Nichts sollte dem vorausgehen, nicht einmal der weiße Raum.

0

Sie haben bereits einige Ausgaben erzeugt (in Zeile 35), bevor Sie die Kopfzeile für den Bildtyp festgelegt haben. Dies könnte einfach ein Leerzeichen zwischen PHP-Tags sein, oder etwas, das du vergessen hast zu entfernen.

0

Ihr getimagethumbnail.php Skript erzeugt kein gültiges Bild; Es enthält Text (die Warnmeldung, die Sie angeben), die verhindert, dass Browser es rendern.Nach dem Fehlertext zu urteilen, würde ich vermuten, dass dies auf Änderungen zurückzuführen ist, die entweder auf getimagethumbnail.php oder functions.php vorgenommen wurden.

Grundsätzlich ist das Problem, dass versucht, header() aufrufen, nachdem die Ausgabe bereits an den Browser gesendet wurde, die einfach nicht funktioniert. Sie müssen beide Dateien überprüfen und sicherstellen, dass alle Anrufe an header() vor irgendetwas sonst kommen, das Daten an den Browser sendet.

Sie können die Einstellung display_errors ausschalten, da jeder Code, der aus irgendeinem Grund eine Warnung oder einen Fehler generiert, das Problem verursacht, das Sie sehen, wenn die Warnung/der Fehler vor Ihrer header() Anrufe auftritt. (Stellen Sie sicher, dass Sie sich beim Anmelden angemeldet haben, damit Sie sehen können, was schief läuft!)