Erlaubte zeichen im IMG Tag
steffen
- html
Hallo Forumleser,
ich hab ein Uploadscript geschrieben mit dem die User Bilder hochladen können und diese umbenennen können.
Da der browser manche Zeichen nicht akzeptiert, müßte ich wissen, welche das genau sind. Hab jetzt rausbekommen, dass % im Dateinamen zwar sein darf, aber wenn ich sie mit <img src="./bild%bla.jpg"> ausgebe, zeigt er mir nichts an.
Gibts da sowas wie urlencode, wo ich einfach anwenden kann?
Gibt es eine Tabelle, `in der alle erlaubte Zeichen stehen?
Steffen
Hallo,
ich hab ein Uploadscript geschrieben mit dem die User Bilder hochladen können und diese umbenennen können.
gut, aber warum stellst du die Anfrage dann im Themenbereich HTML/XHTML? Das Script fällt doch dann eher in den Bereich PHP oder vielleicht Perl.
Da der browser manche Zeichen nicht akzeptiert, müßte ich wissen, welche das genau sind.
Warum? Gehe einfach mal davon aus, dass der Browser unzulässige Zeichen schon entsprechend codiert oder zurückweist. Dein Script bekommt also einen fertig codierten Namen.
Gibts da sowas wie urlencode, wo ich einfach anwenden kann?
Du willst doch vermutlich eher _de_codieren? Aber vermutlich brauchst du das gar nicht, da z.B. PHP diese Codierungen teilweise schon selbständig wieder decodiert, bevor dein Script die Parameter sieht.
So long,
Martin
Hallo Martin,
also ich hab zBN ein input Feld für den Namen. Wenn ich nun mache
rename("/tmp/tmp_file.jpg", $_POST['eingabe']);
und der User "A/B Wandler" zB eingibt funktioniert es 1 nicht wegen dem / dann dachte ich mir änderst den / in % um, aber dann zeig er mir das bild per <img src="./test/A%B Wandler.jpg"> nicht an.
So deshalb hab ich es ins HTML getan, weil ich eigentlich nur eine Tabelle brauche um rauszufinden, wie ich die ganzen Sonderzeichen selbst codiere, oder es eine Funktion gibt, die das ganze für mich codiert.
Das ich es beim ausgeben selbstverstädnlich auch decodieren muss ist klar.
mfg steffen
Hallo,
also ich hab zBN ein input Feld für den Namen. [...]
und der User "A/B Wandler" zB eingibt ...
dann bekommst du diesen Namen fix und fertig URL-codiert als "A%2FB%20Wandler". Und den musst du nun höchstens wieder decodieren, wenn du für die Ausgabe Klartext haben willst.
So deshalb hab ich es ins HTML getan, weil ich eigentlich nur eine Tabelle brauche um rauszufinden, wie ich die ganzen Sonderzeichen selbst codiere, oder es eine Funktion gibt, die das ganze für mich codiert.
Dann bist du auf dem Holzweg. Denn erstens machen das (wie gesagt) die Browser schon selbständig, zweitens könntest du mit HTML sowieso keine Programmlogik realisieren. Höchstens mit Javascript, aber auch das ist hier völlig unnötig.
Ciao,
Martin
Hallo Martin,
also ich hab zBN ein input Feld für den Namen. [...]
und der User "A/B Wandler" zB eingibt ...dann bekommst du diesen Namen fix und fertig URL-codiert als "A%2FB%20Wandler". Und den musst du nun höchstens wieder decodieren, wenn du für die Ausgabe Klartext haben willst.
Hab das Bild jetzt z.B. in 1_PIR_Eingang%2FB%20EMZ.jpg genannt.
wie kann ich nun das Bild anzeigen? Weder
<img src="1_PIR_Eingang%2FB%20EMZ.jpg">
noch
<img src="1_PIR_Eingang/EMZ.jpg">
funktioniert, da / ja sagt das 1_PIR_Eingang ein Ordner wäre.
steffen
Hi,
Hab das Bild jetzt z.B. in 1_PIR_Eingang%2FB%20EMZ.jpg genannt.
wie kann ich nun das Bild anzeigen? Weder
In dem du den aktuellen Namen URL-gerecht kodierst.
Weder
<img src="1_PIR_Eingang%2FB%20EMZ.jpg">
noch
<img src="1_PIR_Eingang/EMZ.jpg">
funktioniert
Natuerlich nicht - beide entsprechen, nachdem sie vom Server beim Empfang dekodiert wurden, nicht dem Bildnamen.
MfG ChrisB
Hi,
In dem du den aktuellen Namen URL-gerecht kodierst.
Dazu gibt es nicht zufällig eine schicke funktion?
steffen
Hi,
In dem du den aktuellen Namen URL-gerecht kodierst.
Dazu gibt es nicht zufällig eine schicke funktion?
http://www.php.net/manual/en/book.url.php
MfG ChrisB
Hi ChrisB
Dazu gibt es nicht zufällig eine schicke funktion?
Da die einzigste funktion, die ich gebrauchen könnte urlendcode sowie rawurldecode nicht verwenden kann bleibt mir nur base64_decode.
Da ich jedoch die Dateinamen teilweise und nur die Sonderzeichen codiert werden können.
steffen
Hi,
Da die einzigste funktion, die ich gebrauchen könnte urlendcode sowie rawurldecode nicht verwenden kann
Wieso nicht?
Da ich jedoch die Dateinamen teilweise und nur die Sonderzeichen codiert werden können.
Kannst du auch vollstaendige Saetze?
MfG ChrisB
Hi ChrisB,
1_PIR_Eingang/EMZ.jpg
Wenn so die Eingabe im Input wär müßte der Dateiname so aussehen:
1_PIR_Eingang(irgendwas)EMZ.jpg
Mit base64_encode codier ich ja auch A-Za-z.
Im Endefekt sollten da nur die Zeichen codiert werden, die img src nicht unterstützt.
Steffen
Hi,
1_PIR_Eingang/EMZ.jpg
Wenn so die Eingabe im Input wär müßte der Dateiname so aussehen:
1_PIR_Eingang(irgendwas)EMZ.jpg
Und was soll (irgendwas) sein?
Mit base64_encode codier ich ja auch A-Za-z.
Im Endefekt sollten da nur die Zeichen codiert werden, die img src nicht unterstützt.
Ja - aber nicht mit base64.
MfG ChrisB
Yerf!
Im Endefekt sollten da nur die Zeichen codiert werden, die img src nicht unterstützt.
Nein. Im ersten Schritt musst du alle Zeichen Codieren/Umwandeln, die im Dateisystem des Servers nicht erlaubt sind (z.B. den "/"). Dafür gibts glaub ich keine fertigen Funktionen und die erlaubten Zeichen hängen auch vom OS des Servers ab. Da musst du dir wohl etwas selber bauen.
Im zweiten Schritt, wenn du den Dateinamen dann ins src des <img> einfügst, kannst du urlencode benutzen um alle Zeichen zu maskieren die dort nicht erlaubt sind.
Gruß,
Harlequin
@@steffen:
Hab das Bild jetzt z.B. in 1_PIR_Eingang%2FB%20EMZ.jpg genannt.
Was heißt „genannt“? Die _Datei_ umbenannt? Nein, das solltest du nicht tun.
Du musst den Dateinamen für einen URI entsprechend codieren.
Live long and prosper,
Gunnar
Hallo,
womit beschäftigst Du Dich?
Mit einem HTML-Problem. Dafür gibt es eine jeweils gültige
Spezifikation HTML./4.01. Diese verweist Dich in der
Attributdefinitionen für das Attribut src auf die Spezifi-
kation für URIs.
Zur Frage nach einem urlencoding ist für eine Hilfe auch die Angabe Deiner bevorzugten Programmiersprache wichtig. Eine weitere Möglichkeit stellt vielleicht der Webserver breit, wenn es sich um einen Apachen handeln sollte: mod_speling
Gruß aus Berlin!
eddi
@@steffen:
Hab jetzt rausbekommen, dass % im Dateinamen zwar sein darf,
In einem Dateinamen schon, aber diesen musst du kontextentsprechend codieren. Und in einem URI (HTTP-Kontext) hat '%' nun mal eine spezielle Bedeutung [RFC3986 §2.1] ...
aber wenn ich sie mit <img src="./bild%bla.jpg"> ausgebe, zeigt er mir nichts an.
... und muss entsprechend maskiert werden. [RFC3986 §2.4]
Live long and prosper,
Gunnar