WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 15.05.2017 18:45:58

annalena3030
Mitglied

Timeout im Backend

Hallo zusammen,

ich weiß diese Thema wurde 2016 schon einmal erörtert.

Gibt es denn überhaupt keine Möglich, dass ein Hinweis angezeigt wird, wenn die Anmeldung abläuft?
Ich bin jetzt schon öfter abgemeldet worden, wärend der Arbeit. Das ist sehr ärgerlich sad

Danke und schöne Grüße von hier und mir, annalena3030

Offline

#2 15.05.2017 18:58:23

florian
Administrator

Re: Timeout im Backend

Das Problem ist bekannt, aber erfordert leider tiefgreifende Änderungen ins Session Management. Ein Hinweis, wann die Anmeldung abläuft, würde auch wenig bringen. Der Timeout steht von Haus aus auf 3 Tage oder so, aber leider entscheidet die Servereinstellung darüber, wann die Sitzung ungültig wird. Oft genug passiert das sogar vor der Zeit aus heiterem Himmel.

Es ärgert mich auch, und mir passiert das auch regelmäßig, aber ich fürchte, bis auf weiteres hilft nur, vor jedem Speichern größerer Änderungen sicherheitshalber Strg-A / Strg-C zu drücken, um für den Fall der (Raus-)Fälle den Text wenigstens in der Zwischenablage zu haben.

Auch dieses Forum hier ist übrigens vor derartigen Ausfällen nicht gefeit...


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

annalena3030, thanks

#3 15.05.2017 19:05:34

annalena3030
Mitglied

Re: Timeout im Backend

florian schrieb:

Das Problem ist bekannt, aber erfordert leider tiefgreifende Änderungen ins Session Management. Ein Hinweis, wann die Anmeldung abläuft, würde auch wenig bringen. Der Timeout steht von Haus aus auf 3 Tage oder so, aber leider entscheidet die Servereinstellung darüber, wann die Sitzung ungültig wird. Oft genug passiert das sogar vor der Zeit aus heiterem Himmel.

Es ärgert mich auch, und mir passiert das auch regelmäßig, aber ich fürchte, bis auf weiteres hilft nur, vor jedem Speichern größerer Änderungen sicherheitshalber Strg-A / Strg-C zu drücken, um für den Fall der (Raus-)Fälle den Text wenigstens in der Zwischenablage zu haben.

Auch dieses Forum hier ist übrigens vor derartigen Ausfällen nicht gefeit...

Danke @florian cry

Offline

#4 15.05.2017 19:19:41

florian
Administrator

Re: Timeout im Backend

<offtopic>
Eine Bitte: Könntest Du bitte auf die Fullquotes verzichten, wenn Du direkt auf ein darüber stehenden Beitrag antwortest? Das macht so einen Forenthread sonst etwas unübersichtlich.
</offtopic>

Ich behalte das Problem mit den verlorenen Sessions auf jeden Fall schon aus ureigenem Interesse im Hinterkopf. Vielleicht fällt mir oder jemandem aus der Community ja ein Workaround ein.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#5 15.05.2017 19:38:42

annalena3030
Mitglied

Re: Timeout im Backend

@florian.

mach ich. thumb_up

Offline

Liked by:

florian

#6 16.05.2017 15:17:17

florian
Administrator

Re: Timeout im Backend

Also, folgender erster Workaround:

1) System information installieren und aufrufen (ADmintools > System information), dort auf den Reiter "PHP Info" gehen.

2) Den Wert "gc_maxlifetime" heraussuchen. Maßgeblich ist der Master Value. Auf einer Seite, bei der ich das gerade teste, liegt er bei 1440 Sekunden.

3) Mit dem AFE oder per FTP + HTML-Editor die /templates/advancedThemeWbFlat/templates/header.htt öffnen.

4) Nach der Zeile

<span id="user-name">{DISPLAY_NAME}</span>

folgenden Code einfügen:

<label id="sessTi"></label>
<script type="text/javascript">

function msToTime(duration) {
    var milliseconds = parseInt((duration%1000)/100)
        , seconds = parseInt((duration/1000)%60)
        , minutes = parseInt((duration/(1000*60))%60)
        , hours = parseInt((duration/(1000*60*60))%24);

    hours = (hours < 10) ? "0" + hours : hours;
    minutes = (minutes < 10) ? "0" + minutes : minutes;
    seconds = (seconds < 10) ? "0" + seconds : seconds;

    return hours + ":" + minutes + ":" + seconds + "." + milliseconds;
}


