Некоторое форматирование сделало бы это намного проще для умственного анализа =) Плюс, вы, вероятно, могли бы упростить аспект компаний, создав множество разрешенных компаний. Тестирование по одному делает это, если () трудно поддерживать и читать - каждый раз, когда вы добавляете компанию, вы рискуете нарушить логику.
Кроме того, похоже, что если $_SESSION['LOGINTYPE'] == 'ADMIN'
, это переопределение, которое всегда должно быть истинным, в противном случае вам всегда нужно устанавливать $ _SESSION ['status'].
$companies = array(
'wwww'=>true,
'ffff'=>true,
'gggg'=>true,
'hhhh'=>true
);
if (
$_SESSION['LOGINTYPE'] == 'ADMIN'
|| isset($_SESSION['status'])
&& (
$_SESSION['username'] == 'qqqqq'
|| isset($companies[$_SESSION['company']])
)
) {
...
}
Или, может быть, более четко:
$pass = false;
if ($_SESSION['LOGINTYPE'] == 'ADMIN') {
$pass = true;
} else if (isset($_SESSION['status'])) {
if ($_SESSION['username'] == 'qqqq') $pass = true;
if (isset($companies, $_SESSION['company']) $pass = true;
}
if ($pass) {
...
}