Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Polskie znaki i odnośniki
Forum PHP.pl > Forum > Przedszkole
azucena
Dzień Dobry

Mam zadanie bojowe w drugim dniu mojej nowej pracy :-), oczywiście zakres moich obowiązków jest inny,ale próbuje się szybko nauczyć php więc dostałam takie oto zadanie.

Na serwerze ftp są pliki strony, w moim folderze "iso" są dokumenty(pdf,xls,doc) oraz strona index.php w której znajduję się pętla. Pętla ta wypisuje nazwy plików i określa adres. W folderze "iso" (kiedy wchodzę na serwer) nazwy plików są z polskimi napisami, przeglądarka FF pokazuje wszystkie oprócz 'ą' i 'ś', IE wszystkie.

Problem polega na tym
1. Na stronie firmy (html://www.)w FF nadal nie pokazuje 'ą' i 'ś' , a IE nie pokazuje żadnych znaków polskich
2. Nie mam możliwości po kliknięciu na dany link otworzyć większości plików, w oknie, którym zdeklarowałam w źródle. Jedynie cześć otwiera się, myslałam że jest to związane z polskimi znakami w nazwach plików, ale nie ma to znaczenia

Kod

Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>nazwa firmy</title>
</head>
<body style="background-image: url(img/bg.gif); background-repeat: repeat;">
<?php
if ((!isset($_SERVER['PHP_AUTH_USER'])) OR (!isset($_SERVER['PHP_AUTH_PW'])))
{
header('WWW-Authenticate: Basic realm="nazwa firmy"');
header('HTTP/1.0 401 Unauthorized');

exit;

} else {

if (($_SERVER['PHP_AUTH_USER'] == "xxxxx") AND ($_SERVER['PHP_AUTH_PW'] == "xxxx")) {
  echo "Dokumenty ISO";
  print "<BR>";
  print "<BR>";

foreach (glob("*.*") as $filename)
{
if ($filename =="index.php") {

}
else {
echo "<a href style=\"color:black; cursor:pointer; text-decoration: none;\" onclick=\"window.open('$filename','Podglad','toolbar=no,height=800px,width=600px,resizable=yes');\">$filename</a><br>";}
  }

  } else {
  echo "Autoryzacja zakończyła się niepowodzeniem";


  }

}
?>



</body>
</html>


Co robiłam
a)stworzyłam plik index.php, z samym <?php ...?>
b)powstawiałam jjakieś kody php na kodowanie w polskim języku

Proszę bardzo o pomoc, lub chociaż o wskazówkę i wytłumaczenie
Pilsener
Polskie nazwy plików nie są zalecane - niestety kiedyś też miałem ten sam problem, rozwiązania są dwa:

1. Najlepsze: zmienić nazwy plików (skryptowo lub ręcznie)
2. Nieco gorsze: nie wyświetlać nazw plików lub pozbawiać je polskich znaków (na forum.php.pl można znaleźć stosowne funkcje)
azucena
Zauważyłam że otwierają mi tylko pliki .pdf bez polskich nazw, ale już .dot czy .xlt bez pl, nie otworzy mi sciana.gif

Niestety wymaganiem szefa jest aby pliki były wyświetlane na stronie w polskich znakach.
erix
No to nazywaj je po ID, zakrzaczone nazwy trzymaj w bazie i problem z głowy. winksmiley.jpg
azucena
Jak mogę nazwać po ID questionmark.gif
erix
No patrz: masz w bazie prostą tabelę:
Kod
ID | nazwa pliku

W katalogu pliki zapisujesz wg ID, który jest liczbą. Potem, przy generowaniu listy masz tak:

  1. <a href="pobierz.php?ID=NUMER_ID">NAZWA_PLIKU_Z_BAZY</a>


i aby była pożądana nazwa pliku, to ustawiasz odpowiedni header" title="Zobacz w manualu PHP" target="_manual. Ale mogą być problemy, bo nie pamiętam dobrze, czy przypadkiem w IE nie krzaczyło się z powodu polskich znaków w nazwie.
azucena
A czy istnieje inna możliwość questionmark.gif

