webForumDet fria alternativet
Logga in / Bli medlem

Problem med åäö i header

PHP

1 svar · 303 visningar · startad av Famine

Medlem sedan jan. 200265 inlägg
Trådstart#1

Tja. Sitter och jobbar på ett downloadscript som funkar rätt bra. Det är bara en grej som inte funkar. Det är när man ska försöka ladda ner en fil som har "å","ä" eller "ö" i namnet. Verkar som det itne funkar att skicka dom tecknen med funktionen Header()? Det fungerar helt perfa annars. Några tips på hur man kan fixa det?

Koden för att göra detta ser ut såhär:

  while($row=mysql_fetch_array($result))
  {
   $filer[$i][0] = $row["id"];
   $filer[$i][1] = $row["url"];
   $i++;
  }  
  $fil = $filer[$id][1];
  
  //skickar iväg till url'en som är inlagd i databasen
  header("Location: $fil");

Så här ser det ut i webbläsarens adressfält när det blir fel. Filen ska egentligen heta "glo - ä.mp3": glo%20-%20%E4.mp3

Medlem sedan juli 20013 378 inlägg
#2

Det som händer är att mellanslag, å, ä, ö och andra "speciella tecken" "URL-kodas" för att kunna skickas över nätet.
Prova om du kanske kan ha nytta av urldecode (se http://www.php.net/manual/en/function.urldecode.php ) på filnamnet eller någon av de andra relaterade funktionerna kring detta ;)

Mer om URL-kodning hittar du på http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

Det enklaste är kanske att inte tillåta ÅÄÖ, mellanslag osv i filerna som du har på nätet, dvs fundera på om det inte är värt mödan att ändra namnen när filerna har laddas upp... (så att det inte finns några konstiga tecken i filnamnen när de senare skall laddas ner ;) )

264 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)