Форумы / National / Russian / Тех. поддержка / Maintenance mode

Kopusha
#1 28.03.2020 11:49

Бьюсь над такой задачкой. Если включен режим отладки (Maintenance mode) то показывает страницу логина с указанием что он включен тем пользователям что хотят войти на сайт. Пускает также только те группы, что прописаны в конфиге, 

if ($cfg['maintenance'] && !defined('COT_INSTALL'))
{
	$sqll = $db->query("SELECT grp_maintenance FROM $db_groups WHERE grp_id='".$usr['maingrp']."' ");
	$roow = $sqll->fetch();

	if (!$roow['grp_maintenance'] && !defined('COT_AUTH'))
	{
		cot_redirect(cot_url('login'));
	}
}

Но проблема в том, что этот режим может быть включен на уже работающем сайте с пользователями, для тех что пришли - будет информация что сайт в Maintenance mode и время даже когда это кончится. 
А вот для тех кто уже на сайте на момент включения - начинается цикл редиректов, в итоге они получают ошибку браузера (например The page isn’t redirecting properly или This problem can sometimes be caused by disabling or refusing to accept cookies.)

Не могу понять как сделать так что бы при обновлении любой страницы если пользователь уже на сйте его сначала разлогинивало и лишь затем начинался стандартный функционал Maintenance mode.

Естественно если сделать 

if (!$roow['grp_maintenance'] && !defined('COT_AUTH'))
	{
		cot_redirect(cot_url('login', 'out=1&' . cot_xg()));
	}

так же будет Request parameters error
One of the request parameters is invalid or has expired. Please go back and try submitting the form again. 
Пользователь не получает внятное сообщение что надо подожать а думает что сайт накрылся коронавирусум.
Подскажите как лучше поправить такую проблему.   

Added 1 hour later:

UPD сделал так

if ($cfg['maintenance'] && !defined('COT_INSTALL'))
{
	$sqll = $db->query("SELECT grp_maintenance FROM $db_groups WHERE grp_id='".$usr['maingrp']."' ");
	$roow = $sqll->fetch();

	if (!$roow['grp_maintenance'] && !defined('COT_AUTH'))
	{
		if ($usr['id'] > 0)
		{
			$db->update($db_users, array('user_sid' => ''), "user_id = " . $usr['id']);
		}
		else 
		{
			if (!$roow['grp_maintenance'] && !defined('COT_AUTH'))
			{
				cot_redirect(cot_url('login'));
			}
		}
	}
}

 

Отредактировано: Kopusha (28.03.2020 13:10, 4 года назад)