var SessionTime=1440000;
var tickDuration=1000;
var myInterval=setInterval(function(){
    SessionTime=SessionTime-tickDuration
$("#sessTi").text(msToTime(SessionTime));
},1000);
var myTimeOut=setTimeout(SessionExpireEvent,SessionTime);
$("input").click(function(){
clearTimeout(myTimeOut);
    SessionTime=10000;
 myTimeOut=setTimeout(SessionExpireEvent,SessionTime);
});

function SessionExpireEvent()
{ clearInterval(myInterval);
    
    alert("Session expired");
}
</script>

In obigem Codebeispiel ggf. den Wert

var SessionTime=1440000;

an die Begebenheiten anpassen, sprich an den abgelesenen Wert drei Nullen dranhängen.

Dann hat man unterhalb des Anmeldenamens einen Timer, der anzeigt, wie viel Zeit noch verbleibt, und wenn die Zeit verstrichen ist, kommt ein JS-Alert. Ist zwar nicht optimal, und schützt niht vor willkürlichen Sessionverlusten vor der Zeit, ist aber besser als nichts.

Analog lässt sich das natürlich auch ins Argos (Reloaded) irgendwo einbauen.

Beitrag geändert von florian (16.05.2017 15:53:50)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

annalena3030

#7 16.05.2017 15:51:40

bernd
Developer

Re: Timeout im Backend

Fehlt in deinem Beispiel nicht noch ein Platzhalter für #sessTi für die Ausgabe?
Oder bin ich grade blind oder blöd oder beides?


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#8 16.05.2017 15:54:07

florian
Administrator

Re: Timeout im Backend

ist oben ergänzt, danke, hatte ich vergessen


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#9 16.05.2017 16:00:03

bernd
Developer

Re: Timeout im Backend

Beim Argos-Reloaded würde sich als Einhängepunkt die Zeile anbieten:

<p class="loged-in-as">{LOGGED_IN_AS}: {DISPLAY_NAME}</p>

Ändern in:

<p class="loged-in-as">{LOGGED_IN_AS}: {DISPLAY_NAME} [<span id="sessTi"></span>]</p>

Und direkt drunter das Script einbinden.


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

florian

#10 16.05.2017 22:08:28

bernd
Developer

Re: Timeout im Backend

Habe grade nochmal bischen rumgespielt.
Auf die Anzeige der Millisekunden könnte man verzichten, bei einer tickDuration=1000 steht die eh immer auf 0.

Dann könnte man noch die Anzeige bei x-Minuten (im Beispiel 3 Minuten) vor Ablauf auf rot umschalten:

var myInterval=setInterval(function() {
	SessionTime=SessionTime-tickDuration
	$("#sessTi").text(msToTime(SessionTime));
	if (SessionTime < 180000) {
		$("#sessTi").css("color", "red");
	}
},1000);

oder gar blinken lassen:

var myInterval=setInterval(function() {
	SessionTime=SessionTime-tickDuration
	$("#sessTi").text(msToTime(SessionTime));
	if (SessionTime < 180000) {
		if ((SessionTime/1000)%2 == 0) {
			$("#sessTi").css("color", "red");
		} else {
			$("#sessTi").css("color", "");
		}
	}
},1000);

Dann noch 'ne Verständnisfrage:
Wäre es nicht sinnvoller den Timeout-Wert vom SecureFromSwitcher zu nehmen?
So weit ich das verstehe wird doch die gc_maxlifetime in der initialize.php mit diesem Wert überschrieben:

ini_set('session.gc_maxlifetime', WB_SECFORM_TIMEOUT);

... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

florian

#11 17.05.2017 05:02:36

florian
Administrator

Re: Timeout im Backend

Die Rot-Einfärbung ist gut (sollte im Advanced wegen Lesbarkeit dann vlt eher gelb - oder rot auf weißem Hintergrund - sein).

Wäre es nicht sinnvoller den Timeout-Wert vom SecureFromSwitcher zu nehmen?
So weit ich das verstehe wird doch die gc_maxlifetime in der initialize.php mit diesem Wert überschrieben

Schön wär's, aber zumindest bei mir hat da der Server das letzte Wort. Der Timeout des SecForm steht per Default auf 7200 Sekunden, was einfach ignoriert wird, bei Alfahosting ist z.B. nach 1440 Sekunden Schluss, egal, ob man 2 Stunden oder 2 Jahre als SecTime einstellt.

