[PHP] Sesja się rozpoczyna przed zalogowaniem

0

Na mojej stronie stworzyłem skrypt do rejestracji i logowania oparty m.in. na skryptach.
Wiem, że skrypt musi być rozpoczęty (session_start) przed wysłaniem innego nagłówka do przeglądarki. Mam więc umieszczone rozpoczęcie sesji w pliku index.php, ale sesja jest rozpoczyna przed zalogowaniem.
Jak ktoś niezalogowany będzie nieaktywny przez jakiś czas, to przenosi go do index.php (jeśli użytkownik jest zalogowany to go przedtem wylogowuje).

Jak przeniosę rozpoczęcie sesji do ifa sprawdzającego czy użytkownik jest zalogowany, to oczywiście wywala komunikat o tym, że już coś wysłało do nagłówka. Co można zrobić w tej sytuacji (w head'zie mam ustalenie kodowania strony, więc usuwanie wszystkiego przed ifami sprawdzającymi, czy user jest zalogowany odpada). [???]

0

Nezetus napisał:

Na mojej stronie stworzyłem skrypt do rejestracji i logowania oparty m.in. na skryptach.

lol?

0

W jaki sposób zapamiętujesz czy dany user się zalogował? Bo chyba sam sobie blokujesz kilka prostych opcji...

Jeśli chcesz kogoś przenieść na stronę główną po jakimś czasie to warto zastanowić się nad timerem w JavaScript. Ale nie o tym była mowa.

Myślę, że najwygodniej będzie Ci przechowywać dane dot. zalogowanego użytkownika w sesji.
Przy takim sposobie zawsze rozpoczynaj stronę poprzez session_start().
Sam sposób przechowywania danych mogłbym być taki, że zmienna $_SESSION['user'] posiadałaby informację nt usera jaki jest zalogowany.
Jeśli zmienna jest pusta - nikt nie jest zalogowany. W przeciwnym razie przechowujesz tam login usera.

Mając taki mechanizm po upływie X sekund usuwasz dane ze zmiennej i wywołujesz przekierowanie.

0

IMO masz skopaną, albo inaczej nazywając zbyt prostą architekturę projektu w stosunku do tego, co chcesz zrobić :). Bardzo często piszący skrypty wychodzą z założenia, że nieśmiertelny include nagłówka jest niczym święta krowa, lepiej się męczyć z samym php i robić rozwiązania na około ;).

Najlepiej oddzielić w końcu html'a od całej reszty, wtedy wyślesz sobie fragmenty strony dopiero gdy już będziesz wiedział co zrobić z userem - zalogować, wylogować czy może przeprosić ;). O ile zrozumiałem, to jednak scalasz stronę z jakimiś gotowcami, więc na takie dłubanie nie będziesz mieć ochoty.

Spróbuj z buforowaniem. Na samym początku index.php daj <? ob_start(); ?> a na końcu <? ob_end_flush(); ?>.

Prawdę mówiąc od tak dawna robię już na działających wzorcach, że zapomniałem jak się borykałem z takimi kwestiami. Bufor powinien jednak pomóc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1