Np: przeczytałam gdzieś że pętla,znaczy plik php musi mieć takie same kodowanie jak strona html,czy serwer. Więc ustawiłam na 1250. Firefox wyświetlił mi wszystkie litery, a już IE żadnych. Nadal nie otwierają się pliki. Więc pomyślałam że mogę:

a)napisać funkcje konwersji z win 1250 na 8859-2 (8859-2 IE w tym kodowanie w miarę wyświetlił wszystkie litery polskie)
cool.gif zapytać się o rodzaj kodowania serwera
c) napisać nazwy plików(nie odnośniki), a obok zrobić mały odnośnik typu np: "ściągnij","pobierz","download"
d) zamiast wyświetlać w oknie, napisać o możliwość otwórz lub zapisz na dysku itp:, jak mamy np: w przeglądarkach

Przy czym
a)polskie litery muszą być zachowane
b)musi być coś w rodzaju pętli, aby automatycznie wypisywało wrzucone pliki.
c)standard kodowania całej witryny to win 1250, ale nie wiem na jakim kodowaniu jest serwer ustawiony. Tyle tylko że podstrony z polskimi literami wyświetla "porządnie" tylko z tą pętlą coś nie gra.
d)nie mam czegoś takiego jak baza danych, mam po prostu pliki wrzucone na serwer(wiem godne pożałowania, że nie potrafiłam odróżnić znaczenia baza danych od serwera php wstydnis.gif )
e) wyświetla mi tylko pliki bez polskich znaków(wcześniej źle napisałam, że tylko.pdf mój błąd), i z tego założenia, myślę, że coś tutaj jest nie tak między kodowaniem serwera a strony.
Proszę uprzejmie jeszcze o pomoc guitar.gif
f)próbowałam z utf 8.....masakra,a ni IE ani FF
Pilsener
Cytat
A czy istnieje inna możliwość
- nie. Jak nie masz bazy, to trzymaj nazwy plików w pliku, typu:

ID||Nazwa||typ
1||ąęźć||doc
2||łźć||jpg

Link do pliku będzie wyglądał np. tak:
strona.pl/index.php?go=pobierz&id=34 - wygenerujesz to na stronie prostą petlą odczytującą plik.

Po kliknięciu w taki link wysyłasz plik do przeglądarki pod nazwą wyświetlaną na stronie i zapisaną w pliku - poczytaj o skryptach downloadu, było kilka takich na forum.
azucena
Dziękuję
statek
Pilsener
Czemu do jasnej ciasnej nazwy plików i katalogów zawierające polskie znaki diakrytyczne nie są zalecane? Jeśli się przekoduje odczytane nazwy z kodowania systemowego na to które jest na stronie. A w przypadku odnośników, zakoduje się je do kodowania systemowego. I to działa. kiedy może nie działać? Domyślam się, że jak przeniosę stronę na serwer z osem bez polskiego języka i fontów i kodowania. No ale jeśli będzie hostowana w Polsce, nie w Korei, to kiedy to może nawalić? Czy link postaci: strona.com/index.php?zm=ąśćęłóń&zm2=ąśęćźżłóńąśęćż może być niedostępny w jakiś warunkach dla użytkownika chcącego oglądnąć stronę przez przeglądarkę? Czy jeśli przeglądarka nie obsługuje polskiego kodowania to wtedy się sypnie? A swoją drogą czy przeglądarki w innych niż nasza wersjach językowych nie mają wbudowanej obsługi innych kodowań? Czy Koreańczyk używający IE albo FF będzie mógł załadowac tą stronę: strona.com/index.php?zm=ąśćęłóń&zm2=ąśęćźżłóńąśęćż do przeglądarki?

Pozdrawiam i bardzo proszę o odpowiedź.

@edit
Nazwy plików są kodowane w windows-1250, bo serwer jest na windowsie. Czy to może jakoś ograniczyć dostępność do tej strony?

PS
Czy da się zmienić kodowanie nazw plików i katalogów w windowsie?
erix
Czasem wystarczy poszukać:
http://forum.php.pl/index.php?showtopic=118630
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.