Skocz do zawartości
Forum komputerowe

Panel gracza (PHP) nie trzyma sesji i wylogowuje


Rekomendowane odpowiedzi

Witam.Mam problem z panelem gracza na mojej stronie.Panel jest pisany troszkę starszym systemem i rok temu jeszcze działał poprawnie, niestety dzisiaj po próbie ponownego uruchomienia nie działa.Próbowałem różnych sposobów, lecz nie wiem czym może to być spowodowane. Dodam, że rejestracja i statystyki działają poprawnie, Pokazuje wiadomość "ZALOGOWANO poprawnie" po czym strona sie odświeża i jesteśmy w punkcie wyjścia

Link do panelu http://s63180.web101.svpj.pl/panelgracza.php


login: testkonto123
hasło: haslo123
dodam, że rejestracja działa poprawnie.

Kod logowania jak działa, może ktoś znajdzie w czym jest błąd: kod strony - Pastebin.com
 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administrator

Witaj na forum!

Czy możesz pokazać jak wygląda funkcja isLogged() oraz login() ?

Wygląda mi to tak jakby nie tworzyło/wykrywało 'sesji'.

Dodatkowo gdybyś dał info co to za system - może by pomogło 😉

Odnośnik do odpowiedzi
Udostępnij na innych stronach
6 godzin temu, Mativve napisał:

Witaj na forum!

 

Czy możesz pokazać jak wygląda funkcja isLogged() oraz login() ?

Wygląda mi to tak jakby nie tworzyło/wykrywało 'sesji'.

Dodatkowo gdybyś dał info co to za system - może by pomogło 😉

isLogged() to nie będzie to? is logged - Pastebin.com  login() to występuje? Ponieważ nie mogę jej znaleźć nigdzie?

Edit: przeszukałem wszystkie pliki, nigdzie nie ma funkcji  login()

Edytowane przez ProBaton Batonik
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administrator

@Pankrok Kolega napisał że przeszukał pliki i nic nie znalazł - dodatkowo functions.php to chyba w WP występuje - a tutaj jest custom system to może być w całkowicie innym pliku (choć zbieżność nazw plików może się zdarzyć).

@ProBaton Batonik Czy jesteś w stanie dać mi dostęp do plików bądź podać link do tego systemu abym mógł u siebie go zainstalować? Bo tak to będziemy błądzić a zapewne jest to wina jednej z tych funkcji.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

@Mativve patrząc na pierwszego pasebina na wstępie incuduje właśnie plik z funkcjami, potem korzysta z funkcji bez operatora klasy co oznacza że skrypt nie jest zbudowany jako oop stąd moje przypuszczenie że tam może być dana funkcja lub include innego pliku który ją zawiera. Bez wglądu w pliku raczej ciężko będzie to rozgryźć.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administrator

@Pankrok @ProBaton Batonik dał mi dostęp do FTPa i jest tak jak piszesz - w sensie nie jest to stworzone na OOP i jest tam typowy "spaghetti code" ale dzięki magicznemu działaniu VSCode udało się odnaleźć funkcje:
 

Spoiler
function isLogged() {
	global $userdata, $_SESSION;
	// sprawdzamy, czy mamy sesje i dane usera
	if ($userdata['uid'] > 0 and isset($_SESSION['uid'])) {
		return true;
	} else {
		return false;
	}
}

 

Spoiler

 

