Sesje w PHP

0

Witam borykam się od ostatniego czasu z sesjami w PHP.
Wszystko działa prawie idealnie do czasu jak loguje się wiele użytkowników,
Czasami zdarza się że gdy odświeżę stronę dostaję plik sesji kogoś innego i widzę jego login i status na serwisie (admin,zwykły użytkownik), po ponownym odświeżeniu wraca na moje pliki sesji i jest ok.
Czasami zdarza się że plik sesji tak jakby się zgubił a po parunastu odświeżeniach wraca na moje konto(sporadycznie na konto kogoś innego)

Logowanie robię tak:

<?php 
session_start();
if($_POST['login'] AND $_POST['haslo']){
//podepnij klasę z komponentem
include('../class/Autentykacja.class.php'); 

//na podstawie klasy Autentykacja stworz zmienną obiektową ( „obiekt”) o nazwie $komponent
$komponentAutentykacji = new Autentykacja(); 

if ($komponentAutentykacji->test($_POST['login'],$_POST['haslo'])){//Wszystko jest OK
  //echo "witaj w systemie";
	$_SESSION['info'] = 'witaj w systemie';
	$json['success'] = TRUE;
	$json['login']= $_POST['login'];
	 
	$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT'].strtolower($json['login']));
}else{//Jakiś bład
  //echo "zly login lub haslo!";
	//$_SESSION['info'] = 'zly login lub haslo!';
	 
}

//Drukowanie do JS JSON
$json['info'] = $_SESSION['info'];
echo json_encode($json);
exit;	
}

?>

A tak sprawdzenie czy zalogowany

<?php
session_start(); //sesje

if(isset($_SESSION['HTTP_USER_AGENT'])){
		if($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER[ 'HTTP_USER_AGENT' ].strtolower($_SESSION['login']))){
			 
			header( 'Location: http://kinonet.pl/wyloguj.php' );
			 
			exit('Błąd sesji');
		}
	}else{
		 
	}

if ( isset( $_SESSION[ 'zalogowany' ] ) && ( $_SESSION[ 'zalogowany' ] == true ) ) {
//Treść dla zalogowanych 
}else{
//strona zwykła
}

?>

Co może powodować takowe coś ??

0

Na pewno logujesz się z dwóch różnych przeglądarek? Albo z dwóch kart incognito?

0

Tak mam przeglądarkę A Opera i przeglądarkę B Opera incognito mają różne PHPSESSID
I sprawa wygląda tak że jak zaloguje się na A konto np (adam) i potem zaloguje się na przeglądarce B na konto (pawel) to po odświeżeniu A czasami wyskoczy zamiast (adam) to (pawel)

Po wylogowaniu z B (pawel) w przeglądarce A też wylogowuje ale po odświeżeniu (nie zawsze za 1 razem) wraca na (adam) lub nie wraca do ponownego zalogowania.

Plik wylogowania

<?php
session_start();
session_destroy();
header('Location: index.php');
?>
0

Ile razy wywołujesz to session_start(); ? Wywołuj to tylko na początku index.php.

0

Wywołuje tyle razy ile to potrzebne czyli w pliku index.php, logged.php i wyloguj.php

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