В БД сделал уровень аккаунта [lvl] Сделал проверку не работает: PHP: <?php if($_SESSION['lvl'] == 0) { ?> <a href="/">test = 0</a> <?php }else if( $_SESSION['lvl'] == 1 ) { ?> <a href="/">test = 1</a> <?php }else if( $_SESSION['lvl'] == 2 ) { ?> <a href="/">test = 2</a> <?php } ?> Выводит только test = 0
PHP: switch ($_SESSION['lvl']) { case 0: echo '<a href="/">test = 0</a>'; break; case 1: echo '<a href="/">test = 1</a>'; break; case 2: echo '<a href="/">test = 2</a>'; break; } https://secure.php.net/manual/ru/control-structures.switch.php#example-112 --- Добавлено --- сцука secure порезали!!!
Код немного изменил, теперь нужно сделать проверку из массива PHP: $_SESSION['user'] = array( 'id' => $id, 'group_id' => $lvl ); Подскажи пожалуйста
['user']['group_id'] https://secure.php.net/manual/ru/language.types.array.php#language.types.array.syntax.accessing
Да до этого я дошел, начал дампать код, в итоге получил: Код (Text): <?php var_dump("SELECT `id` FROM `users` WHERE `login` = '".$_SESSION['logged_user']->login."'"); var_dump("SELECT `group_id` FROM `users` WHERE `id` = '".$id."'");?><hr><?php var_dump($_SESSION['user'] = array( 'id' => $id, 'group_id' => $lvl )); ?> Код (Text): string(55) "SELECT `id` FROM `users` WHERE `login` = root" string(47) "SELECT `group_id` FROM `users` WHERE `id` = '1'" array(2) { ["id"]=> int(1) ["group_id"]=> int(0) } На самом деле логин - root, но id = 6 , а он пишет 1
Этот запрос, например в PHPMyAdmin работает нормально? Лучше для значения login обернуть в кавычки, чтобы получилось 'root не вижу что идёт в базу, но тут видно что будет выбран id с 1. лучше делать dump примерно так так, а то не видно те же запросы идут в базу которые дампишь или другие: PHP: $sql1 = "SELECT `id` FROM `users` WHERE `login` = '".$_SESSION['logged_user']->login."'"; $sql2 = "SELECT `group_id` FROM `users` WHERE `id` = '".$id."'"; var_dump($sql1); var_dump($sql2); // ... $r1 = $mysqli->query($sql1); // ... $r2 = $mysqli->query($sql2);
SQL запросы проходят отлично, там всё супер. Что то в коде не так, дампаю ошибку даёт Fatal error: Call to a member function query() on a non-object in P:\home\jpuer.loc\www\index.php on line 53
@Abdrey так это пример, копировать бездумно такое нельзя https://secure.php.net/manual/ru/mysqli.query.php
Нашел проблему, осталось только решить! Вообщем, в строке PHP: $id = R::getRow("SELECT `id` FROM `users` WHERE `login` = '".$_SESSION['logged_user']->login."'"); Всё верно он находит ID, но в массиве. При следующем запросе PHP: $lvl = R::getRow("SELECT `group_id` FROM `users` WHERE `id` = '".$id."'"); Вместо $id он просто пихает Array а не ID. Надо как то преобразовать! --- Добавлено --- Есть же PHP: $id = R::getRow("SELECT `id` FROM `users` WHERE `login` = '".$_SESSION['logged_user']->login."'"); $lvl = R::getRow("SELECT `group_id` FROM `users` WHERE `id` = '".$id['id']."'"); Работает, но сравнение - нет --- Добавлено --- Супер! Всё сделал, кому интересно как в личку!
PHP: <?php $id = R::getRow("SELECT `id` FROM `users` WHERE `login` = '".$_SESSION['logged_user']->login."'"); $lvl = R::getRow("SELECT `group_id` FROM `users` WHERE `id` = '".$id['id']."'"); $_SESSION['user'] = array( 'id' => $id, 'group_id' => $lvl ); ?> И сама проверка PHP: <?php if($lvl['group_id'] == 0) {?> <p>У вас нет привелегий!</p> <?php } else if($lvl['group_id'] == 1) {?> <p>Вы модератор!</p> <?php } else if($lvl['group_id'] == 2) {?> <p>Вы Администратор!</p> <?php } ?>