function login($login, $pass) {
	global $db, $_SESSION; // musimy mie� dost�p do tych zmiennych
	$login=htmlentities($login,ENT_QUOTES,'UTF-8');		// Tutaj zabezpieczenie przed SQL ('--)
	$pass=htmlentities($pass,ENT_QUOTES,'UTF-8');		// Tutaj zabezpieczenie przed SQL ('--)
	$sql = "select * from user where nick='$login' and password='$pass'";
	if ($result=$db->query($sql)) {
		$row = $result -> fetch_Assoc();
		if ($row['uid'] > 0) { // je�li pobrany przez nasz rekord ma ID wi�ksze od 0 to znaczy, �e istnieje, czyli zostali�my zalogowani
			$_SESSION['uid'] = $row['uid']; // dodajemy ID do sesji
			$_SESSION['login'] = $row['nick'];
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

(Nie do końca podoba mi się użycie zmiennych w zapytaniu $sql)

Skoro system działał dobrze kiedyś to może jest to wina wersji PHP? Warto spróbować zanim się w kodzie zacznie się grzebać.

Również spróbowałbym trochę kod zaktualizować ewentualnie skorzystać z WordPressa i utworzyć wtyczki, które będą odpowiadać obecnym elementom.

Przy próbie uruchomienia tego u siebie na localhost'cie nie wszystko dobrze działało, a gdy dałem na tymczasowy hosting to wyrzucało mi na górze informacje "headers already sent"

Odnośnik do odpowiedzi
Udostępnij na innych stronach
1 godzinę temu, Mativve napisał:

@Pankrok @ProBaton Batonik dał mi dostęp do FTPa i jest tak jak piszesz - w sensie nie jest to stworzone na OOP i jest tam typowy "spaghetti code" ale dzięki magicznemu działaniu VSCode udało się odnaleźć funkcje:
 

  Odkryj ukrytą treść

function isLogged() {
	global $userdata, $_SESSION;
	// sprawdzamy, czy mamy sesje i dane usera
	if ($userdata['uid'] > 0 and isset($_SESSION['uid'])) {
		return true;
	} else {
		return false;
	}
}

 

 

  Odkryj ukrytą treść

 


function login($login, $pass) {
	global $db, $_SESSION; // musimy mie� dost�p do tych zmiennych
	$login=htmlentities($login,ENT_QUOTES,'UTF-8');		// Tutaj zabezpieczenie przed SQL ('--)
	$pass=htmlentities($pass,ENT_QUOTES,'UTF-8');		// Tutaj zabezpieczenie przed SQL ('--)
	$sql = "select * from user where nick='$login' and password='$pass'";
	if ($result=$db->query($sql)) {
		$row = $result -> fetch_Assoc();
		if ($row['uid'] > 0) { // je�li pobrany przez nasz rekord ma ID wi�ksze od 0 to znaczy, �e istnieje, czyli zostali�my zalogowani
			$_SESSION['uid'] = $row['uid']; // dodajemy ID do sesji
			$_SESSION['login'] = $row['nick'];
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

(Nie do końca podoba mi się użycie zmiennych w zapytaniu $sql)

 

Skoro system działał dobrze kiedyś to może jest to wina wersji PHP? Warto spróbować zanim się w kodzie zacznie się grzebać.

Również spróbowałbym trochę kod zaktualizować ewentualnie skorzystać z WordPressa i utworzyć wtyczki, które będą odpowiadać obecnym elementom.

Przy próbie uruchomienia tego u siebie na localhost'cie nie wszystko dobrze działało, a gdy dałem na tymczasowy hosting to wyrzucało mi na górze informacje "headers already sent"

Zmieniłem wersję od 7.2 do 5.6 i również nic to nie dało.Niestety kodu nie pisałem ja i nie wiem dokładnie jakim stylem jest pisany, jest jakaś opcja aby ogarnąć to aby logowanie działało? Ponieważ wszystko inne działa, wszelkie szukanie użytkowników itp

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

imo cały skrypt do zaorania, hasła latają bez hashy, patrząc na request jaki leci do pliku include/login.php dane z bazy są pobierane prawidłowo. natomiast w function isLogged() nie widzę nigdzie przypisania danych do $userdata, więc zapewne operator logiczny if w linii 5 zwróci false. Wydaje mi się że tam powinien sprawdzać $_SESSION['login'] i $_SESSION['id'] . Jeśli można @ProBaton Batonik pokaż pliki mogę na to zerknąć co tam można naprawić.

PS. global $_SESSION mnie rozbawiło 😄

Odnośnik do odpowiedzi
Udostępnij na innych stronach
25 minut temu, Pankrok napisał:

imo cały skrypt do zaorania, hasła latają bez hashy, patrząc na request jaki leci do pliku include/login.php dane z bazy są pobierane prawidłowo. natomiast w function isLogged() nie widzę nigdzie przypisania danych do $userdata, więc zapewne operator logiczny if w linii 5 zwróci false. Wydaje mi się że tam powinien sprawdzać $_SESSION['login'] i $_SESSION['id'] . Jeśli można @ProBaton Batonik pokaż pliki mogę na to zerknąć co tam można naprawić.

 

PS. global $_SESSION mnie rozbawiło 😄

Na PW masz all dane do konta testowego na górze w temacie

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...