Allerdings werden *kleinere* Werte durchaus übernommen, insofern also Korrektur:

Den Wert

var SessionTime=1440000;

je nachdem, welcher Wert kleiner ist, entweder an die bei "Secure Form Switcher" hinterlegte Zeit (Standard 7200 Sekunden) _oder_ an gc_maxlifetime anpassen.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#12 17.05.2017 13:06:10

florian
Administrator

Re: Timeout im Backend

Hm, ist glaube ihc doch nutzlos. Ich war jetzt ein paar mal laut Timer abgemeldet, und dann klicke ich irgendwo, und bin trotzdem noch drin; umgekehrt bin ich heute schon wieder 2x vor der Zeit rausgeflogen. Völlig erratisch!
Da bringt dann auch der Timer nichts, das muss dringend grundsätzlich angegangen werden.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#13 17.05.2017 13:37:09

grindbatzn
Gast

Re: Timeout im Backend

Ich bin ja wahrhaftig kein Javascript-Guru

Aber so irgendwie frage ich mich da: Was zeigt dieses Script eigentlich an?
Die Zeit seit dem Seitenaufruf? Die hat ja nichts zu tun mit der Session.
Mir fehlt - aber kann leicht sein, dass ich es nur nicht kapiert habe - etwas, wo der Start der Session gespeichert ist.

Wohl etwas mit localstorage oder ein Cookie. Oder kommt das per PHP irgendwo rein?

Falls ich zu blöd war: bitte einfach anmerken.

#14 17.05.2017 13:41:43

florian
Administrator

Re: Timeout im Backend

Das Script zieht von der Cookie-Lifetime (oder einem anderen möglicherweise sinnvollen, dort hinteregten Wert) die Zeit seit dem letzten Neu Laden einer Seite an. De facto hat das leider nichts mit der tatsächlichen Session zu tun, das stimmt schon. Es ist also eh nur Placebo, aber ich hatte gestern gehofft, wenigstens einen halbwegs gangbaren Workaround gefunden zu haben.
Die Session wird afaik immer wieder beim Neu Laden / Aufrufen einer Seite erneuert, aber auch das ist offenbar nicht so.

Das ist alles ziemlicher Mist und es ist mir auch reichlich peinlich.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#15 17.05.2017 14:17:01

bernd
Developer

Re: Timeout im Backend

Ich kapiers grade überhaupt nicht mehr,
auf meiner lokalen Kiste ist gc_maxlifetime lt. phpinfo() 1440
wenn ich mir gc_maxlifetime in einer WBCE-Installation mittels ini_get ausgeben lasse sind es 7200 (also der Wert aus dem Secure Form Switcher).

Wenn ich ganz normal "rumbastel" bin ich mal nach 'ner halben oder dreiviertel Stunde immer noch eingelogt, anderes mal flieg ich schon deutlich früher raus, wieder ein anderes Mal bleibe ich "ewig" lang eingeloggt, auch wenn ich gar nichts im Backend mache ...

Sitzt da irgend jemand mit 'nem Würfelbecher im Server  lol


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#16 17.05.2017 14:18:40

grindbatzn
Gast

Re: Timeout im Backend

Schon etwas älter:
http://stackoverflow.com/questions/5202 … 30-minutes

Da steht, dass eine Session dann verlängert wird, wenn das Cookie verändert wird. Nicht, wenn nur darauf zugegriffen wird.
Wird gelegentlich etwas verändert daran? zB beim Speichern einer Seite?

#17 17.05.2017 15:46:44

screamindan
Mitglied

Re: Timeout im Backend

Übrigens wenn man in der Medienverwaltung is und rausfliegt, kommt das Anmeldefenster in dem kleinen Fenster, wo man die Bilder sieht...

Offline

#18 17.05.2017 15:51:11

grindbatzn
Gast

Re: Timeout im Backend

Vorab: Es gibt ja nur wenige Leute, die noch weniger Ahnung von Cookies haben als ich...

Sobald man eine WBCE-Seite aufruft, bekommt man ein Session-Cookie. Jeder, auch ohne angemeldet zu sein. Auch Bots. Da Bots keine Cookies akzeptieren, bekommt der Bot bei jedem Seitenaufruf ein neues Cookie. (Das alte bleibt)
(Ist das so? - glaub schon)

