piszę skrypt upload plików i mam taki nonsesnowy problem:
Chcę zrobić żeby przed upload-em sprawdzał nazwę czy plik nie ma polskich znaków. Generalnie na localhoście skrypt działa prawidłowo z każdym ciągiem znaków
a na serwerze jeśli plik ma same polskie znaki to zmienia nazwę tak że zostaje samo rozszerzenie .jpg.
Wystarczy jedna “normalna” litera w nazwie i skrypt działa poprawnie
“ążłó.jpg” - zmienia na “.jpg”
“ążłów” - zmienia na “azlow.jpg”
tylko na serwerze tak dziwnie zachowuje się skrypt, na localhoscie działa normalnie
serwer i localhost minimalnie różnią sie php ale to nie powinno mieć znaczenia
serwer 5.2.
localhost 5.3
ra-v
(ra-v)
12 Sierpień 2010 20:32
#2
Przez funkcję strtr() można zamieniać litery na kody znaki ASCII. A może podaj kawałek kodu?
no właśnie zamieniam, i generalnie strtr czy str_replace działa poprawnie na localhoscie z taką nazwą a na serwerze już nie
api
(Sitemaster)
12 Sierpień 2010 21:38
#4
a to może sprawdź kodowanie strony/skryptu/formularza. Może trzeba by nagłówkiem header wymusić kodowanie…
wszystkie pliki mam w kodowaniu uft-8 bez bom
Podaj kod będzie wiadomo co i jak, mamy zgadywać?
to nie jest problem błędów w skrypcie, skrypt działa poprawnie na localhoscie,
teraz jeszcze sprawdziłem jak upload zachowa się bez konwersji polskich liter
i zauważyłem, że jeśli plik zaczyna się od polskiego znaku diakrytycznego znak jest automatycznie usuwany z nazwy pliku,
jeśli natomiast jest już na drugim miejscu w nazwie, nazwa pliku zostanie niezmieniona
wygląda na to że to problem serwera a nie skryptu
ra-v
(ra-v)
14 Sierpień 2010 17:44
#8
Problem ustawień serwera od strony systemu jako takiego, możliwe że systemu plików lub ustawień apache.
$nazwa = "ążłó.jpg";
echo str_tr($nazwa,array('ą'=>'a','ż'=>'z','ł'=>'l','ó'=>'o'));
gbartosz83 - prośba o sprawdzenie powyższego.
ra-v:
Problem ustawień serwera od strony systemu jako takiego, możliwe że systemu plików lub ustawień apache. $nazwa = “ążłó.jpg”; echo strtr($nazwa,array(‘ą’=>‘a’,‘ż’=>‘z’,‘ł’=>‘l’,‘ó’=>‘o’)); gbartosz83 - prośba o sprawdzenie powyższego.
Jako nazwa pliku:
Na localhoscie => azlo.jpg a na serwerze => .jpg
Jako zwkły łańcuch działa poprawnie
Na localhoscie => azlo.jpg a na serwerze => azlo.jpg
ra-v
(ra-v)
15 Sierpień 2010 13:24
#10
To może gdzieś na górze.
setlocale(LC_ALL, 'pl_PL.UTF-8');
Lub po drobnej przeróbce
$nazwa = "ążłó.jpg";
echo mb_strstr ( $nazwa , array('ą'=>'a','ż'=>'z','ł'=>'l','ó'=>'o') , null , 'UTF-8' )