Приветствую. Есть у меня вот такой кусок кода:
PHP:
скопировать код в буфер обмена
if($_SESSION["is_auth"]){ $query = "SELECT * FROM `menu_cont` where parent=? and authority=('' or ?)"; $res = DBAcc ::getdata($query, array($args[1 ], $_SESSION["kind"]), "ALL"); }else{ $query = "SELECT * FROM `menu_cont` where parent=? and authority=''"; $res = DBAcc ::getdata($query, array($args[1]), "ALL"); }
Задача его следующая: если пользователь не авторизован, нужно отобразить ему только публичные пункты меню(те, у которых в графе authority - пусто). Если пользователь авторизован, то ему показываются публичные пункты и пункты, для которых kind пользователя(его "группа") совпадает с authority страницы. Вопрос в следующем: почему если я убираю условие и сокращаю код до
PHP:
скопировать код в буфер обмена
$query = "SELECT * FROM `menu_cont` where parent=? and authority=('' or ?)"; $res = DBAcc ::getdata($query, array($args[1 ], $_SESSION["kind"]), "ALL");
, который впринципе также должен работать, то у неавторизованных пользователей какие-либо пункты меню перестают отображаться вообще. По идее, если для сессии не задано значение is_auth, то оно же возвращает null? Да и в любом случае, что бы ни возвращало, or в условии должно обеспечить выборку страниц с пустым authority? Непоняяяятно...(Отредактировано автором: 07 Октября, 2016 - 13:14:56)
|