Die Gesamt-Zahl der Cookies ist nicht unbegrenzt; ich hatte schon mal das Problem, dass man sich nicht mehr anmelden konnte, weil das Maximum erreicht war.
Es würde mich daher nicht wundern, wenn "plötzlicher Cookie-Tod" auf sowas zurückzuführen ist. Dass etwa ältere Cookies gelöscht werden, noch bevor sie ablaufen. 
Dann ist die maximale Verlängerung der Lebenszeit eher kontraproduktiv - weil die gilt ja für alle, auch Besucher und Bots.

screamindan schrieb:

Übrigens wenn man in der Medienverwaltung is und rausfliegt, kommt das Anmeldefenster in dem kleinen Fenster, wo man die Bilder sieht...

Ja, Klar: Weils das ein iFrame ist. Ist auch bei anderen Modulen so, und auch wenn Daten per AJAX geladen werden.

Beitrag geändert von grindbatzn (17.05.2017 15:52:44)

#19 17.05.2017 15:57:47

bernd
Developer

Re: Timeout im Backend

@Chio:
O.k. ich bin dann wohl einer der wenigen Leute ;-)
Deine Ausführungen klingen eigentlich plausibel.
Nur ... auf meinem Localhost kommen keine Bots vorbei (sicher!) und trotzdem habe ich dieses nicht wirklich nachvollziehbare Verhalten.


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#20 17.05.2017 16:01:56

florian
Administrator

Re: Timeout im Backend

Es gibt einen weiteren Thread dazu
https://forum.wbce.org/viewtopic.php?id=203

Edit 11.06.17 - Link korrigiert

Beitrag geändert von florian (11.06.2017 06:16:17)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#21 18.05.2017 13:24:20

annalena3030
Mitglied

Re: Timeout im Backend

@florian
..hab ich gemacht.
Sitzt jetzt bei mir auf 15 Stunden  big_smile   big_smile  big_smile
Bin mal gespannt obe es wirklich funzt.

Danke dafür florian. Grüße von hier und mir.

Nachtrag: 18.5 / 15:00 Uhr:
habe festgestellt, dass sich der der Timer nach ca. 30 Minuten wieder auf 15 Stunden zurückzetzt obwohl ich noch angemeldet bin.

Beitrag geändert von annalena3030 (18.05.2017 14:05:29)

Offline

#22 07.06.2017 11:59:59

better-work
Mitglied

Re: Timeout im Backend

@florian

Es gibt einen weiteren Thread dazu
https://forum.wbce.org/viewtopic.php?id=744

Nö, da steht der Link sei ungültig...


Gruß Jörg

Offline

#23 07.06.2017 12:42:52

colinax
Developer

Re: Timeout im Backend

better-work schrieb:

@florian

Es gibt einen weiteren Thread dazu
https://forum.wbce.org/viewtopic.php?id=744

Nö, da steht der Link sei ungültig...

Das dürfte daran liegen, dass die Putze (ich) einwenig aufgeräumt hat.

der neue Link müsste dieser hier sein.

Beitrag geändert von colinax (07.06.2017 12:43:49)

Offline

Liked by:

better-work

#24 08.06.2017 10:49:23

webbird
Administrator

Re: Timeout im Backend

Ähm, nochmal als Erinnerung: Cookie und Session haben jeweils EIGENE Timeouts. Wenn der Cookie 3 Stunden hat, die Session aber nur 30 Minuten, kann der Cookie noch gültig sein, die Session aber schon nicht mehr. Daher sollte die Cookie-Lifetime immer die gleiche sein wie die Session-Lifetime.

Irgendwo hatte ich auch schon mal Code aus BC gepostet, der funktioniert bei uns ziemlich zuverlässig. Samt Sessiontimer im BE und Wiederanmelde-Option ohne Datenverlust.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

Liked by:

annalena3030

#25 08.06.2017 11:03:14

berny
Mitglied

Re: Timeout im Backend

Mal ein anderer Denkansatz:
ist es nicht möglich, mittels javscript einen Aufruf an den Server zu stellen, der die Session dann jedesmal verlängert?

Das könnte im Hintergrund laufen.
Nachteil, die Session bleibt aufrecht solange dieses Fenster im Browser geöffnet ist.

Oder dieses in den editor selber einbauen?

Offline

Liked by:

better-work, annalena3030

Fußzeile des Forums

up