æøå problem ved opload system

Tags:    php

Hej Udviklere,

jeg har lavet et opload system til en rollespils hjemmeside og jeg har opdaget et meget træls problem. Det er nemmest at vise det

www.adien.dk/rules.php

Hvis filnavnet indeholder æ bliver det lavet om til html taget og når det sker så bliver doc-type (det efter punktummet i filnavnet) det bliver ikke vidst så filtypen står som ukendt. (kan ses ved at klikke hent ved "tæst")

Håber nogen der kan give mig et pej om hvad problemet skyldes.

Ps. Det er med vilje at jeg i første omgang ikke har lagt kildekode ved.



Indlæg senest redigeret d. 14.08.2008 20:33 af Bruger #6559
8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Det er generelt ikke en god ide at bruge æøå i filnavne, så den nemmeste løsning jeg kan se er at bytte æ ud med ae, ø med oe osv.



Tja... Så giver filnavnet jo ikke så meget mening, og så kan man ligeså godt give den et random navn. Nej.
Jeg tror fejlen ligger i htmlentities() da, den laver karaktere som æ, ø, og å om til & aelig; & oslash; og & aring;
Du skal vel bare lave en replace af de char-koder...?



Det er svært at sige uden kode.
henter du de binære data fra en tabel, eller er filerne uploadet "helt".

Det ligner at din kode selv renamer dem, hvis det er sandt kan du jo være kommet til at sætte en htmlspecialchars() på, eller noget lignende!



Alle filerne er uploaded til en MySQL tabel, hvor indholdet gemmes som binært og så har jeg felter der gemmer mimetype, doctype, navn, størrelse og så et id de hentes ud fra.

Når man har angivet filens navn, så har jeg en funktion der skal sikre mod sql-injections og derbruger jeg mysql_real_escape_string og htmlentities(). Men det burde ikke have nogen indflydelse. Eller?

Emil: Filnavnet bliver angivet af den person som lægger den op, og de er 8 personer der kan lægge op og der kan sagtens komme udskiftning, så derfor håbede jeg på at kunne finde en løsning der fungerer automatisk. Navnet er også det der vises på siden "Regler".



Indlæg senest redigeret d. 15.08.2008 15:49 af Bruger #6559
Okay, jeg har løst problemet. Funktionen jeg bruger til at hente indholdet fra databasen (downloade filen), så bliver navnet lavet om til en hashværdi med en længde på 5 og det virker.

Hvad mener I om denne løsning? Er den holdbar?



Har den!
Brug html_entity_decode() før du udskriver filnavnet!



Har den!
Brug html_entity_decode() før du udskriver filnavnet!


Jeg prøver det lige.



Det virker skam så du fortjener at få de 20 point :)



t