Verlust von Session Variablen...

BitMan

Erfahrenes Mitglied
Hi Leute,

ich verlier bei einem kleinen Login-Script meine Session Variablen. Kann mal einer schauen. Ich häng das schon seit gestern mit dran!

Code:
<?PHP
	
	session_start();
	
	
	
	
	$LoginUser = getVar("txtLoginUser", $_GET, $_POST);
	$LoginPass = getVar("txtLoginPass", $_GET, $_POST);
	$btnLogin = getVar("btnLogin", $_GET, $_POST);
	$btnLogOut = getVar("btnLogOut", $_GET, $_POST);
	$isLoggedIn = false;
	$curUser = array();
	
	
	
	
	if($LoginUser && $LoginPass)
	{//*** Anmelde-Form wird ausgelesen
		$curUser = getUser($LoginUser, $LoginPass);
		
		if($curUser!=array())
		{			
			$_SESSION["user"] = $LoginUser;
			$_SESSION["pass"] = $LoginPass;
			$_COOKIE["php_train_user"] = $LoginUser;
			$_COOKIE["php_train_pass"] = $LoginPass;
			$isLoggedIn = true;
		}
	}




	if(!$isLoggedIn)//*** wurde vorher bei Abfragen von LoginForm gesetzt
	{//*** Session-User prüfen
		$TmpUsr = $_SESSION["user"];
		$TmpPss = $_SESSION["pass"];		
		//** hier gehen die Session-Variablen verloren******
		
		
		
		$curUser = getUser(  $TmpUsr, $TmpPss  );
		
		if($curUser!=array())
		{
			$_SESSION["user"] = $TmpUsr;
			$_SESSION["pass"] = $TmpPss;
			$_COOKIE["php_train_user"] = $TmpUsr;
			$_COOKIE["php_train_pass"] = $TmpPss;
			$isLoggedIn = true;
		}
	}




	if(!$isLoggedIn)
	{//*** Cookie-User prüfen
		$TmpUsr = $_COOKIE["php_train_user"];
		$TmpPss = $_COOKIE["php_train_pass"];
		
		$curUser = getUser(  $TmpUsr, $TmpPss  );
		
		if(  $curUser!=array()  )
		{
			$_COOKIE["php_train_user"] = $TmpUsr;
			$_COOKIE["php_train_pass"] = $TmpPss;
			$isLoggedIn = true;
		}
	}




	if($isLoggedIn && $btnLogin)
		header("Location: welcome.php");




	if(  $btnLogOut  ||  isBlocked($curUser)  )
	{		
		$_SESSION["user"] = "";
		$_SESSION["pass"] = "";
		$_COOKIE['php_train_user'] = "";
		$_COOKIE['php_train_pass'] = "";
		setcookie("php_train_user", "", -1);
		setcookie("php_train_user", "", -1);
		if(  $btnLogOut  )
			header("Location: index.php");
	}
	
	if(  !isRegistered($curUser)&& isAdmin($curUser)  )
		$curUser["admin"]=0;
	
?>

Wahrscheinlich hab ich nur was übersehen. Danke für Tips und Info... .


cu s00n,
BitMan
 
hab mal die PHPINFO angesehen...


session.auto_start Off Off
muss das auf ON stehen?

hier die Einstellungen im Session-Bereich
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly On On
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file /dev/urandom /dev/urandom
session.entropy_length 16 16
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php5 /var/lib/php5
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0
 
Zuletzt bearbeitet:
Hast du mal geschaut wo du deine Variablen verlierst? Wo ist dir aufgefallen das du sie verloren hast?

Vielleicht eine Weiterleitung auf eine andere Seite gemacht und dort session_start(); nicht aufgerufen?
 
Hast du mal geschaut wo du deine Variablen verlierst? Wo ist dir aufgefallen das du sie verloren hast?

Vielleicht eine Weiterleitung auf eine andere Seite gemacht und dort session_start(); nicht aufgerufen?

Doch session wird gestartet. Aber der Server macht keine Session.
Strato VServer. Irgendwie scheint Session OFF zu sein. Muss da mal durch guggen.
session.auto_start Off Off
 
Ich versteh den Sinn des Scripts irgendwie nicht ganz... Wenn die Logininformationen aus dem Formular nicht übermittelt wurden, soll das Loginscript sich die Informationen aus der Session (bzw. aus dem Cookie) holen?

Kannst du vielleicht erläutern, wie das Ganze aufgebaut ist?

An dem Script selbst kann man nichts erkennen. An der Einstellung auto_start liegt es auch nicht, die erspart dir nur die Funktion session_start() zu Beginn.
 
Der Sinn ist eigentlich unwichtig, da mein Script auf dem lokalen HOST unter XAMPP sauber läuft.

Aber hier für Dich: In meinem Beispiel wollte ich einen User über ein Login Form anmelden lassen, wenn der User sich anmeldet wird er in der Session gespeichert und wenn er das wünscht, dann wird er verschlüsselt in einem Cookie gespeichert. btw: Skript ist noch nicht fertig, weil Session nicht geht.

Dieses Beispiel: Datei: index.php
Code:
<?PHP
	session_start();

	echo session_id()."<br>";
	
	if(!isset($_SESSION["num"]))
		$_SESSION["num"] = 0;
	else
		$_SESSION["num"] = $_SESSION["num"] + 1;
		
	echo $_SESSION["num"];

?>
<a href="index2.php">test</a>

Datei: index.php
Code:
<?PHP 

	session_start();

	echo session_id()."<br>";
	
	if(!isset($_SESSION["num"]))
		$_SESSION["num"] = 0;
	else
		$_SESSION["num"] = $_SESSION["num"] + 1;
		
	echo $_SESSION["num"];

?>
<a href="index.php">test</a>

Lokal, auf XAMPP, geht das Skript nur auf dem Strato V-Server halt nicht.
Dieses Beispiel soll beim Seitenwchsel nur einen Wert hochzählen.

Weis hier jemand Rat?
 
Zuletzt bearbeitet:
Wenn es bei dir zuhause geht liegt es wohl an strato, glaubst du nicht?:D
Eventuell sind sessions dort deaktiviert oder dein account ist beschränkt
 
Das wirft natürlich ein ganz anderes Licht drauf.. Wie countryqt30 schon sagte, das muss dann wohl am Server liegen. Die Frage ist nur: wo?

Hast du mal geschaut, ob vielleicht im apache error log Fehler diesbezüglich sind? Hat der Webserveruser Rechte auf den Save path? (/var/lib/php5) Das sind jetzt so die ersten Anhaltspunkte..
 
Da es ein vServer ist, wirst du auf wenig Support hoffen dürfen.
Meine Vermutung: Der Session Save Path ist falsch. Erstelle einen tmp Ordner, statte ihn mit den richtigen Rechten aus und korrigiere die php.ini dementsprechend. Server neu starten und nochmal probieren.
 
Merci, es war nicht nur der Session Save Path sondern auch die Einstellung [session.cookie_httponly On On]
Jetzt geht alles wieder. Session-Problem gelöst.
 
Zurück