Рассуждение к первой задаче не является доказательством. Сечения не параллельные основанию конуса являются не являются окружностями (эллипс, парабола, гипербола, ничего, но не окружность)
Они же не могут отозвать лицензии на предыдущие версии. Получается, что под новую лицензию попадают только изменения между текущей версией и последней открытой.
Кончилось время куки — сессия истекла. Кончилось время сессии — сессия истекла. В обоих случаях стартанётся новая сессия и Вы не узнаете(если, конечно, не использовать свой хендлер) какая была предыдущая сессия и была ли она вообще.
Плохо в том, что вы это проверяете в функции с названием startSession. И то, что если сессия действительно(а не по Вашим хитрым алгоритмам) закончится Вы не узнаете истекла сессия или просто началась новая.
И ещё вспомнил. С Вашим подходом можно попасть на форму входа со страницы с гостевым доступом, если долго отсутствовал на сайте.
Ну вот. Видите, Вам даже не нужно проверять сессию дополнительно: 401 на форме логона — неправильный вход, 401 на внутренних страницах — время сессии истекло.
Вот видите. Вы даже код возвращаете 401, что обозначает «неавторизован». Что обозначает, что пользователь просто неавторизован. И не важно истекла у него сессия или она только что началась. В любом случае он просто неавторизован. Нет дополнительного кода 488 «неавторизован, потому что время сессии истекло только что».
Коротко выскажу своё мнение: есть два статуса пользователя: либо он авторизован, либо нет. Не должно быть чего-то промежуточного.
function startSession() {
// установка параметров сессии
session_start();
if (!session_id())
throw new Exception('Сессия не может быть запущена (либо сервер гонит, либо что-то не так с кодом)');
}
И ещё, по идее соль должна быть случайной.
И ещё вспомнил. С Вашим подходом можно попасть на форму входа со страницы с гостевым доступом, если долго отсутствовал на сайте.
Ну вот. Видите, Вам даже не нужно проверять сессию дополнительно: 401 на форме логона — неправильный вход, 401 на внутренних страницах — время сессии истекло.
Коротко выскажу своё мнение: есть два статуса пользователя: либо он авторизован, либо нет. Не должно быть чего-то промежуточного.