• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

cookie wird in klasse gesetzt, aber löscht sich automatisch :(

T

ToM80

Guest
Moin,

ich verzweifel nun schon eine ganze Zeit an meienr Sessionfunktion. Aus diversen Gründen möchte ich nicht auf das von PHP mitgelieferte Session-Handling zurückgreifen (ich bitte von Diskussionen in diese Richtung abzusehen). Stattdessen möchte ich ein eigenes Datenbankbasisertes Sessionhandling integrieren.

Ich habe die Klasse user (hier wird z. B. der Loginvorgang gesteuert) und eine weitere Klasse Session (Sessionhandling).
Nun möchte ich wenn die Logindaten passend sind eine Session in die Datenbank schreiben (klappt) und ein Cookie anlegen (klaptt temporär). Der Loginvorgang läuft via Ajax. Die Seite wird bei erfolgreicher Rückmeldung der Loginfunktion neugeladen.
Genau hier scheint der Cooke wieder gelöscht zu werden, so dass es man anstatt im Programm wieder auf der Loginmaske landet. Ich verstehe nicht wo es hängt :(

Hier ein wenig Code:
session.class.php:
PHP:
makeNew($uId,$data) {
...
		$this->createKey();
		$this->cryptKey();
		$this->setSessionData();
		setcookie("cookiename",$this->secureKey,time()+60000); //die lebensdauer ist testweise gesetzt. normalerweise soll es ein sessioncookie werden		  	
...
}

user.class.php
PHP:
function login ($userId, $pass) {
...
$sess=new indisession();
$sess->makeNew($this->userId, $userData);
$this->chk=1;
...
}

index.php
PHP:
if (isset($_COOKIE['cookiename'])) {
	echo '<script type="text/javascript">alert("ff: '.$_COOKIE['cookiename'].'");</script>';
	$sess=new indisession();
	$sess->chkSession($_COOKIE['cookiename']);
} else {
	echo '<script type="text/javascript">alert("tröt");</script>';
	$actSite='login';
	$siteTitle='Login';
}
 
Ich hab mich an das Problem herangetastet. Grund für mein Problem war, dass das Cookie via setcookie erst dann gelöscht wird, wenn der Server seinen Output an den Client übermittelt hat (s. auch http://www.php.de/php-tipps-2008/1440-erledigt-cookie-laessyt-sich-nicht-loeschen-2.html). Nun das ist bei meiner Funktion logischerweise nicht der Fall. Mit einem zusätzlichen unset($_COOKIE['cookieName']); scheine ich den Cookie während der Laufzeit zu zerstören. Er taucht jetzt zumindest nicht mehr auf, und hier ist das nächste Problem. Er ist weg!! Obwohl ich direkt nach dem unset($_COOKIE) wieder ein setcookie('cookiename','cookiewert'); setze *grml* Alles was ich will ist, sollte ein alter cookie aus irgendeinem Grund noch vorhanden sein, diesen zu zerstören und einen neuen gültigen Cookie zu setzen. Das kann doch nicht so schwer sein :( Für mich scheints akutell nahezu unmöglich.
 
Neuer Nachtrag warum umständlich wenns auch einfach geht. Ist der cookie bereits gesetzt, dann überschreibe ich einfach den Wert, ist er nicht gesetzt, dann erstelle ich ihn neu. Somit Problem gelöst :D
 
Mein Problem hat sich mittlerweile geklärt. Es lag daran, dass ich Ajax verwende. Es ist am besten ein Cookie mit JS zu setzen und dann entsprechende mit PHP zu behandeln, dann klappt alles ohne Probleme.
 
Zurück
Oben