summaryrefslogtreecommitdiff
path: root/include/sessions.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-03-05 21:14:35 +0300
committerAndrew Dolgov <[email protected]>2021-03-05 21:14:35 +0300
commit2b8b845abe7c13ecbb266613910484310cffe8e1 (patch)
tree90bd2e93737c2aad17cfb09496cc57cf3f9968cd /include/sessions.php
parentb2341679d53b227fc90fba34c3a7e6453e3cad6e (diff)
* use ORM for trivial queries
* environment-based configuration * useradm.php -> update.php with new options * support for schema migrations * various fixes
Diffstat (limited to 'include/sessions.php')
-rw-r--r--include/sessions.php48
1 files changed, 48 insertions, 0 deletions
diff --git a/include/sessions.php b/include/sessions.php
new file mode 100644
index 0000000..b39a983
--- /dev/null
+++ b/include/sessions.php
@@ -0,0 +1,48 @@
+<?php
+ require_once "common.php";
+
+ if (Config::is_server_https())
+ ini_set("session.cookie_secure", "true");
+
+ ini_set("session.name", "epube_sid");
+ ini_set("session.use_only_cookies", "true");
+ ini_set("session.gc_maxlifetime", Config::get(Config::SESSION_LIFETIME));
+ ini_set("session.cookie_lifetime", Config::get(Config::SESSION_LIFETIME));
+ session_set_cookie_params(Config::get(Config::SESSION_LIFETIME));
+
+ session_save_path(dirname(__DIR__) . "/sessions");
+
+ function validate_session() {
+ if (!empty($_SESSION["owner"])) {
+
+ $user = ORM::for_table('epube_users')
+ ->where('user', $_SESSION['owner'])
+ ->find_one();
+
+ if ($user && sha1($user->pass) == $_SESSION['pass_hash']) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function logout_user() {
+ if (session_status() == PHP_SESSION_ACTIVE) {
+ session_destroy();
+
+ if (isset($_COOKIE[session_name()])) {
+ setcookie(session_name(), '', time()-42000, '/');
+ }
+
+ session_commit();
+ }
+ }
+
+ register_shutdown_function('session_write_close');
+
+ if (isset($_COOKIE[session_name()])) {
+ if (session_status() != PHP_SESSION_ACTIVE)
+ session_start();
+ }
+?>