PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ungültige Session-ID's - was passiert damit?


Herr-Zinfarkt
24.04.2004, 16:49:13
Hallo alle zusammen,

hab nen login/logout mit sessions gebastelt. damit nicht dauernd neue ids erstellt werden hab ich folgendes uffe page eingefügt:

if($_COOKIE["PHPSESSID"])session_start();

startet die session dann nur, wenn wat im cookie is.

das funktioniert auch alles ganz gut (sogar ich bin zufrieden!!!)

das Problem besteht nun darin, das eine ID nach 15 min ungültig sein soll. hab das mit 10 sekunden probiert und funktioniert auch alles.

ABER: die SESSION-Datei bleibt im gegensatz zum logout bestehen. sie wird zwar nicht mehr verwendet, aber woher weiß ich nun, daß sie wirklich ungültig ist???? Kann ich mich darauf verlassen, dass sie ungültig ist, wenn der browser das so auffaßt???

Und noch was, wann wird die datei gelöscht??


THX schoma und bis denne

meikel (†)
24.04.2004, 16:55:15
Original geschrieben von Herr-Zinfarkt
hab nen login/logout mit sessions gebastelt.
Frage: Wer kennt Dein Script (außer Dir), so daß man den fragen könnte, wie es aussieht?

feuervogel
24.04.2004, 16:59:29
ich weiß zwar nicht wo dein problem liegt, dass die session-id erstellt wird, aber bitte...

>Und noch was, wann wird die datei gelöscht??

wann sie gelöscht wird (die sessiondaten aufm server) steht in der php-info datei. (session.gc-maxlifetime oder so)...

wenn eine sessino nicht mehr gültig sien soll, füge halt einen timestamp ein, der festsetzt, wann die session gesetzt wurde...und prüfe ihn...

Herr-Zinfarkt
24.04.2004, 17:00:44
sry versteh deine frage net!!???
also dat script kenn an sich nur ich

falls des sehen willst, hier die zwei-funktionen zum ein und ausloggen:

function s_start()
{
@session_start();
$_SESSION["Benutzername"]=$_POST["Benutzername"];
$_SESSION["Kennwort"]=$_POST["Kennwort"];
$_SESSION["sid"]=session_id();
};

function s_ende()
{
unset($_SESSION["Benutzername"]);
unset($_SESSION["Kennwort"]);
unset($_SESSION["sid"]);
session_destroy();
};

(Aber wie gesagt, das funzt alles)



das problem is nur, wie ich erkennen kann wann eine session ungültig ist und wann eine ungültige session gelöscht wird (alles bezieht sich darauf, das die session dadurch ungültig wird, dass die lifetime abgelaufen ist!!)

feuervogel
24.04.2004, 17:05:27
$_SESSION["sid"]=session_id();

das ist sinnlos


unset($_SESSION["Benutzername"]);
unset($_SESSION["Kennwort"]);
unset($_SESSION["sid"]);
session_destroy();

das ist redundant

du überprüfst einfach, ob $_SESSION[ 'benutzername' ] noch existiert, wenn nicht, ist die session ungültig, oder wie oder was?

Herr-Zinfarkt
24.04.2004, 17:29:26
kk thx, aber wann löscht sich die datei??

feuervogel
24.04.2004, 17:54:21
wann sie gelöscht wird (die sessiondaten aufm server) steht in der php-info datei. (session.gc-maxlifetime oder so)...


welche verdammte datei?

der session-cookie? dein php-script? oder was???

Herr-Zinfarkt
24.04.2004, 17:59:30
nein, der schreibt die session bei mir immer mit den daten der session in den ordner ../tmp (kann ma in php.ini umstellen) und die datei heißt dann ungefähr:

sess_437979fkshfi894zwiohro8hf8s

(de facto is dat wohl dann der cookie)

ich will aber meinen space net mit den dateien zumüllen, deshalb frag ich wann die gelöscht werden. wenn ich mich auslogge, dann wird die jeweilige datei wieder gelöscht, wenn die timelife abläuft und ich mich somit net auslogge, bleibt das ding bestehen.

feuervogel
24.04.2004, 18:14:47
ich glaub du verwechselst da was. ein cookie wird nicht aufm server gespeichert. die session-daten allerdings schon. so wie ich es bereits geschrieben habe, musst du dazu schauen, was in der php-info-datei steht, unter der direktive "session.gc-maxlifetime" oder so ähnlich. nach dieser zeit in sekunden werden die session-daten auf dem server gelöscht.

Herr-Zinfarkt
24.04.2004, 18:20:05
ok right, hab dat mim cookie verwechselt! THX

aber in der php.ini hab ich "session.gc-maxlifetime" so eingestellt wie ichs ham wollte. habs halt =10 gesetzt, damit ichs innerhalb von 10 sek testen konnte. aber die datei der session im tmp-ordner löscht er halt net raus wenn die 10 sek abgelaufen sind.

meikel (†)
25.04.2004, 00:37:06
Original geschrieben von Herr-Zinfarkt
>sry versteh deine frage net!!???

Geht mir genauso, da Deine Frage ungefähr die Qualität hatte:
"Ich habe ein Auto mit vier Rädern. Warum fährt es nicht?"

>falls des sehen willst, hier die zwei-funktionen zum ein und ausloggen:

Sowas:

function s_start()
{
@session_start();
$_SESSION["Benutzername"]=$_POST["Benutzername"];
$_SESSION["Kennwort"]=$_POST["Kennwort"];
$_SESSION["sid"]=session_id();
};

ist sehr schlecht, wenn das Script zB. auf einem Server mit gemeinsamen session.save_path läuft. Im Weiteren ist es auch Nonsens, die Session_id mit abzuspeichern, weil die Session_id bekannt sein muß, um die Session wieder aufnehmen zu können. Aber es gibt ja auch Buchhalter, die den Reserverschlüssel für den Tresor im Tresor einschließen.

Das:

function s_ende()
{
unset($_SESSION["Benutzername"]);
unset($_SESSION["Kennwort"]);
unset($_SESSION["sid"]);
session_destroy();
};

solltest Du auch mal etwas überdenken. Hier reicht ein:
$_SESSION = array();
session_write_close();
header ('Location: http://'.$_SERVER['SERVER_NAME'].'/index.php');
exit;

>das problem is nur,
>wie ich erkennen kann wann eine session ungültig ist
$_SESSION['ist_gueltig'] = false; # oder sonstwas...

>und wann eine ungültige session gelöscht wird (alles bezieht sich
>darauf, das die session dadurch ungültig wird, dass die lifetime
>abgelaufen ist!!)

Du solltest mal Dein Verständnis für den PHP Session-Mechanismus durch etwas Handbuch- und FAQ-Lesen vertiefen:

29. Sessions
http://www.dclp-faq.de/ch/ch-version4_session.html

XCVI. Session Funktionen
http://www.php.net/manual/de/ref.session.php

Eine Session ist so lange gültig, wie PHP ein zur Session_id passendes Session File findet. Es liegt an Dir, was PHP in dem File für Daten vorfindet, wenn Du bzw. Dein Script die Session vor der Müllentsorgung als ungültig erklärt hast, und wie Dein Script darauf reagiert.

Herr-Zinfarkt
25.04.2004, 21:00:21
thx, dat hat mir einiges gebracht, denk so wird dat dann auch hin hauen!

Vielen Dank nochmal, manchmal sind die andren halt schlauer ;-)