function nach scriptende

  • Themenstarter Themenstarter psycotis
  • Beginndatum Beginndatum
P

psycotis

hi,

so nachdem ich nun alle php channels im q-net durchforstet und nach zahlreichen alleinigen versuchen zwar die werte von ignore_user_abort() in der php ini verändern kann, komme ich trotzdem nicht weiter.

hier nochmal kurz mein problem:

ich will das wenn ein user den internet explorer schließt eine function aufgerufen wird die alle sessiondateien inklusive der session löscht.

mein code(liefert keine errormessage):

PHP:
// die klasse ist in einer durch require_once eingebunden datei.

class sessionhandler {
  function unreg() {
	foreach($_SESSION as $value) session_unregister($value);
  }
  function kill() {
    if(connection_aborted()) {
      $this->unreg();
      session_unset();
      $file = session_save_path(). "sess_" . session_id();
      @session_destroy();
      unlink($file);
	}
  }
}

//folgend die seite (in auszügen die wichtig sind):
$shutdown = new sessionhandler;
ini_set("ignore_user_abort","1");
ignore_user_abort();
register_shutdown_function("$shutdown->kill");

denjenigen der sich denkt, dass es nicht geht da mein befehl zum aufrufen der instanz der klasse in register_shutdown_function falsch sei, sei gesagt das ich es auch ohne klasse und nur mit functionen probiert habe und es auch nicht geht (wiederum ohne error message).

falls jemand in irgendeiner weisse helfen kann bitte antwortet mir.
es muss auch nciht mit einer klasse sein sondern kann auch nur mit functionen sein, völlig egal. ich schreibe die klasse dann schon so wie ich sie brauche

mfg
 
Meines Wissens nach wird die Session automatisch beim schließen des Browsers geschlossen. Nun weiß ich nicht, ob du es willst, dass sie zerstört wird, wenn ein anderes Fenster mit der gleichen Session ( wenn sowas möglich ist) geofnet ist.

Verstehst du?
 
ja sie soll zerstört werden...
wie übrigens aus dem code hervorgeht :)

ach ja und solange du die sessiondatei nicht löscht kann mann immer noch auf die session zugreifen, solange man die session_id kennt
 
Wie wär's denn mit [phpf]session_destroy[/phpf]?

P.S.: Achte bei deinen nächsten Beiträgen doch bitte auf die Netiquette §12, danke.
 
ok.

Eine Frage: Lest ihr den Code überhaupt?.

Ich benütze session_destroy().
 
Wenn die Session-Cookie-Lifetime in der php.ini auf 0 ist, wird die Session zerstört, wenn der Browser geschlossen wird.

Ansonsten vor Session-Start:

PHP:
session_set_cookie_params(0);
 
Doch wir lesen ihn (ich zumindest)

Wenn du die session unbedingt zerstören willst, würde ich das mit javascript machen bei document.clode(Gibt's diese Funktion?) würde ich dann probieren die session_destroy()-Funktion einzubauen.
 
Ich habe gerade in meine PHP ini geschaut und der Wert ist auf 0 gesetzt.
Wenn ich das Browserfenster schließe und die Session erneut versuche aufzurufen geht dies nicht. Also schon einmal dankeschöen :)

Nun aber noch eine Frage: Wird die Session auch gelöscht wenn ich das Fenster nicht schließe und in dem gleichen Fenster auf eine andere Seite zugreife?

Ich habe das letztere nun auch probiert und es geht, sprich ich kann die session datein nicht aufrufen, außer ich habe einen Fehler in meinem Code.

Naja wers sicher weiß bitte posten.

mfg
 
Zuletzt bearbeitet von einem Moderator:
Nein

Wenn du z.B. ein Login mit einer Session machst kannst Du dich auf deiner Hp bewegen wie du lustig bist, Du bleibst eingeloggt.
 
sry, ja is klar. wozu wären sessions sonst auch da :).

bin glaub ich grad am ende meiner Konzentration angekommen. versuche schon den ganzen Tag die sache mit der register_shutdown_function.

was übrigens, immer noch nicht functioniert.

Frage: wieso führt er die mit register_shutdown_function() angegebene function nicht aus wenn ich den browser schließe. Als ich vorher mit jemandem geredet habe meinte er, dass PHP nur überprüft ob der connection_status noch "normal" ist wenn es etwas an den Browser sendet. Wenn das stimmt müsste ich doch eine enlos-loop Function schreiben welche immer ein echo und die überprüfung des connection status durchführt. Aber wenn das stimmt, wo sollte dieser Loop dann rein; in die in register_shutdown_function() angegebene function oder einfach vorher im code?

Bitte eure meinung dazu.
 
Zurück