[php] problem - sesje wygasają po odświeżeniu strony

Witam.

Tworzę swego rodzaju serwis, który posiada system logowania oparty na sesjach. System wygląda bardzo podobnie do tego: http://webmade.org/porady/sesje-php-sys … owania.php , z małymi zmianami (np. session_register został wywalony, gdyż jest to już przedawniona komenda). Szczerze mówiąc nie wiele rozumiem z tych sesji, stąd zgapiłem prawie wszystko z strony wyżej wymienionej. Wszystko śmiga u mnie na PC (xampp - php 5.8.3, mysql 5.5.16) jednak gdy wrzucam na serwer (www.x10hosting.com) to sesje nie za bardzo działają - tzn. tak jakby “chwyta” odpowiednie dane z mysql, bo się loguje, ale zaraz po odświeżeniu strony znów jestem wylogowany - tak jakby sesja od razu wygasała. Czy da się to jakoś naprawić? Co zrobić, żeby podtrzymać sesję przy “życiu”? Może zna ktoś jakiś dobry system logowania, który jest równie prosty (wolałbym rozumieć to co piszę ;))?

z góry dziękuję za pomoc.

Bez kodu będzie ciężko cokolwiek powiedzieć.

Wklej kod i zobaczymy co da się zrobić. :wink:

Na stronie głównej rozpoczynam sesję “session_start()”. W dalszej części nadaję sesji ($_SESSION[“zalogowany”]) wartość (0 jeżeli użytkownik nie jest zalogowany, a 1 gdy jest), a sesji ($_SESSION[“userid”]) nadaję id zalogowanego użytkownika. Oczywiście jest to prosty system, który w dalszej fazie mam zamiar nieco skomplikować, jednak na chwilę obecną chcę, aby to co mam teraz działało poprawnie.

Logowanie wygląda następująco (gdy skrypt sprawdzi poprawność z bazą danych i po wszelki zabezpieczeniach jest wykonywany następujący kod) :

echo "Zalogowano poprawnie. Przejdź do strony głównej.";

			$_SESSION["zalogowany"]='1';

			$_SESSION["userid"] = mysql_fetch_array(mysql_query("select id from users where login = '".htmlspecialchars($_POST["login"])."' AND password = '".md5(htmlspecialchars($_POST["haslo"]))."'"));[/code]

Pokaż warunek, którym sprawdzasz czy jesteś zalogowany. :slight_smile:

Warunek działa i nie jest on potrzebny. Jak pisałem w pierwszym wpisie - wszystko poprawnie się wykonuje (nawet mnie loguje do odpowiedniego konta), jednak zaraz po przejściu na stronę główną (odświeżeniu) wszystko wygasa. Potrzebuje linijkę kodu, która sprawi, że dana sesja będzie trwała przez określony czas (o ile w tym siedzi problem). U mnie na serwerze domowym wszystko śmiga, a więc nie może to być wina skryptu tylko ustawień serwera (chyba). Dodam, że nie są ustawiane żadne ciasteczka - wszystko na sesjach. Może należałoby dodać jakieś ciastka?

Miałem podobny problem na innym hostingu u mnie problemem były literówki w zmiennych oraz, że zmienna sesji miała taka samą nazwę jak zmienna “$” gdzieś w kodzie (oczywiście na localhoście tego problemu nie było). Nie wiem jak to wygląda na x10hostingu, ale nie widzę w googlu, żeby ludzie narzekali na problem z sesjami.

Wina na bank po stronie serwera, jednak nie wiem co muszę zrobić, żeby to naprawić :confused: Właśnie wrzuciłem te same pliki na 000webhost.com i śmiga aż miło - gdyby nie to, że już raz mnie wyrolowali to bym przy tym hoście został… Teraz nie mogę sobie pozwolić na takie ryzyko…

Może teraz troszkę z innej beczki pytanie - strona o której mówię to gra przeglądarkowa, która jest we wczesnym stadium rozwoju. Wszystkie pliki gry znajdują się w folderze “game”, a plik odpowiedzialny za połączenie z bazą danych jest w folderze wyżej. Odwołuje się do niego w taki sposób:

include("../nazwa_pliku_konfiguracyjnego.php");

i nie chce mi to działać. Na chwilę obecną wrzuciłem ten plik do tego samego folderu co gra i działa - na localhost oczywiście wszystko działa poprawnie bez tego zabiegu. Co ciekawe - na hostingu, na którym mam problemy z sesjami niby wszystko łapie poprawnie (includuje z folderów wyżej), jednak samo logowanie przebiega tak, jakby ich nie includowało, a więc i tak musze wrzucić plik konfiguracyjny do podfolderu “game”. Może źle się odwołuję? Wydaje mi się że “…/” to poprawny zabieg…