Online Shop Veyton Login Timeout verlängern

Die Dauer eines Logins wird im Veyton durch die serverseitige Verfallszeit der Session bestimmt. Wer keinen Zugriff auf die php.ini hat, kann mit etwas Javaskript die Session „fast ewig“ aufrecht erhalten, eine Zwangstrennung durch den Provider ausgenommen.

Durch die folgenden Änderungen am Online Shop Veyton wird die Session alle 5 Minuten erneuert. Und natürlich muss Javaskript auf dem Clientrechner aktiviert sein.

1. Datei „templates/templatename/js.php“ ergänzen:

<script language="Javascript">

function startRenewSession(){
  window.setInterval("renewSession();", 300000);
}
function renewSession(){
  params = "session_hold=yes";
  var myAjax = new Ajax.Request(
    "session_hold.php", {
      method: 'get',
      parameters: params,
      onComplete: zeige_session_ergebnis }
  );
}
function zeige_session_ergebnis(originalRequest) {
  var dummy = originalRequest.responseText;
}
</script>

2. Datei „xtCore/display.php“ modifizieren:

Suche: <body>
Erstetze: <body onload=“startRenewSession();“>

3. Datei „session_hold.php“ mit folgendem Inhalt im Stammverzeichnis anlegen:

<?php
  $session_param = $_GET['session_hold'];
  if($session_param == "yes"){
    session_start();
    echo "Session okay";
  }
?>

4. Erläuterung:

Beim Laden der Seite wird durch <body onload=“startRenewSession();“> die Funktion „startRenewSession()“ aufgerufen. Diese ruft im Abstand von 5 Minuten die Funktion „renewSession()“ auf, wobei ein Ajaxrequest auf die Datei „session_hold.php“ gestartet wird. Und schließlich wird in der „session_hold.php“ die Session durch „session_start()“ aktualisiert, wodurch die Session Lifetime erneuert wird.

5. Jquery Umsetzung – Nachtrag

<script language="Javascript" type="text/javascript">
$(document).ready(function() {
    srnS();
    function srnS(){
        window.setInterval("rnS();", 300000);
    }
});

function rnS(){
    //with done(function) - at least jQuery 1.5 for jqXHR objects
    /*$.get("session_hold.php", { session_hold: "yes"}).done(function(data) {
        alert("Return " + data);
    });*/

    //instead use success: function(data) for older jQuery versions
    $.ajax({
        type: "POST",
        url: "session_hold.php",
        data: { session_hold: "yes" },
        success: function(data) {
            //alert("Return " + data);
        }
    });
}
</script>

PHP-File -> session_hold.php:

<?php
  /*Session aufrecht erhalten*/
  $session_param = $_POST['session_hold'];
  if($session_param == "yes"){
      session_start();
      echo "Session okay";
  }
?>

2 Gedanken zu „Online Shop Veyton Login Timeout verlängern

  1. Sandro

    Funktioniert wunderbar. Sogar am nächsten Tag nach ca. 12 Stunden immer noch als Kunde angemeldet, sonst war ein Kunde nach 5 bis 10 Minuten immer abgemeldet. Mercy

Schreibe einen Kommentar