Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Pobierany język.
Forum PHP.pl > Forum > Przedszkole
Eagle
Witam.
Mam problem z ładowaniem plików językowych dla odpowiedniego użytkownika

Oto kodzik:
  1. <?php
  2. //Pobieram języki jakie akceptuje przeglądarka i wrzucam je do tablicy
  3. $lang=explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
  4.  
  5. /Następnie chce aby wczytało plik np. jeżeli jest język 'pl' to ...
  6. /// ... ../lang/pl.lang ;
  7.  
  8. $i=0;
  9.  
  10. // tutaj staram się wyszukać pliku językowego który abceptuje przeglądarka
  11. // czyli "en-us;q=0.7"
  12. while($lang[$i])
  13. {
  14. $file_name = '../lang/' . $lang[$i] . '.lang';
  15.  
  16. if (file_exists2($file_name))
  17. {
  18. return $lang[$i];
  19. }
  20. $i++;
  21. }
  22. ?>


Problem jest ze sprawdzeniem czy dany plik istnieje.
Funkcję file_explode2 zabrałem gdzieś z forum bo ze standardową były jakieś problemy :/

  1. <?php
  2. function file_exists2($filename)
  3. {
  4. system('test -f ' . $filename, $rval);
  5. return ($rval==0);
  6. }
  7. ?>


Kod wywala zawsze 'en-us;q=0.7' nawet jeżeli ten plik nie istnieje i jakiś język (np. 'pl') go poprzedza.
akubiczek
No to może użyj normalnej funkcji file_exists albo sprawdź u źródła co ci zwraca test -f plik.
Mamy zgadywać?

Podejrzewam taki scenariusz:
1. w ogóle źle sprawdzasz, więc dla 'pl' ci nie łapie bo jest zła ścieżka albo inny powód
2. następnie przy en-us;q=0.7 test -f się wywala bo co to za nazwa pliku?! średnik oddziela kolejną instrukcję w bashu..
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.