if (is_expired()) { // return $_SESSION['expire'] < time();
logout(); // $_SESSION = ['msg' => 'logged out'];
} else {
enlarge_your_session(); // $_SESSION['expire'] = time() + SESSION_TIME_LIMIT;
}
Как удалить сессию залогиненного пользователя при закрытии вкладки/окна браузера?- вопрос слегка бессмысленный, потому что у вас нет технической возможности узнать закрылась вкладка, или нет.
const meta = [
{name: '%cпервый', style: 'color: red'},
{name: ' %cвторой', style: 'color: green'},
{name: ' %cтретий', style: 'color: blue'},
];
function Operation(counter) {
counter--;
const callMeta = meta[2-counter];
console.log(callMeta.name, callMeta.style, "A:", counter);
if (counter != 0) {
console.log(callMeta.name, callMeta.style, "IF сработал, идем глубже");
Operation(counter);
}
console.log(callMeta.name, callMeta.style, '(продолжение)', "B:", counter);
}
Operation(3);
1. уменьшить счетчик (стало 2)
2. вывести в консоль А:2
3. проверить не равен ли счетчик нулю (и если не равен, а так и есть)
4. выполнить Operation(2)
// в этот момент у вас на столе еще осталась инструкция "вывести в консоль В:2" но вы не можете ее выполнять прямо сейчас
// вы добавляете ПОВЕРХ этой инструкции еще одну пачку, которая соответствует Operation(2)
5. Уменьшить счетчик (стало 1)
6. вывести в консоль А:1
7. проверить не равен ли счетчик нулю (и если не равен, а так и есть)
8. выполнить Operation(1)
// в этот момент у вас на столе еще осталась инструкция "вывести в консоль В:1" но вы не можете ее выполнять прямо сейчас
// а еще ниже, под ней, все еще лежит картонка "вывести в консоль В:2"
// но вы добавляете ееще пачку
9. уменьшить счетчик (стало 0)
10. вывести в консоль А:0
11. проверить не равен ли счетчик нулю (ура, он равен!)
12. вывести В:0
13. и вы добрались до картонки с предыдущей стопки "вывести В:1"
14. и вот последняя картонка "вывести В:2"
function Operation(counter) {
counter--;
let call = 'вызов '.padStart((3-counter) * 4) +
'третий,второй,первый'.split(',')[counter];
console.log(call, "A:", counter);
if (counter != 0) {
console.log(call, "IF сработал, идем глубже");
Operation(counter);
}
console.log(call, '(продолжение)', "B:", counter);
}
Operation(3);
file://www.youtube.com/embed/eoTpdTU8nTA