diff --git a/include/class.ostsession.php b/include/class.ostsession.php
index 94df679d2792046fda2b7373e598851f147a501b..b300f16ec7a826443e3e1fb52530a7c88bd6486b 100644
--- a/include/class.ostsession.php
+++ b/include/class.ostsession.php
@@ -69,6 +69,23 @@ class osTicketSession {
         $this->destroy($oldId);
     }
 
+    static function destroyCookie() {
+        setcookie(session_name(), 'deleted', 1,
+            ini_get('session.cookie_path'),
+            ini_get('session.cookie_domain'),
+            ini_get('session.cookie_secure'),
+            ini_get('session.cookie_httponly'));
+    }
+
+    static function renewCookie($baseTime=false, $window=false) {
+        setcookie(session_name(), session_id(),
+            ($baseTime ?: time()) + ($window ?: SESSION_TTL),
+            ini_get('session.cookie_path'),
+            ini_get('session.cookie_domain'),
+            ini_get('session.cookie_secure'),
+            ini_get('session.cookie_httponly'));
+    }
+
     function open($save_path, $session_name){
         return (true);
     }
diff --git a/include/class.usersession.php b/include/class.usersession.php
index 250f6c05fceb0a3be0a5755458162e74775517e5..9447c109f784af9273642943158019f24e2d07b4 100644
--- a/include/class.usersession.php
+++ b/include/class.usersession.php
@@ -143,12 +143,7 @@ class ClientSession extends EndUser {
         $this->token = $this->getSessionToken();
         //TODO: separate expire time from hash??
 
-        setcookie(session_name(), session_id(),
-            ($time ?: time()) + ($cfg->getClientTimeout() ?: 604800),
-            ini_get('session.cookie_path'),
-            ini_get('session.cookie_domain'),
-            ini_get('session.cookie_secure'),
-            ini_get('session.cookie_httponly'));
+        osTicketSession::renewCookie($time, $cfg->getClientSessionTimeout());
     }
 
     function getSession() {
@@ -195,12 +190,7 @@ class StaffSession extends Staff {
 
         $this->token=$this->getSessionToken();
 
-        setcookie(session_name(), session_id(),
-            ($time ?: time()) + ($cfg->getStaffTimeout() ?: 604800),
-            ini_get('session.cookie_path'),
-            ini_get('session.cookie_domain'),
-            ini_get('session.cookie_secure'),
-            ini_get('session.cookie_httponly'));
+        osTicketSession::renewCookie($time, $cfg->getStaffSessionTimeout());
     }
 
     function getSession() {
diff --git a/logout.php b/logout.php
index 11e0e11fbf02c45ee3666fabcd9805cd90dc1238..9fb8037acd458c9998c126d6d17ec533fbac7b57 100644
--- a/logout.php
+++ b/logout.php
@@ -19,11 +19,7 @@ require('client.inc.php');
 if ($thisclient && $_GET['auth'] && $ost->validateLinkToken($_GET['auth']))
    $thisclient->logOut();
 
-setcookie(session_name(), 'deleted', 1,
-    ini_get('session.cookie_path'),
-    ini_get('session.cookie_domain'),
-    ini_get('session.cookie_secure'),
-    ini_get('session.cookie_httponly'));
+osTicketSession::destroyCookie();
 
 Http::redirect('index.php');
 ?>
diff --git a/scp/logout.php b/scp/logout.php
index f51d9ed8aeb4b5f37aa5af5acac39107b3a380b8..1007d985c0bb8509514f42d55d91103571b3f965 100644
--- a/scp/logout.php
+++ b/scp/logout.php
@@ -31,11 +31,7 @@ TicketLock::removeStaffLocks($thisstaff->getId());
 session_unset();
 session_destroy();
 
-setcookie(session_name(), 'deleted', 1,
-    ini_get('session.cookie_path'),
-    ini_get('session.cookie_domain'),
-    ini_get('session.cookie_secure'),
-    ini_get('session.cookie_httponly'));
+osTicketSession::destroyCookie();
 
 @header('Location: login.php');
 require('login.php');