<?php if($_SESSION['tryb']!="") { switch($_GET['show']) { case "news" :$_SESSION['tryb']='news'; break; case "prasa" :$_SESSION['tryb']='prasa'; break; case "przetargi":$_SESSION['tryb']='przetargi'; break; case "stats" :$_SESSION['tryb']='stats'; break; case "menu" :$_SESSION['tryb']='menu'; break; } } ?>
to kawalek mojego kodu, z ktorym nie moge dac sobie rady, a konkretnie chodzi o to, ze w zaleznosci od zmiennej sesyjnej tryb pozwala na administrowanie moim serwisem. Jest tylko jeden problem. Po przejsciu przez instrukcje switch - zmienia ta zmienna na taka jak pokazuje $_GET['show'], ale tylko na czas dzialania skryptu, tzn. gdy jestem na stronie admin.php?show=news strona dziala pieknie, zmienna tryb to news, ale gdy teraz probuje kliknac na link do admin.php (zwykly link) moja zmienna $_SESSION['tryb'] przyjmuje wartosc menu (choc patrzac wglab kodu - powinno sie wtedy pokazac 'haslo ok', a sie nie pokazuje).
Krocej mowiac - wydaje mi sie, ze gdy zadeklaruje jakas zmienna sesyjna na poczatku to w trakcie skryptu moge ja zmieniac, ale i tak na koncu pliku (gdy skrypt sie skonczy wykonywac) przyjmuje ona wartosc zadeklarowana na samym poczatku.
Dodam, ze tego problemu nie mialem, gdy na serwerze bylo ustawione register_globals=on. Zmiana na off cos popsula i nie bardzo wiem co.
Licze na Wasza pomoc
edit: dodam jeszcze jedna rzecz, ktora tez podejrzewalem, ze jednak w moim skrypcie, gdzies dalej przez przypadek zamiast przyrownywania jest znak rownosci czy cos i zmienna ustawia sie na menu. Niestety, to tez odpadlo, bo podmiana linijki
if($_POST['pass']==$haslo){ echo "haslo ok"; $_SESSION['tryb']='menu';};
na
if($_POST['pass']==$haslo){ echo "haslo ok"; $_SESSION['tryb']='prasa';};
sprawia, ze tym razem przy kliknieciu na czysty link strony admin.php wracam ciagle do dzialu 'prasa'.
edit2: juz wiem, mialem zamiast $_SESSION['tryb'] funkcje, ktora zwracala ta wartosc i nie wiem dlaczego, ale to ona wszystko psula. Po wywalniu funkcji jak reka odjal. Prosze o usuniecie tematu
