![]() |
![]() |
![]() ![]()
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.
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
dziwny ten kod, unsety, zabawy z przekazywaniem danych od jednej zmiennej do drugiej. is_dir('./lang/'.$x)) - pewnie dochodzi do tego że /lang/ jest katalogiem a $x ma jakąś dziwną wartość (od . ./ poczynając). Wrzuć tam warunek na istnienie pliku językowego z podkatalogu. Podobnie może mieć się sprawa z $_COOKIE i $_SESSION gdzie używasz is_dira.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Sprawcą całego zamieszania jest register_globals.
Wszystko jasne. Gdy register_globals = On, w skrypcie tworzy się wielka czarna dziura. Do zmiennych globalnych można odwołać się przez referencje, a więc: Kod if(isset($_SESSION['lang'])) define('lang', $_SESSION['lang']); nie gwarantuje bezpieczeństwa!if($_SESSION['haslo'] == 'xxx') Do poczytania przykład 10: http://php.net/manual/en/security.globals.php
Ten post edytował WebCM 21.03.2010, 22:57:38 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 17:20 |