W projekcie stosuje "przyjazne linki" poprzez zastosowanie $_SERVER['PATH_INFO']:
<?php $_SERVER['PATH_INFO'] = (isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] != '/') ? $_SERVER['PATH_INFO'] : '/'; ?>
Dzieki temu otrzymuje adres url: domena.pl/strona/podstrona1/podstrona2/ (strona plik fizyczny - podstrony - moje wymyslone nazyw dla dzialow).
Problem pojawia sie przy pobraniu, a nawet nie tyle przy pobraniu co sprawdzeniu wartosci wpisanego adresu url:
<?php //POBRANIE WARTOSCI PODSEKCJI URL $limit = 3;//maksymalne liczba podsekcji w url for($i=0; $i<$limit; $i++) { { $_subsection['isExist'] = true; //zmienna kontrolna $_subsection['value'] = $_url[$i]; // wartosc wpisana w url { $_subsection['code'] = $_SUBSECTIONS[$_url[$i]][0]; // kod sekcji pobrany z pliku konfiguracji ($_SUBSECTIONS) na podstawie wartosci z url } $_rSubsections[] = $_subsection; } else { $_rSubsections[]['isExist'] = false; } } ?>
Wynik print_r($_rSubsections) dla url np: domena.pl/strona/ustawienia/
Array
(
[0] => Array
(
[isExist] => 1
[value] => ustawienia
[code] => b:000
)
[1] => Array
(
[isExist] =>
)
[2] => Array
(
[isExist] =>
)
)
I do tej pory jest ok. Znaczy wszystkie mozliwe podeskcje sa zapisane w tablciy php, czy pliku xml, czy bazie danych. Wyglada to tak:
(nazwa) ustawienia | (kod) b:000 | (pelna_nazwa) ... | (tytul) ... | itd...
I teraz zwyczajnie chce sprawdzic, czy uzytkownik podal prawidlowy adres url, czyli poruwnuje pobrana z url wartosc (w tym przypadku "ustawienia") i sprawdzam jej istnienie w konfiguracji, jak jest ok, pobieram kod (b:000) ktorym sie posluguje w pozostalej czesci aplikacji dla tej podesekcji.
Jesli zostanie podana bledna wartosc url np: domena.pl/strona/ustawienia/podsekcja/
Array
(
[0] => Array
(
[isExist] => 1
[value] => ustawienia
[code] => b:000
)
[1] => Array
(
[isExist] => 1
[value] => podsekcja
)
[2] => Array
(
[isExist] =>
)
)
Nie zostanie jej przypisany kod podeskcji. I teraz sprawdzam to np tak:
<?php foreach($_rSubsections as $_tempSubsection) { { { $_SESSION['DATA']['isValid'] = false; } } } ?>
I teraz blad polega na tym, za kazdym razem wykonywane jest $_SESSION['DATA']['isValid'] = false; nawet jesli warunki if-ow nie sa spelnione, czyli takst "tekst probny" z wewnetrznego if-a sie nie ukarze a wartosc zmiennej sesyjnej sie zmienia.
Problemu nie jedynie dla sytuacji, w ktorej podana jest maksylana liczba sesji (tu 3) czyli np: domena.pl/strona/ustawienia/dostep/haslo/.
Przez caly dzisiejszy dzien sprawdzalem to na dziesiatki sposobow, rozne rodzje zapisu, rozne sposoby sprawdzania czy zostal wygenerowany kod dla wprowadzonej podsekcji, wkoncu czepilem sie typow zmiennych ale naet jak wartosci flase/true usatwie na stringi jest tak samo:/
Wydaje sie ze to moj jakis glupi blad, ale nie moge sobie z nim poradzic, POMOCY!!!
zadnych pomyswlo?? :/ zastanawiam sie czy moe miec to zwiazek z typem zmiennych ale chyba nie - prosze raz jeszcze o jakies wskazowki