Вот вам 2 варианта.
Первый
Я не знаю, что вы используете за фреймворк или что то подобное, возможно если бы знал, то возможно предложил бы адекватное решение, но пока что только так.
<?php
function c($u) {
$t = array('', 'active');
return $t[intval($u == $_SERVER['REQUEST_URI'])];
}
?>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="<?=c('/')?>"><a href="/">Главная</a></li>
<li class="<?=c('/?login')?>"><a href="/?login">Войти</a></li>
<?if ($this->user) {?>
<li class="<?=c('/?add')?>"><a href="/?add">Добавить пост</a></li>
<li class="<?=c('/?map')?>"><a href="/?map">Карта сети</a></li>
<? } ?>
</ul>
</div>
Второй
Во-первых, у вас ошибка в коде, ниже я ее исправил + убрал непонятные повторяющиеся if, зачем они?
Во-вторых, если вы решили пользоваться своим вариантом, то имейте ввиду, что вам нужно определять и другие переменные, потому что вы определяете только одну, а надо все используемые, в вашем случае легче всего это сделать выведя их над меню.
<?php
$home = '';
$login = '';
$add_post = '';
$eth_map = '';
?>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="<?=$home;?>"><a href="/">Главная</a></li>
<li class="<?=$login;?>"><a href="/?login">Войти</a></li>
<?if ($this->user): ?>
<li class="<?=$add_post;?>"><a href="/?add">Добавить пост</a></li>
<li class="<?=$eth_map;?>"><a href="/?map">Карта сети</a></li>
<? endif; ?>
</ul>
</div>