Autoryzacja odbywa się w oparciu o sesję.
Każda strona, do której obejrzenia uprawnieni są tylko zalogowaniu użytkownicy zawiera na początku kodu instrujckę która sprawdza, czy tak faktycznie jest. Jeśli wykryty zostanie niezalogowany użytkownik przypisuję zmiennej
<?php $redirect = $_SERVER['REQUEST_URI']; ?>
adres aktualnej strony (w celu automatycznego powrotu na nią po poprawnym zalogowaniu), a następnie przekierowuję użytkownika na stronę logowania:
<?php ?>
Skrypt logowania po tym jak nastąpi ono poprawnie z powrotem ma za zadanie przekierować na stronę sprzed zalogowania:
<?php ?>
Wszystko działa ładnie jeśli wywołanie nastąpi ze strony o adresie postaci:
cos_tam.php lub cos_tam.php?id=wartosc
problem pojawia się wówczas, gdy ma on postać np:
pokaz_aukcje.php?id=1&a=bbbb&c=dddd
Na stronie z której nastąpiło wywołanie zmienna $redirect jest poprawnie przypisywana i otrzymuje podany wyżej adres, ale już po przekazaniu jej do logowanie.php ma postać:
pokaz_aukcje.php?id=1
(wszystko po pierwszym znaku "&" zostaje obcięte).
W efekcie tego gdy użytkoni się zaloguje strona na którą powraca nie jest wywoływana ze wszystkimi parametrami tak jak za pierwszym razem.
(na mechanizmie tym zależy mi po to by do oglądania aukcji nie było konieczne zalogowanie się, ale już np. dodanie aukcji do obserwowanych najpierw o zalogowanie popsiło, a następnie to robiło, bez konieczności ponownego klikania w link przez użytkownika).
Czy problem, który opisałem jest "powszechnie" znany. Czy istniej prosty i skuteczny sposób jego obejścia?
Sprawa jest o tyle skomplikowana, że tworzenie serwisu jest już w dosyć zaawansowanym stadium i przebudowa całego systemu logowania i autoryzacji nie za bardzo wchodzi w grę. Problem pojawił sie dopiero teraz, gdy zaszła konieczność przekazywania za pomocą adresu URL więcj niż jednaj zmiennej, nie mam pomysłu dlaczego pozostałe są obcinane.
Będę wdzięczny za pomoc w rozwiązaniu tego co przedstawiłem.
Mam nadzieję, że da się zrozumieć o co mi chodzi.
--
pozdrawiam i z góry dziękuję