Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tajemniczy błąd - typy danych, ustawianie języka w skrypcie
WebCM
post
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Już 2 użytkowników skarży się, że nie wczytują się pliki językowe.

Powód: stała LANG nie jest wartością skalarną.

Hipoteza 1: stała zawiera słowo "array"
Hipoteza 2: stała zawiera wartość null
Hipoteza 3: stała zawiera tablicę lub obiekt

W pierwszym przypadku stała zawierała "Array", ale nie było błędu.

W drugiej (najnowszej) przypadłości wyskakuje ostrzeżenie (pakiet WebServ):
Cytat
Warning: Constants may only evaluate to scalar values in ... on line 131

Warning: require(./lang/LANG/main.php) [function.require]: failed to open stream: No such file or directory in ... on line 135

Jedno wiem - w podanym niżej fragmencie coś musi się dziać ze zmienną $nlang.

  1. #Start sesji bez ustawiania nazwy - zanim wszystko się dokona
  2.  
  3. #Domyślny język - na przykład "pl"
  4. $nlang = 'pl';
  5.  
  6. #Zmiana języka - wątpię, by to miało wpływ
  7. if(isset($_GET['lang']) && ctype_alnum($_GET['lang']) && is_dir('./lang/'.$_GET['lang']))
  8. {
  9. $nlang = $_SESSION['lang'] = $_GET['lang'];
  10. setcookie('lang', $nlang, time()+23328000); //9 miesięcy
  11. }
  12.  
  13. #Język - jeśli istnieje w sesji
  14. elseif(isset($_SESSION['lang']))
  15. {
  16. $nlang = $_SESSION['lang'];
  17. }
  18.  
  19. #Język - jeśli istnieje w cookies - ale wątpię w to
  20. elseif(isset($_COOKIE['lang']))
  21. {
  22. if(ctype_alnum($_COOKIE['lang']) && is_dir('./lang/'.$_COOKIE['lang']))
  23. {
  24. $nlang = $_SESSION['lang'] = $_COOKIE['lang'];
  25. }
  26. }
  27.  
  28. #Automatyczne wykrywanie języka - może tu leży przyczyna?
  29. elseif(isset($cfg['detectLang']))
  30. {
  31. foreach(explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $x)
  32. {
  33. if(isset($x[2]))
  34. {
  35. $x = $x[0].$x[1];
  36. }
  37. if(ctype_alnum($x) && is_dir('./lang/'.$x))
  38. {
  39. $nlang = $_SESSION['lang'] = $x; break;
  40. }
  41. }
  42. unset($x);
  43. }
  44.  
  45. #Katalog z plikami językowymi
  46. define('LANG', $nlang);
  47. define('LANG_DIR', './lang/'.LANG.'/');
  48.  
  49. #Dołącz główny plik języka
  50. require LANG_DIR.'main.php';

U mnie ten problem nie występuje. Znów pojawiają się hipotezy:

1) skrypt przechwycił jakąś inną sesję, w której istnieje zmienna sesyjna $lang
2) skrypt przechwycił ciasteczko - raczej odpada, bo musiałaby istnieć ścieżka
3) wykrywanie języka nie działa prawidłowo

Patrzę na kod i nie widzę problemu. U mnie nie występuje. Jednak 2 osoby już się skarżyły.

Co jest grane?

Ten post edytował WebCM 13.03.2010, 23:27:15
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 17:29