![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
mam problem z sejsjami. skrypt inicjuje na początku sesję dla każdego użytkownika przez session_start(); następnie gdy chcę się zalogować jako administrator, pobiera dane z formularza, hasło koduje używając md5, sprawdza z danymi w bazie danych, jeśli są poprawne to zmienia datę ostatniego logowania zapisaną w bazie danych i dalej jest to:
ale... po przeniesieniu spowrotem do admin.php (funkcja is_user_login() powinna zwrócić teraz wartośc yes i powinno wyświetlić się menu admina) dane wpisywane są do sesji, ale inicjowana jest w tym samym momencie nowa sesja... czy ktoś wie co z tym zrobić? to jest pewnie wina header() gdyż nie dodaje do adresu id sesji. tylko czy da się coś zrobic, żeby automatycznie dodawało? trans-sid mam włączone w php.ini ... Ten post edytował Paweł :) 29.12.2005, 03:01:49 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 312 Pomógł: 0 Dołączył: 29.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
jak wygląda funkcja is_user_login() ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 13.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Moment moment ale Ty konczysz sesje poprzez session_write_close() - z tego co wiem to ta funkcja dziala w ten sposob, ze zamyka bierzaca sesje i pozostawia do niej dostep np jezeli robisz cos na ramkach. Wydaje mi sie, ze to w tym tkwi problem.
Pozdro |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
na początku też tak myślałem, ale session_write_close() jest tylko po to by header() nie przekierował strony, zanim sesja będzie zapisana. bez session_write_close() jest tak samo.
funkcja is_user_login() :
W skrócie robi tak: Najpierw sprawdza czy jest ustawiony gnick w pliku sesji, jeśli nie, zwraca wartość no czyli, że user jest niezalogowany. Jeżeli gnick jest zdefiniowane, sprawdza czy gnick i gpass są zgodne z zapisami w bazie danych (czyli czy user istnieje i czy hasło jest poprawne). Jeżeli wszystko jest ok, zwraca yes, jeżeli coś jest nie tak, to zwraca no. Pozdrawiam |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj zainicjować sesję na początku każdego pliku, bo mi tylko tak działa (tzn. pliki inkludowane też muszą mieć session_start)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 312 Pomógł: 0 Dołączył: 29.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
$_SESSION jest tablicą superglobalna dostępną z każdego miejsca w aplikacji,
nie musisz więc wywoływac na jej rzecz global.
@UDAT, inicjowanie sesji dla każdego include jest zbędne Ten post edytował ennics 29.12.2005, 16:55:16 |
|
|
![]() ![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
rzeczywiście, te dwa globale były tam niepotrzebnie, $user_tbl niestety musi zostać. sesja inicjowana jest zawsze (w pliku config.php, który jest includowany do każdej strony cms-u). Tam w is_user_login() wszystko jest ok, ta funkcja działa poprawnie.
Na 99% przeszkadza to:
gdyż nie dodawane jest do adresu id sesji (a ciasteczka mi nie trybią nie wiem czemu) czyli zapisuje dane usera do pliku sesji ale po tym tworzy nową sesję z której odtąd user korzysta... dlaczego trans-sid nie działa na adresy zapisane w header() (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? jak to zrobic, by dodawal automatycznie wszystko co trzeba?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 13:40 |