![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 101 Pomógł: 7 Dołączył: 16.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem nad którym spędziłem 1,5 dnia i nic mądrego nie wymyśliłem a bez jego rozwiązania nie jestem w stanie ruszyć dalej...
Piszę pewien projekt, który uwzględnia "przyjazne url" ale nie przy pomocy mod_rewrite lecz za pomocą zmiennej predefiniowanej $_SERVER['PATH_INFO']. Stosuję także własne oznaczenia dla parametrów url, np. dla kataegorii.
Czyli upraszczając: ADRES URL: Link w postacji domena.pl/strona/podstrona/cat,100,name.html oznacza: strona - plik strony (bez rozszerzenia - w .htaccess <Files index>ForceType application/x-httpd-php</Files> dzięki czemu rozpoznawany jest jako php) podstrona - wymyślona nazwa podstrony, nie mająca fizycznego odpowiadnika w postaci pliku cat,100,name.html - parametr kategorii url - gdzie cat - wskaznik typu parametru, 100 id kategorii, name - nazwa kategorii Istnieje możliwość stosowanie kilku kategorii poprzez oddzielenie ";" - domena.pl/strona/podstrona/cat,100,name;cat,200,name2.html Wszystkie dane dotyczące kategoii przechowywane są w tablicay $cats, np:
SESJA: Do kontroli poprawności sesji stosuję zmienną $_SESSION['isValid'] ktora standardowo definiowana jest przez:
Natomiast funkcja sprawdzającą wartość poprzedniej zmiennej to:
FUNKCJA KONTROLI BLEDOW Do kontroli bledow w calej aplikacji posiadam funckje error(), która zajmuje się międzyinnymi zmianą zmiennej kontroli sesji na false:
WERYFIKACJA POPRAWNOSCI LINKU Jeśli zmienna $check = true, wtey jest aktywowana weryfikacja poprawności linku, którą wygląda np tak:
Problem polega na jak gdyby somodzielnym wykonaniu instrukcji die(). Wpisanie adresu domena.pl/strona/cat,100,name.html lub bez kategorii domena.pl/strona/ i ponowne odswiezenie strony zmienia wartosc zmiennej $_SESSION['isValid'] na false, pomimo tego ze zaden z doch if-ow nie powinien byc wykonany, bo adres url i parametry kategorii sa ok. Nawet gy umiescimy w kazdym if-ie echo z jakim napisem, nie sotanie on wyswietlony bo ulr jest ok, a pomimo to funckja die zostaje wywolana. I teraz czego wlasnie nie rozumiem zostaje wywolana tylko przez drugiego if-a (sprawdzenie poprawnosci czesc url) pierwszy if dziala ok. jesli nawet funkcje die w drugim if-ie wezme w komentarz i umieszcze echo, napis sie nie wyswietli a usuniecie komentarza spowoduje wykonanie if-a. Jedynym rozwiazaniem jest usuniecie $_SESSION['isValid'] = false; z funckji error lub usuniecie die z drugiego if-a. Systuacja ta nie ma miejsca dla linku w postaci domena.pl/strona a wpisanie domena.pl/strona/ lub domena.pl/strona/cat,100,name.html i odswiezenie strony wywoluje blad. Oczywiscie wszystkie te funckje sa w maksylanym uproszczeniu, zey zaprezentowac istote problemu, bo nie moge zrozumiec dlaczego instrukcja if ktorej warunki nie sa spelnione wykonuje sie pomimo tego. prosze o jakies wskazowki? pozdrawiam Ten post edytował siemieng 1.07.2009, 18:11:20 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 02:04 |