Session wird ungewollt überschreiben

Eagle-PsyX-

Erfahrenes Mitglied
Hi,
ich hab eine komplette, umfangreiche PHP Internetseiten mit ingesammt 47 PHP Datein im Moment. Dies wollte ich klarstellen, weshalb ich hier auch keine/kaum Code Schnippsel veröffentliche, ich hoffe dass versteht ihr.

Also mein Problem ist, dass die Session "$_SESSION[ID]" bei mir nach dem ersten Link nachdem sie defeniert wurde überschreiben wird, und zwar immer zu "Default"?
Aber dies geschiet NUR auf dem Internetserver, nicht mit XAMPP. Das dies ein Serverproblem ist bezweifel ich, denn andere Session Einträge sind immer korrekt.

Die Seite die sich nach dem defenieren öffnet ist die erste Startseite wieder, und dort wird auch bis jetzt nicht mit Session gearbeitet.Logischerweise bin ich den Quellcode sehr oft durchgegangen, aber nirgendswo wurde die ID verändert.

Kennt jemand vielleicht das Problem? Es ist doch sicher kein Zufall das es immer zu "Default" wird?
 
Besitzt die Variable den Wert „Default“? Dann durchsuch doch einfach mal alle deine momentanen 47 PHP-Dateien nach diesem Wort. PHP verändert nämlich nicht einfach irgendwelche Werte.
 
"Logischerweise bin ich den Quellcode sehr oft durchgegangen, aber nirgendswo wurde die ID verändert."...
Abgesehen davon hab ich nicht einmal das Wort "Default" benutzt (engl. Standard). Seltsam ist das dieses Problem NUR auf den Server vorhanden ist. Ich arbeite mit XAMPP und lade das Ergebniss(ggf. angepasst) nur hoch.

-PHP Nicht, aber ggf. irgendwelche Sessions-Server Einstellungen?
 
Dann wirst du wohl das Verhalten deiner Anwendung in dem genannten Rahmen genau analysieren müssen.

Was wird denn überhaupt in genannten Variable gespeichert? Doch wohl nicht die Sitzungs-ID, oder?
 
Nein, die User-ID.
Ich hab gerade etwas merkwürdiges entdeckt.
Während des Logins Verfahren wird die User ID als $_SESSION[ID] gespeichert.
Um den Fehler erstmal zu ignorieren hab ich jetzt einfach mal parallel den selben Wert in $_SESSION[SID] gespeichert, erstaunlich, auch dieser Wert wird sofort zu "Default" umgeändert? O.o
 
Aus der User-Datenbank :-)

Aber der Wert stimmt, ich hab ihn (vorübergehend) gleich mit als Cookie gespeichert, und der ist immer richtig.

Intressant ist wohl auch, das anschließend nach der Defenierung, der Login in das Protokoll gespeichert wird mit der ID. Beim Ausloggen ebenfalls, dort aber immer nur "Default" steht.
 
Ist „ID“ das erste Element im $_SESSION-Array? Falls ja: speichere davor mal einen anderen Wert.
 
Ich kopier mal lieber den "Login" Abschnitt:

PHP:
if($Site == "Login")
	{
		//SQL Abfrage von "$users" wo der Benutzername dem eingegebenen Benutzernamen gleicht, wird als Array "$SQLUser" gespeichert.
		$usernamesql = mysql_query("SELECT ID, Username, Nick, RealName, Password, Status FROM $users WHERE Username LIKE '$_POST[username]'");
		$SQLUser = mysql_fetch_object($usernamesql);
		
		//Uberprüfen ob Login richtig ist
		if(isset($SQLUser->Username) 
		AND $SQLUser->Username == $_POST["username"] 
		AND isset($SQLUser->Password)
		AND $SQLUser->Password == md5($_POST["password"])
		AND $SQLUser->Status != "D")
			{
				//Sicherheits Informationen defenieren
				$SecureID1 = rand(1000000,9999999);
				$SecureID2 = rand(1000000,9999999);
				$SecureIP = $_SERVER['REMOTE_ADDR'];
				$time = time();
				$SecureTime = date("H:i",$time);
				$SecureSession = session_id();
				//Sicherheits Informationen 'Zusammenkleben'
				$Secure = "$SecureID1|$SecureID2|$SecureIP|$SecureTime|$SecureSession";
				
				//Speichern einzelne Informationen in die Session
				$_SESSION["Username"] = $_POST["username"];
				$_SESSION["ID"] = 5;
				$_SESSION["ID"] = $SQLUser->ID;
				$_SESSION["Secure"] = $Secure;
				$_SESSION["Status"] = $SQLUser->Status;
				$_SESSION["Password"] = $_POST["password"];
				
				//Sicherheits Informationen in die Datenbank speichern
				$SQLsecure2 = "UPDATE $users SET Secure='$Secure', LastLogin='$time' WHERE Username LIKE '$_POST[username]'";
				$SQLsecure = mysql_query($SQLsecure2);
				//Sicherheits Informationen als Cookie speichern
				setcookie("Secure", $Secure);
				setcookie("ID", $SQLUser->ID);
				
				//Login wird ins Protokoll geschreiben
				$LoginZIP = new ZipArchive();
					if ($LoginZIP->open("./Log/Login.zip", ZIPARCHIVE::CREATE)!==TRUE) {
						exit("cannot open <Login.zip>\n");
				}
				$EintragNameZIP = $_SESSION["ID"] . "-" . time() . ".txt";
				$EintragInhaltZIP = $_SESSION["ID"] . "|" . $_SESSION["Username"] . "|$ActDate|$ActTime|" . $_SERVER['REMOTE_ADDR'];
				$LoginZIP->addFromString($EintragNameZIP, $EintragInhaltZIP);
				$LoginZIP->close(); 
			}
				$Site = "Content/Login.php";
			
	}
 
Zurück