stop caching schema version entirely, fix some session_start() related warnings

This commit is contained in:
Andrew Dolgov 2021-02-25 15:28:27 +03:00
parent 1464abbbfc
commit efd196839a
6 changed files with 20 additions and 20 deletions

View File

@ -23,7 +23,7 @@
if (!empty($_REQUEST["sid"])) { if (!empty($_REQUEST["sid"])) {
session_id($_REQUEST["sid"]); session_id($_REQUEST["sid"]);
@session_start(); session_start();
} }
startup_gettext(); startup_gettext();

View File

@ -59,8 +59,12 @@ class API extends Handler {
} }
function login() { function login() {
@session_destroy();
@session_start(); if (session_status() == PHP_SESSION_ACTIVE) {
session_destroy();
}
session_start();
$login = clean($_REQUEST["user"]); $login = clean($_REQUEST["user"]);
$password = clean($_REQUEST["password"]); $password = clean($_REQUEST["password"]);

View File

@ -390,7 +390,8 @@ class Handler_Public extends Handler {
} else { } else {
// start an empty session to deliver login error message // start an empty session to deliver login error message
@session_start(); if (session_status() != PHP_SESSION_ACTIVE)
session_start();
if (!isset($_SESSION["login_error_msg"])) if (!isset($_SESSION["login_error_msg"]))
$_SESSION["login_error_msg"] = __("Incorrect username or password"); $_SESSION["login_error_msg"] = __("Incorrect username or password");

View File

@ -87,7 +87,9 @@ class UserHelper {
$pdo = Db::pdo(); $pdo = Db::pdo();
if (Config::get(Config::SINGLE_USER_MODE)) { if (Config::get(Config::SINGLE_USER_MODE)) {
@session_start(); if (session_status() != PHP_SESSION_ACTIVE)
session_start();
self::authenticate("admin", null); self::authenticate("admin", null);
startup_gettext(); startup_gettext();
self::load_user_plugins($_SESSION["uid"]); self::load_user_plugins($_SESSION["uid"]);

View File

@ -305,22 +305,14 @@
return $s ? 1 : 0; return $s ? 1 : 0;
} }
// Session caching removed due to causing wrong redirects to upgrade function get_schema_version() {
// script when get_schema_version() is called on an obsolete session
// created on a previous schema version.
function get_schema_version($nocache = false) {
global $schema_version;
$pdo = Db::pdo(); $pdo = Db::pdo();
if (!$schema_version && !$nocache) {
$row = $pdo->query("SELECT schema_version FROM ttrss_version")->fetch(); $row = $pdo->query("SELECT schema_version FROM ttrss_version")->fetch();
$version = $row["schema_version"]; $version = $row["schema_version"];
$schema_version = $version; $schema_version = $version;
return $version; return $version;
} else {
return $schema_version;
}
} }
function file_is_locked($filename) { function file_is_locked($filename) {

View File

@ -152,6 +152,7 @@
if (!defined('NO_SESSION_AUTOSTART')) { if (!defined('NO_SESSION_AUTOSTART')) {
if (isset($_COOKIE[session_name()])) { if (isset($_COOKIE[session_name()])) {
@session_start(); if (session_status() != PHP_SESSION_ACTIVE)
session_start();
} }
} }