Datei löschen wenn Seite geschlossen?

...komplette Frage anzeigen

2 Antworten

Hallo!

Das problem ist, dass php-Datein nicht "geöffnet" sind, was die endung .php in Webadressen jedoch gerne suggeriert. Sie werden interpretiert. Um beim Verlassen einer bestimmten Webadresse etwas vom Server zu löschen, müsstest du eine Javascript-Abfrage tätigen, die mit einem eventListener "beforeunload" einen Serverrequest durchführt und dort dann den Löschmechanismus auslöst.

Für das "beforeunload" könntest du hiermit mal beginnen:
http://stackoverflow.com/questions/13443503/run-javascript-code-on-window-close-or-page-refresh

Die Serverrequest-Sache würde man mit Ajax lösen, hierzu kannst du einfach eine Suchmaschine deiner Wahl befragen.

Antwort bewerten Vielen Dank für Deine Bewertung
RakonDark 14.02.2016, 17:32

für den Frager sei gesagt , das PHP wird auf dem Server ausgeführt und dann das Ergebnis an den Browser gesendet , danach wird der Prozess geschlossen . Ergo, wenn die  Webseite beim Client erscheint , gibts schon gar kein PHP Prozess mehr .

0
tWeuster 14.02.2016, 17:35
@RakonDark

für den Antwortenden sei gesagt, dass dies zwar der normal ist, aber in Spezialfällen durchaus noch ein php Prozess laufen könnte.

0

Hallo BPTVEu, 

Das kannst Du über einen 'Trick' lösen.

Du baust Dir über eine Session ein User-Log. (User Online)

Dur schreibst die Session-ID und die Zeit Timestamp time()

in eine Tabelle, bei jedem Seitenaufruf wird der Timepstamp aktualsiert.

Wenn ein User jetzt z.B. eine Stunde (oder as immer Du für Sinnvoll hälst) nichts mehr angeklickt hat,

oder die SESSION abgelaufen ist, löscht Du die Datei und den Tabelleneintrag.

Am besten löst Du das mit einer MySql-Tabelle.

Geht aber auch mit einer oder mehreren TXT-Dateien.

Wenn Du denkst, das wäre eine Lösung und Du mit den Details noch nciht klar kommst, melde Dich einfach nochmal

Antwort bewerten Vielen Dank für Deine Bewertung
BPTVEu 16.02.2016, 09:57

Ok, mit Sessions bin ich noch nie klargekommen, und mit MySQL auch nicht :D Ich hab das immer über Query-Variablen und Textdateien gelöst :P

Und das andere habe ich schon gemacht. Aber wie soll ich denn die Textdatei noch löschen, wenn der User garnicht mehr auf der Seite ist?

0
Homero 16.02.2016, 16:52
@BPTVEu

:) :)

na, bevor Du die Zeile im logfile löscht.

Mysql ansprechen ist ga rnicht so schwer. Ist wircklich konfortabel und nützlich.

Du kannst das aber auch mit einer textdatei machen.

erste Zeilen in deinem Script:

session_start();

if(empty($_SESSION['user']){

$_SESSION['user']==session_id();

}

$listing=file('userlog.txt');

foreach($listing as $line){

     $buffer=split(";",$line);

     $intime=intval(trim($buffer[1]));

    $userarray[$buffer[0]]=trim($buffer[1])

    if($intime<(time()-$deinezeitspanne){

    unlink("deinezulöschendeDatei");

    unset($userarray[$buffer[0]])

    }

}

$userarray[$_SESSION['user']]=time();

und jetzt schreibst Du das Array $userarray wieder in die Datei.

SessionId;time

Prinzip verstenden?

0

Was möchtest Du wissen?